| 
				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.bak17jan25/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 PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
class Masterstokopname 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', array('l1' => 'Master', 'l2' => 'Stock Opname'));
        parent::setURLActionTable($this->class);
        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();
    }
    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 {
            return redirect()->route('override404');
        }
    }
    public function trash()
    {
        parent::filterStoreLoad();
        parent::trashView();
    }  
    public function download(){
         $spreadsheet = new Spreadsheet();
            $spreadsheet->getDefaultStyle()->getFont()->setName('Arial Narrow');
            $spreadsheet->getDefaultStyle()->getFont()->setSize(10);
            $sheet = $spreadsheet->getActiveSheet();
            $sheet->setTitle('Master Barang');
            $sheet->setCellValue('A1', 'ID');
            $sheet->setCellValue('B1', 'Kategori Barang');
            $sheet->setCellValue('C1', 'Nama Barang');
            $sheet->setCellValue('D1', 'Stok');
            $row = 2;
            $no = 1;
            $qty = 0;
            $total = 0;
            $dtl = new \App\Models\MasterBarang();
            $data = $dtl->where('deleted_at', null)->orderBy('mb_name', 'ASC')->findAll();
            foreach ($data as $d) {
                $cat = new \App\Models\MasterKategori();
                $r = $cat->find($d->mk_id);
                $catg = '';
                if(isset($r->mk_name)){
                  $catg = $r->mk_name;
                }
                $sheet->setCellValue('A' . $row, $d->mb_id);
                $sheet->setCellValue('B' . $row, $catg);
                $sheet->setCellValue('C' . $row, $d->mb_name);
                $sheet->setCellValue('D' . $row, $d->mb_stok);
                $no++;
                $this->setBorderAutoFit($sheet, 1, $row, 0, 'A', 'D');
                $row++;
            }
            $filename = 'Master_Barang_' .date('dmyhis');
            $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="' . $filename . '.xls"');
            header('Cache-Control: max-age=0');
//            ob_end_clean();
            $writer->save('php://output');
    }    
    public function setBorderAutoFit($sheet, $start, $row, $minus, $l_start, $l_end, $ls_start = '', $ls_end = '', $repeat = 0)
    {
        $styleArray = array(
            'borders' => [
                'top' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
                'left' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
                'right' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
                'bottom' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
            ],
        );
        $temp = $l_start;
        foreach (range($l_start, $l_end) as $letter) {
            for ($m = $start; $m <= $row - $minus; $m++) {
                $sheet->getStyle($letter . $m)->applyFromArray($styleArray);
            }
        }
        $l_start = $temp;
        foreach (range($l_start, $l_end) as $columnID) {
            $sheet->getColumnDimension($columnID)
                ->setAutoSize(true);
        }
        unset($styleArray);
    }
}