<?php
class Menu extends CI_Controller{
	function __construct(){
		parent::__construct();
		if($this->session->userdata('masuk') !=TRUE){
            $url=base_url('administrator');
            redirect($url);
        };
		$this->load->model('m_menu');
		$this->load->model('m_kategori');
		$this->load->library('upload');
		$this->load->model('m_pengguna');
	}


	public function index() {
        $kode = $this->session->userdata('idadmin');
        $this->load->model('m_pengguna');
        $this->load->model('m_menu');

        $x['user'] = $this->m_pengguna->get_pengguna_login($kode);
        $x['tbl_kategori'] = $this->db->get('tbl_kategori')->result_array();
        $x['kat']          = $this->db->get('jenismenu');
        $x['toko']         = $this->db->where('stat', '2')->get('tabel_toko')->result_array(); 
        $x['kode_harga']   = $this->db->get('kodeharga')->result_array(); 
        $x['data'] = $this->m_menu->get_all_menu_grouped();
        
        $this->load->view('admin/v_menu', $x);
    }

    public function simpan_menu() {
        $this->load->library('upload');
        $kode_baru = $this->m_menu->get_new_kode_menu();

        $config['upload_path']   = './assets/menubaru/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp';
        $config['max_size']      = '2048';
        $config['file_name']     = $kode_baru; 
        $config['overwrite']     = TRUE;

        $this->upload->initialize($config);

        $nama           = $this->input->post('nama', TRUE);
        $deskripsi      = $this->input->post('deskripsi', TRUE);
        $kategori_utama = $this->input->post('kategori_utama', TRUE);
        $sub_kategori   = $this->input->post('sub_kategori', TRUE);
        $status         = $this->input->post('status') ? 1 : 2;
        
        $q_kat = $this->db->get_where('tbl_kategori', ['kategori_id' => $kategori_utama])->row_array();
        $nama_kat_utama = isset($q_kat['kategori_nama']) ? $q_kat['kategori_nama'] : '';

        $gambar = 'no_image.png';
        if (!empty($_FILES['filefoto']['name'])) {
            if ($this->upload->do_upload('filefoto')) {
                $gbr    = $this->upload->data();
                $gambar = $gbr['file_name'];
            } else {
                $this->session->set_flashdata('msg', '<div class="alert alert-danger">Upload Gagal: '.$this->upload->display_errors().'</div>');
                redirect('admin/menu');
                return;
            }
        }

        $harga_cabang_input = $this->input->post('harga_cabang');

        $simpan = $this->m_menu->simpan_menu_lengkap(
            $kode_baru, $nama, $kategori_utama, $nama_kat_utama, 
            $sub_kategori, $deskripsi, $gambar, $status, 
            $harga_cabang_input 
        );

        if ($simpan === true) {
            $this->session->set_flashdata('msg', '<div class="alert alert-success">Menu <b>'.$nama.'</b> berhasil ditambahkan.</div>');
        } else {
            $pesan_err = is_array($simpan) ? $simpan['message'] : 'Gagal menyimpan data.';
            $this->session->set_flashdata('msg', '<div class="alert alert-danger">Gagal Simpan: '.$pesan_err.'</div>');
        }

        redirect('admin/menu');
    }

   public function update_menu() {
        $this->load->library('upload');
        $nmfile = "menu_" . time();
        $config['upload_path']   = './assets/menubaru/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp';
        $config['max_size']      = '2048';
        $config['file_name']     = $nmfile;

        $this->upload->initialize($config);

        $kode           = $this->input->post('kode', TRUE); 
        $nama           = $this->input->post('nama', TRUE);
        $deskripsi      = $this->input->post('deskripsi', TRUE); 
        $kategori_utama = $this->input->post('kategori_utama', TRUE); 
        $sub_kategori   = $this->input->post('sub_kategori', TRUE);   
        
        $status         = $this->input->post('status') ? 1 : 2;

        $q_kat = $this->db->get_where('tbl_kategori', ['kategori_id' => $kategori_utama])->row_array();
        $nama_kat_utama = isset($q_kat['kategori_nama']) ? $q_kat['kategori_nama'] : '';

        $gambar = null;
        if (!empty($_FILES['filefoto']['name'])) {
            if ($this->upload->do_upload('filefoto')) {
                $gbr    = $this->upload->data();
                $gambar = $gbr['file_name'];
            } else {
                $this->session->set_flashdata('msg', '<div class="alert alert-danger">Upload Gagal: '.$this->upload->display_errors().'</div>');
                redirect('admin/menu');
                return;
            }
        }

        $this->m_menu->update_menu_master(
            $kode, $nama, $deskripsi, $kategori_utama, $nama_kat_utama, $sub_kategori, $status, $gambar
        );

        $harga_cabang = $this->input->post('harga_cabang');

        if (!empty($harga_cabang)) {
            foreach ($harga_cabang as $kd_toko => $jenis_harga_list) {
                foreach ($jenis_harga_list as $kd_harga => $item) {
                    
                    $nominal_raw = isset($item['nominal']) ? $item['nominal'] : '';
                    
                    $tgl_awal    = !empty($item['tgl_awal']) ? $item['tgl_awal'] : date('Y-m-d');
                    $tgl_akhir   = !empty($item['tgl_akhir']) ? $item['tgl_akhir'] : '2030-12-31';
                    
                    $stat_hrg    = isset($item['stat']) ? '1' : '0'; 
                    
                    // Update atau Insert ke tabel hargajual
                    $this->m_menu->update_harga_spesifik($kode, $kd_toko, $kd_harga, $nominal_raw, $tgl_awal, $tgl_akhir, $stat_hrg);
                }
            }
        }
        $this->session->set_flashdata('msg', '<div class="alert alert-success">Data Menu <b>'.$nama.'</b> berhasil diperbarui.</div>');
        redirect('admin/menu');
    }

	public function hapus_menu() {
        $kode = $this->input->post('kode', TRUE);
        $data_menu = $this->db->get_where('tabel_menu', ['kode_menu' => $kode])->row_array();
        
        if ($data_menu && $data_menu['foto'] != 'no_image.png' && $data_menu['foto'] != '') {
            $path_gambar = './assets/menubaru/' . $data_menu['foto'];
            if (file_exists($path_gambar)) {
                unlink($path_gambar); 
            }
        }
       
        $hapus = $this->m_menu->hapus_menu_semua($kode);

        if ($hapus) {
            $this->session->set_flashdata('msg', '<div class="alert alert-success">Data Menu berhasil dihapus dari seluruh tabel.</div>');
        } else {
            $this->session->set_flashdata('msg', '<div class="alert alert-danger">Gagal menghapus data menu. Database sedang sibuk.</div>');
        }

        redirect('admin/menu');
    }

}