Commit d0aa8a63 authored by Deddy Vita Kurniawan's avatar Deddy Vita Kurniawan

* create modul Import_surat

parent d741e1fe
This diff is collapsed.
<?php
class Import_surat_model extends Base_Model {
var $path;
var $list_satker = [];
var $list_pejabat = [];
var $list_periksa = [];
var $data_surat_penugasan;
var $data_surat_penugasan_tim = [];
var $data_rinci_tanggal_aktif = [];
var $id_surat;
function __construct()
{
parent::__construct();
$this->path = './uploads/';
}
function get_all_satker()
{
$this->db->select('r.ID_SATKER, r.NAMA_SATKER')
->from('ref_satker r');
$result = $this->db->get()->result_array();
for($i=0; $i<count($result); $i++){
$nama_satker = preg_replace('~[\\\\/:*?"<>|+-., ]~', '', $result[$i]['NAMA_SATKER']);
$this->list_satker[$result[$i]['ID_SATKER']] = strtoupper($nama_satker);
}
return $this->list_satker;
}
function get_all_pejabat()
{
$this->db->select('r.ID_PEJABAT_SPI, r.NAMA')
->from('ref_pejabat_spi r');
$result = $this->db->get()->result_array();
for($i=0; $i<count($result); $i++){
$nama_pejabat = preg_replace('~[\\\\/:*?"<>|+-,. ]~', '', $result[$i]['NAMA']);
$this->list_pejabat[$result[$i]['ID_PEJABAT_SPI']] = strtoupper($nama_pejabat);
}
return $this->list_pejabat;
}
function get_all_periksa()
{
$this->db->select('r.ID_JNS, r.KODE')
->from('ref_jns_pemeriksaan r');
$result = $this->db->get()->result_array();
for($i=0; $i<count($result); $i++){
$kode = preg_replace('~[\\\\/:*?"<>|+-., ]~', '', $result[$i]['KODE']);
$this->list_periksa[$result[$i]['ID_JNS']] = strtoupper($kode);
}
return $this->list_periksa;
}
function save_data_surat()
{
$this->db->trans_begin();
try {
$this->id_surat = $this->insert_surat();
$this->save_detail_surat();
}
catch(Exception $e){
//TODO : log error to file
}
if ($this->db->trans_status() === FALSE)
{
$this->last_error_id = $this->db->_error_number();
$this->last_error_message = $this->db->_error_message();
$this->db->trans_rollback();
return FALSE;
}
$this->db->trans_commit();
return TRUE;
}
function insert_surat()
{
$this->db->insert('surat_penugasan', $this->data_surat_penugasan);
$this->check_trans_status('insert surat_penugasan failed');
$this->db->select_max('ID_SURAT')->from('surat_penugasan');
$res = $this->db->get()->row_array();
$id_surat = $res['ID_SURAT']?$res['ID_SURAT']:1;
return $id_surat;
}
function save_detail_surat(){
$this->insert_audit();
$this->insert_tanggal_aktif();
}
function insert_audit()
{
for ($i = 0; $i < count($this->data_surat_penugasan_tim); $i++) {
$this->data_surat_penugasan_tim[$i]['ID_SURAT'] = $this->id_surat;
$this->db->insert('surat_penugasan_tim', $this->data_surat_penugasan_tim[$i]);
$this->check_trans_status('insert surat_penugasan_tim failed');
}
}
function insert_tanggal_aktif()
{
for ($i = 0; $i < count($this->data_rinci_tanggal_aktif); $i++) {
$this->data_rinci_tanggal_aktif[$i]['ID_SURAT'] = $this->id_surat;
$this->db->insert('rinci_tanggal_aktif', $this->data_rinci_tanggal_aktif[$i]);
$this->check_trans_status('insert rinci_tanggal_aktif failed');
}
}
}
\ No newline at end of file
<script type="text/javascript" src="<?php echo base_url()?>assets/js/jquery.form.js"></script>
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark"><?php echo $breadcrumbs; ?></h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="<?php echo base_url(); ?>">Home</a></li>
<li class="breadcrumb-item active"><?php echo $breadcrumbs; ?></li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div id="grid_container">
<form id="frm" method="post" action="<?php echo base_url(); ?>import_surat/proses" enctype="multipart/form-data">
<div class="controls-row">
<div class="control-group pull-left" data-bind="validationElement: file_xls">
<label class="control-label" for="file_xls">Upload File Surat Penugasan (xls)</label>
<div class="add-on" id="fileuploader"><i class="icon-folder-open"></i> Upload</div>
</div>
</div>
<br/>
<br/>
<h4 data-bind="visible: showMessage && !processing()">File Excel</h4>
<ul data-bind="foreach: file_xls">
<li>
<a href="#" data-bind="visible: $parent.canSave && !$parent.processing(), click: $parent.removeFileXML" title="Hapus"><i class="icon-trash"></i></a>
<span data-bind="text: realname"> </span>
<img data-bind="visible: loading" title="Data sedang proses import" src="<?php echo base_url()?>assets/img/select2-spinner.gif">
<img data-bind="visible: success" title="Data berhasil diimport" src="<?php echo base_url()?>assets/img/validYes.png">
<img data-bind="visible: failed" title="Data gagal diimport" src="<?php echo base_url()?>assets/img/validNo.png">
</li>
</ul>
<?php
//print_r($datax)
//die(print_r($datax));
//print_r($get_all_satker);
/* $tanggal_mulai = prepare_date('03/01/2024');
$tanggal_selesai = prepare_date('05/01/2024');
$begin = new DateTime($tanggal_mulai);
$end = new DateTime($tanggal_selesai);
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $key => $value){
echo $key+1 . "<br>";
echo $value->format("Y-m-d") . "<br>";
} */
?>
<div class="bottom-bar">
<button type="button" class="btn btn-primary" data-bind="enable: canSave && !processing(), click: function(data, event){save(false, data, event) }, visible: canSave()" />Import Surat Penugasan</button>
</div>
</form>
<div class="control-group well alert-info" style="margin-top: 70px;" data-bind="visible: showMessage">
<h4>Import Surat Penugasan sudah selesai, dengan rincian sebagai berikut:</h4>
<ul>
<li>Data surat berhasil di impor sebanyak <span data-bind="text: surat_success"></span> data</li>
<li>Data surat gagal di impor sebanyak <span data-bind="text: surat_failed"></span> data</li>
</ul>
</div>
</div>
<script>
var fileCounter = 0, fileIndeks = 0;
var surat_success = surat_failed = 0;
$(document).ready(function() {
inisialisasi();
$("#fileuploader").uploadFile({
url:"<?php echo base_url()?>import_surat/do_upload",
fileName:"file",
uploadButtonClass:"btn",
doneButtonClass:"btn",
dragDropStr:"",
multiple:true,
returnType:"json",
//maxFileSize:"8388608",
allowedTypes:"xls,xlsx",
showFileCounter:false,
showDone:false,
showStatusAfterSuccess: false,
abortStr:"Batal",
extErrorStr:"tidak diizinkan. Extensions yang diizinkan: ",
sizeErrorStr:"tidak diizinkan. Max size: ",
onSuccess:function(files,data,xhr) {
if (data.isSuccess) {
fileCounter++;
App.file_xls.push( new file(data.realname, data.name, false, false, false) );
}
else {
show_error(data.message, 'Gagal');
}
}
});
});
function proses_import(file){
var $frm = $('#frm'),
data = JSON.parse(ko.toJSON(App));
data['file_xls'] = file;
// loading: true
App.file_xls.replace( App.file_xls()[fileIndeks],{ realname: App.file_xls()[fileIndeks]['realname'], name: file, loading: true, success: false, failed: false } );
$.ajax({
url: $frm.attr('action'),
type: 'post',
dataType: 'json',
data: data,
success: function(res, xhr){
if (res.isSuccess) {
console.log(res,'res proses_import')
surat_success = surat_success + parseInt(res.surat_success); // surat yang berhasil diimport
surat_failed = surat_failed + parseInt(res.surat_failed); // surat gagal impor
App.surat_success(surat_success);
App.surat_failed(surat_failed);
// success: true
App.file_xls.replace( App.file_xls()[fileIndeks],
{ realname: App.file_xls()[fileIndeks]['realname'], name: file, loading: false, success: true, failed: false }
);
}
else {
// failed: true
App.file_xls.replace( App.file_xls()[fileIndeks],
{
realname: App.file_xls()[fileIndeks]['realname'], name: file, loading: false, success: false, failed: true }
);
}
},
complete: function(){
fileIndeks++;
if (fileIndeks < App.file_xls().length) {
proses_import(App.file_xls()[fileIndeks]['name']);
}
else {
App.showMessage(true);
}
}
});
}
ko.validation.init({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error',
});
var file = function(realname, name, loading, success, failed) {
this.realname = realname;
this.name = name;
this.loading = loading;
this.success = success;
this.failed = failed;
}
var ModelImportXML = function (){
var self = this;
self.modul_display = '<?php echo $modul_display ?>';
self.processing = ko.observable(false);
self.akses_level = ko.observable(<?php echo isset($akses) ? $akses : 0 ?>);
self.file_xls = ko.observableArray([])
.extend({
required: {params: true, message: 'File xml belum diupload'}
});
self.removeFileXML = function() {
self.file_xls.remove(this);
fileCounter--;
}
self.showMessage = ko.observable(false);
self.surat_success = ko.observable(0);
self.surat_failed = ko.observable(0);
self.title = ko.computed(function(){
return self.modul_display;
});
self.canSave = ko.computed(function(){
return self.akses_level() >= 3;
});
self.errors = ko.validation.group(self);
}
var App = new ModelImportXML();
App.init_select = function(element, callback){
var data = {'text': $(element).attr('data-init')};
callback(data);
}
App.formatTahun = function(res){
return '<div>' + res.text + '</div>';
}
App.formValidation = function(){
var errmsg = [];
if (!App.isValid()){
errmsg.push('Ada kolom yang belum diisi dengan benar. Silakan diperbaiki.');
App.errors.showAllMessages();
}
if (errmsg.length > 0) {
message = errmsg.join('</br>');
show_warning(message);
return false;
}
return true;
}
App.save = function(){
if (!App.formValidation()){ return }
App.processing(true);
proses_import(App.file_xls()[fileIndeks]['name']);
}
ko.applyBindings(App);
</script>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment