<?php namespace App\Http\Controllers;

use App\Models\Rekaplkp;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Pagination\LengthAwarePaginator as Paginator;
use Validator, Input, Redirect ; 


class RekaplkpController extends Controller {

	protected $layout = "layouts.main";
	protected $data = array();	
	public $module = 'rekaplkp';
	static $per_page	= '50';

	public function __construct()
	{
		
		parent::__construct();
		$this->model = new Rekaplkp();
		$this->info = $this->model->makeInfo( $this->module);
		$this->access = array();
	
		$this->data = array_merge(array(
			'pageTitle'	=> 	$this->info['title'],
			'pageNote'	=>  $this->info['note'],
			'pageModule'=> 'rekaplkp',
			'return'	=> self::returnUrl()
			
		),$this->data);


		
	}

	public function index( Request $request )
	{
	// Pastikan pengguna sudah login
		if (!\Auth::check()) 
			return redirect('user/login')->with('status', 'error')->with('message', 'You are not login');

		$startDate = $request->input('start_date', '2024-01-01');
		$endDate = $request->input('end_date', date('Y-m-d'));

		$getlevel = DB::table('tb_groups')
		->select('level')
		->where('group_id',\Session::get('gid'))
		->first();

        if($getlevel->level <3 || $getlevel->level == 10)
        {
		// Memanggil stored procedure
		$rekapData = DB::select('CALL GetRekapHaLKPKSO(?, ?)', [$startDate, $endDate]);
		} else {
				$rekapData = DB::select('CALL GetRekapHaLKPKebun(?, ?,?)', [$startDate, $endDate,\Session::get('fid')]);
		}


		// Konversi hasil query ke collection
		$this->data['rekapData'] = collect($rekapData);

		

		// Render ke tampilan
		return view($this->module . '.index', $this->data);
	}	
	function show( Request $request , $id ) 
	{
		/* Handle import , export and view */
		$task =$id ;
		switch( $task)
		{

			case 'export':
				return $this->getExport( $request );
				break;
	
		}
	}

	public function store( Request $request){

		$task = $request->input('action_task');
		switch ($task)
		{
			default:
				return $this->postData( $request);
				break;
			
			case 'checkrekaplkp':
				return $this->checkrekaplkp( $request );
				break;
			case 'approverekaplkp':
				return $this->approverekaplkp( $request );
				break;
			
		}
	}

	function checkrekaplkp( Request $request)
	{
		$getlevel = DB::table('tb_groups')
		->select('level')
		->where('group_id',\Session::get('gid'))
		->first();
	
		if($getlevel->level <3)
		{
			$rekap = DB::table('tx_approve_rekap_lkp')
				->where('data_id', $request->input('id'))
				->first();
		} else {
			if(\Session::get('gid') == 6)
			{
				$rekap = DB::table('tx_approve_rekap_lkp')
					->where('data_id', $request->input('id'))
					->where('entry_by', \Session::get('uid'))
					->first();
			} else {
				$rekap = DB::table('tx_approve_rekap_lkp')
					->where('data_id', $request->input('id'))
					->first();
			}
		}
		if($rekap)
		{
			$rekapcount = DB::table('tx_approve_rekap_lkp')
				->where('data_id', $request->input('id'))
				->count();
			return response()->json(array('status' => 'success', 'data' => $rekap, 'count' => $rekapcount));
		}
		else
		{
			return response()->json(array('status' => 'error', 'message' => 'Data not found'));
		}
	}

	function approverekaplkp( Request $request)
	{
		$rekap = DB::table('tx_approve_rekap_lkp')
			->where('data_id', $request->input('id'))
			->where('entry_by', \Session::get('uid'))
			->first();
		
		if($rekap)
		{
			return response()->json(array('status' => 'error', 'message' => 'Data already approved'));
		}
		else
		{
			DB::table('tx_approve_rekap_lkp')->insert([
				'data_id' => $request->input('id'),
				'entry_by' => \Session::get('uid'),
				'createdOn' => date("Y-m-d H:i:s")
			]);
			return response()->json(array('status' => 'success', 'message' => 'Data approved'));
		}
		
	}
}