| 
				Server : Apache System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : matalashes ( 1004) PHP Version : 8.1.29 Disable Function : NONE Directory : /home/matalashes/.trash/app.bak.4/Controllers/Master/  | 
Upload File :  | 
<?php
namespace App\Controllers\Master;
use \App\Controllers\Ps\PS_Controller;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Models\UploadModel;
use \PhpOffice\PhpSpreadsheet\Spreadsheet;
use \PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class Masterstokopnameupload extends PS_Controller
{
    private $id_column_name = 'mb_id';
    public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
    {
        parent::initController($request, $response, $logger); // TODO: Change the autogenerated stub
        parent::setPageTitleBreadcrumb(true, 'Stock Opname Upload', array('l1' => 'Master', 'l2' => 'Stock Opname Upload'));    
        parent::setURLActionTable($this->class, array(
            'uploaddata' => site_url('master/'.$this->class . '/action/uploaddata')
        ));
        parent::setContentView($this->class);
        parent::setBaseContAndModel($this->class, 'MasterBarang');
        $this->validation_input = $this->validation->setRules([
            "mb_name" => [
                'label' => 'Nama Barang',
                'rules' => 'required',
            ]
        ]);
    }
    public function index()
    {
        parent::filterStoreLoad();
        parent::indexLoad();
        $this->view_data['button_upload'] = 'Upload Excel Program';
    }
    public function action($state = '', $id = '')
    {
        $id = $this->myLib->reveal_id($id);
        if ($id == 'override404') {
            return redirect()->route('override404');
        }
        $category = new  \App\Models\MasterKategori();
        $this->view_data['_category'] = $category->where('deleted_at', null)->findAll();
        if ($state == 'add') {
            parent::stateAdd();
        } else if ($state == 'edit') {
            parent::stateEdit($id);
        } else if ($state == 'delete') {
            parent::stateDelete($id);
        } else if ($state == 'restore') {
            parent::stateRestore($this->id_column_name, $id);
        } else if ($state == 'deletepermanent') {
            parent::stateDeletePermanent($this->id_column_name, $id);
        } else if ($state == 'view') {
            parent::stateView($id);
        } else if ($state == 'uploaddata') {
            $temp = '';
            $spreadsheet = '';
            $this->view_data['state'] = 'uploaddata';
            $this->view_data['button'] = 'Upload';
            $this->view_data['button_select'] = 'Validasi Data';
            $this->view_data['button_import'] = 'Import Data';
            $this->view_data['error_validation'] = '';
            $this->view_data['import_button'] = false;
            if (isset($_POST['uploaddata'])) {
                $check = $this->validate([
                    'userfile' => [
                        'uploaded[userfile]',
                        'mime_in[userfile,application/msexcel,application/vnd.ms-excel,application/xls,application/x-msexcel,application/x-xls,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]',
                        'max_size[userfile,5000]',
                    ],
                ]);
         
                if ($check) {
                    $file = $this->request->getFile('userfile');
                    $newName = $file->getRandomName();
                    $file->move(WRITEPATH.'uploads', $newName);
                    
                    $inputFileName = WRITEPATH.'uploads/' . $newName;
                    $inputFileType = 'Xls';
                    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
                    $spreadsheet = $reader->load($inputFileName);
                    $spreadsheet->setActiveSheetIndex(0);
                    $sheet = $spreadsheet->getActiveSheet();
                    $check = '';
                    $start = 2;
                    $brg = new  \App\Models\MasterBarang();
                    $data = $brg->where('deleted_at', null)->findAll();
                    $count = count($data)+2;
                    for ($i = $start; $i < $count; $i++) {
                        $mb_id = $sheet->getCell('A' . $i)->getCalculatedValue();
                        $mb_name = $sheet->getCell('C' . $i)->getCalculatedValue();
                        $mb_stok = $sheet->getCell('D' . $i)->getCalculatedValue();      
                        $barang = new  \App\Models\MasterBarang();
                        $data_detil = $barang->where('mb_id',$mb_id)->where('deleted_at', null)->first();
                        if(isset($data_detil)){
                            //update data
                            $datamodel = array(
                                'mb_stok' => $mb_stok,
                            );
                            $barang->update($data_detil->mb_id, $datamodel);
                        }
                        
                    }
                    $this->view_data['success'] = true;
                    $this->view_data['message'] = 'Data berhasil diimport!';
                }else{
                    $this->view_data['error'] = true;
                    $this->view_data['message'] = 'Terjadi kesalahan dalam mengimport data!';
                }
                $this->render->viewAdmin($this->content_views['table_view'], $this);
            } 
        } else {
            return redirect()->route('override404');
        }
    }
    public function trash()
    {
        parent::filterStoreLoad();
        parent::trashView();
    }  
}