<?php namespace App\Controllers;
/**
 * File			: Menu.php
 * Description  : Controller untuk halaman menu
 * Created By	: Hendi
 * Created Date : 15 Mar 2021
 * Last Update  : 05 Apr 2021
**/
use App\Models\MenuModel;

class Menu extends MyBaseController
{
	public function index()
	{
		# fn isLoggedIn di MyBaseController
		if (!$this->isLoggedIn()) return redirect()->to(base_url('login'));
		# jika sudah menu dinamis diisi dari array hasil query
		$data_sidebar = []; 
		# jika dibutuhkan data untuk konten
		$data_content = [
			'mod' => 'menu',
		];
		$data = [
			'title' => 'Menu',
			'sidebar' => view('contents/sidebar', $data_sidebar),
			'content' => view('contents/menu/menu_list', $data_content),
		];
		return view('templates/index', $data);
	}
	
	public function saveData()
    {
		if (!$this->isLoggedIn()) return redirect()->to(base_url('admin/login'));
        # jika pakai AJAK POST sertakan token csrf baru dalam respon agar tidak error saat submit
		$post = [];
		foreach($_POST as $k => $v) $post[$k] = $this->request->getPost($k);
				
		# roles 'menu' sudah didefinisikan di Config/Validation.php
		if ($this->form_validation->run($post, 'menu') === FALSE) 
		{
			# mengembalikan nilai input yang sudah diinput sebelumnya
            $this->session->setFlashdata('inputs', $post);
            # memberikan pesan error 
			$this->session->setFlashdata('errors', $this->form_validation->getErrors());
           	return redirect()->to(base_url('menu'));
		}
		else
		{
			$sts = $post['sts'];
			$id = $post['menu_id'];
			# tidak disertakan dalam validasi / penyimpanan
			unset($post['sts']);
			unset($post['csrf_token_name']);
			# jika satu baris saja boleh tanpa tanda {}
			$MenuModel = new MenuModel();
			if ($sts == 'add') 
            {
                # cek menu_id, tidak pake is_unique di validation
				# soalnya menu_id bukan int auto increment
				# jadi error tidak bisa simpan saat edit data
				if ($MenuModel->cekMenuID($id) > 0) 
                {
                    $this->session->setFlashdata('errors', ['Menu gagal disimpan. Kode tersebut telah digunakan oleh yang lain.']);
                    return redirect()->to(base_url('menu'));
                }
				
                //$res = $MenuModel->save($post);
                # menggunakan insert
				# karena jika menggunakan save, akan dianggap UPDATE, soalnya user_id nya sudah ada diinput
				# $returnID = false, agar nilai kembalian bukan user_id tapi result boolean
				$res = $MenuModel->insert($post, false); # (data, returnID)
		    }	
            else 
                $res = $MenuModel->update($id, $post);
			
			# memberikan pesan, pake ul jadi pake []
			if ($res) #true
				$this->session->setFlashdata('success', 'Menu berhasil disimpan');
			else
				$this->session->setFlashdata('errors', ['Menu gagal disimpan']);
			
			# jika sts add, tidak ada kembalikan nilai (biarkan kosong)
			# jika sts edit, kembalikan nilai input yang sudah diinput sebelumnya
			if ($sts == 'edit') 
			{
				$post['sts'] = $sts;
				$this->session->setFlashdata('inputs', $post);
			}
			return redirect()->to(base_url('menu'));
		}
	}
	
	public function deleteData()
    {
		if (!$this->isLoggedIn()) return 'Anda belum login';
		$post = [];
		foreach($_POST as $k => $v) $post[$k] = $this->request->getPost($k);
		$MenuModel = new MenuModel();
		# rc = result code, rd = result description
		if ($MenuModel->delete($post['id'])) 
			echo json_encode(['rc' => '1', 'rd' => 'Menu berhasil dihapus.']); 
		else 
			echo json_encode(['rc' => '0', 'rd' => 'Menu gagal dihapus']);
	}
}
