<?php

namespace App\Controllers;

class Prints extends BaseController {

    // Data ZPL untuk mencetak label
    // $startSection = "^XA\n^PW400\n^LL224\n";
    // $nameSection = "^FO10,2\n^A0N,23,23\n^FD MRS. I PUTU AYU PUTRI PERTIWI ^FS\n";
    // $yearSection = "^FO12,25\n^A0N,22,22\n^FD F 24Y ^FS\n";
    // $labelBarcodeSection = "^FO85,50\n^BY2,2.0,45\n^BCN,100,N,N,N\n^FD25082257^FS\n"; 
    // $numberCodeSection = "^FO374,43\n^A0B,25,25\n^FD 25082257 ^FS\n";
    // $sampleSection = "^FO19,45\n^A0B,27,27\n^FD $sample ^FS\n";
    // $parameterSection = "^FO10,165\n^A0N,23,23\n^FD PSA, HDL, LDL, BUN, SGOT ^FS\n";
    // $lisNumSection = "^FO10,195\n^A0N,17,20\n^FD LIS  4112082257 ^FS\n";
    // $hisNumSection = "^FO10,210\n^A0N,20,20\n^FD HIS  01241101855 ^FS\n";
    // $numSampleSection = "^FO240,200\n^A0N,27,27\n^FD $access 115 ^FS\n";
    // $endSection = "^XZ";

    public function sample($access, $sample) {

        $time = microtime(true);
        $logTime = date('d-m-Y_H_i_s', $time) . sprintf('_%03d', ($time - floor($time)) * 1000);
        $filename = "sample_".$logTime;
        
        $role='Analis';
        $rolesType = ['Analis', 'Sampling'];
        $networkPath = "";

        // Ruang Analis Printer POSTEK
        if (!in_array($role, $rolesType)) {

            // Eksekusi Kode Berikut Apabila Role Bukan Analis atau Sampling
            return $this->response->setJSON([
				'message'   => "Akses Tidak Berwenang",
				'error'     => "Hak Akses Anda Tidak Dikenali",
				'status'    => false,
			]);

        } else if (in_array($role, $rolesType)) {

            // Buka Mapping Drive PC Laboratorium
            exec('net use L: \\\\10.148.5.20\\Labelshare /user:Administrator 2>&1', $output, $return_var);
            $pathNetworkFolder = 'L:/Sampling_Labels/';
            $letterPath = 'L:';

            // Printer Posteck
            $sampleLable ="N
OD
q400
Q200,10+0
I8,A,001
D10
A4,3,0,2,1,1,N,\"Mr.I Putu Agus Ariesta Adi Wawan\"
A4,25,0,2,1,1,N,\"M 29Y\"
A4,55,0,2,1,1,N,\"SAMPLE\"
A4,75,0,2,1,1,N,\"Chapter\"
B149,35,0,1,3,8,70,N,\"24020840\"
A199,110,0,2,1,1,N,\"LAB 24020840\"
A4,140,0,2,1,1,N,\"UH : 1B094943\"
A4,160,0,2,1,1,N,\"BV : BV035725\"
A195,156,0,2,1,1,N,\"$filename\"

P1
";

        // Ruang Analis Printer Zebra
        } else if (in_array($role, $rolesType)) {

            // Buka Mapping Drive PC Sampling
            exec('net use S: \\\\10.148.3.169\\Labelshare /user:Administrator 2>&1', $output, $return_var);
            $pathNetworkFolder = 'S:/Sampling_Labels/';
            $letterPath = 'S:';

            // Printer Zebra
            $sampleLable ="N
OD
q400
Q185,10+0
I8,A,001
D10
A4,3,0,2,1,1,N,\"Mr.I Putu Agus Ariesta Adi Wawan\"
A4,25,0,2,1,1,N,\"M 29Y\"
A4,55,0,2,1,1,N,\"SAMPLE\"
A4,75,0,2,1,1,N,\"Chapter\"
B149,35,0,1,3,8,70,N,\"24020840\"
A199,110,0,2,1,1,N,\"LAB 24020840\"
A4,140,0,2,1,1,N,\"UH : 1B094943\"
A4,160,0,2,1,1,N,\"BV : BV035725\"
A195,156,0,2,1,1,N,\"03/12/2024 07:10\"

P1
";
        }

        $fullPath = $pathNetworkFolder . $filename;
		
        // Tulis file ke folder tujuan
        if (!file_put_contents($fullPath, $sampleLable)) {

            exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var);    
            // Eksekusi Kode Berikut Apabila Ada Error
            return $this->response->setJSON([
				'error'   => $output,
				'message' => "Gagal Melakukan Print, Mohon Ulangi Atau Cek Koneksi Printer Anda",
				'status'  => false,
			]);

		} else {

            // Hapus Koneksi
            exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var);
            return $this->response->setJSON(
                [
                    'message' => "Print Berhasil",
                    'status'   => true,
                ]
            );

        }

    }

    public function allSample() {
        
        $data=5;

        $role='Analis';
        $rolesType = ['Analis', 'Sampling'];
        $networkPath = "";

        // Ruang Analis Printer POSTEK
        if (!in_array($role, $rolesType)) {

            // Eksekusi Kode Berikut Apabila Role Bukan Analis atau Sampling
            return $this->response->setJSON([
				'message'   => "Akses Tidak Berwenang",
				'error'     => "Hak Akses Anda Tidak Dikenali",
				'status'    => false,
			]);

        } else if (in_array($role, $rolesType)) {

            // Buka Mapping Drive PC Laboratorium
            exec('net use L: \\\\10.148.5.20\\Labelshare /user:Administrator 2>&1', $output, $return_var);
            $pathNetworkFolder = 'L:/Sampling_Labels/';
            $letterPath = 'L:';

            for ($i=0; $i<$data; $i++) {

                $time = microtime(true);
                $logTime = date('d-m-Y_H_i_s', $time) . sprintf('_%03d', ($time - floor($time)) * 1000);
                $filename = "sample_".$logTime;

                // Printer Posteck
                $sampleLable ="N
OD
q400
Q200,10+0
I8,A,001
D10
A4,3,0,2,1,1,N,\"Mr.I Putu Agus Ariesta Adi Wawan\"
A4,25,0,2,1,1,N,\"M 29Y\"
A4,55,0,2,1,1,N,\"SAMPLE\"
A4,75,0,2,1,1,N,\"Chapter\"
B149,35,0,1,3,8,70,N,\"24020840\"
A199,110,0,2,1,1,N,\"LAB 24020840\"
A4,140,0,2,1,1,N,\"UH : 1B094943\"
A4,160,0,2,1,1,N,\"BV : BV035725\"
A195,156,0,2,1,1,N,\"$filename\"

P1
";
                $fullPath = $pathNetworkFolder . $filename;
                                        
                // Tulis file ke folder tujuan
                if (!file_put_contents($fullPath, $sampleLable)) {

                    exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var);    
                    // Eksekusi Kode Berikut Apabila Ada Error
                    return $this->response->setJSON([
                        'error'   => $output,
                        'message' => "Gagal Melakukan Print, Mohon Ulangi Atau Cek Koneksi Printer Anda",
                        'status'  => false,
                    ]);
                }
            }

        // Ruang Analis Printer Zebra
        } else if (in_array($role, $rolesType)) {

            // Buka Mapping Drive PC Sampling
            exec('net use S: \\\\10.148.3.169\\Labelshare /user:Administrator 2>&1', $output, $return_var);
            $pathNetworkFolder = 'S:/Sampling_Labels/';
            $letterPath = 'S:';

            for ($i=0; $i<$data; $i++) {

                $time = microtime(true);
                $logTime = date('d-m-Y_H_i_s', $time) . sprintf('_%03d', ($time - floor($time)) * 1000);
                $filename = "sample_".$logTime;

                // Printer Zebra
                $sampleLable ="N
OD
q400
Q185,10+0
I8,A,001
D10
A4,3,0,2,1,1,N,\"Mr.I Putu Agus Ariesta Adi Wawan\"
A4,25,0,2,1,1,N,\"M 29Y\"
A4,55,0,2,1,1,N,\"SAMPLE\"
A4,75,0,2,1,1,N,\"Chapter\"
B149,35,0,1,3,8,70,N,\"24020840\"
A199,110,0,2,1,1,N,\"LAB 24020840\"
A4,140,0,2,1,1,N,\"UH : 1B094943\"
A4,160,0,2,1,1,N,\"BV : BV035725\"
A195,156,0,2,1,1,N,\"03/12/2024 07:10\"

P1
";
                $fullPath = $pathNetworkFolder . $filename;
                        
                // Tulis file ke folder tujuan
                if (!file_put_contents($fullPath, $sampleLable)) {

                    exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var);    
                    // Eksekusi Kode Berikut Apabila Ada Error
                    return $this->response->setJSON([
                        'error'   => $output,
                        'message' => "Gagal Melakukan Print, Mohon Ulangi Atau Cek Koneksi Printer Anda",
                        'status'  => false,
                    ]);

                }
            }
        }

        // Hapus Koneksi
        exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var);
        return $this->response->setJSON(
            [
                'message' => "Print Berhasil",
                'status'   => true,
            ]
        );

    }
	
}
