<?php namespace App\Http\Controllers;

use App\Models\Permintaanpupuk;
use App\Library\DataHelpers;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator as Paginator;
use Validator, Input, Redirect ; 

class PermintaanpupukController extends Controller {

	protected $layout = "layouts.main";
	protected $data = array();	
	public $module = 'permintaanpupuk';
	static $per_page	= '10';
	
	public function __construct() 
	{
		parent::__construct();
		$this->model = new Permintaanpupuk();
		
		$this->info = $this->model->makeInfo( $this->module);
		$this->access = $this->model->validAccess($this->info['id']);
	
		$this->data = array(
			'pageTitle'			=> 	$this->info['title'],
			'pageNote'			=>  $this->info['note'],
			'pageModule'		=> 'permintaanpupuk',
			'pageUrl'			=>  url('permintaanpupuk'),
			'return' 			=> 	self::returnUrl()	
		);	
			
				
	} 
	public function index()
	{
		if(!\Auth::check()) 
			return redirect('user/login')->with('status', 'error')->with('message','You are not login');

		$this->access = $this->model->validAccess($this->info['id'] , session('gid'));
		if($this->access['is_view'] ==0) 
			return redirect('dashboard')->with('message',__('core.note_restric'))->with('status','error');
		
		$this->data['setting'] 		= $this->info['setting'];
		$this->data['tableForm'] 	= $this->info['config']['forms'];
		$this->data['tableGrid'] 	= $this->info['config']['grid'];
		usort($this->data['tableGrid'], "SiteHelpers::_sort");
			$cols = '{"data":"rowId"},';
			if($this->data['setting']['view-method'] =='expand'){
				$cols .= '{"className": "details-control","orderable": false,"data": null,"defaultContent": ""},';
			}		
				
			foreach($this->data['tableGrid'] as $field)
			{				
				
				if($field['view'] =='1')
				{
					$cols .= '{"data":"'.$field['field'].'"},';
				}						
			}
			$cols .= '{"data":"action"},';

			$unit = \Session::get('fid');
			$statData = \DB::table('t_permintaan_pupuk_herbisida as a')
				->join('m_status_permintaan_pupuk as b', 'a.status', '=', 'b.id')
				->selectRaw("IF(a.status_terima = 1 and a.status = 3, 'DITERIMA DAERAH', b.status) as status_text, COUNT(*) as jml_permintaan")
				->where('a.area', 'like', trim($unit) . '%')
				->groupBy('a.status', 'a.status_terima')
				->get();
			$this->data['statData'] = $statData;

		$this->data['column'] = $cols ;	
		$this->data['access']		= $this->access;	
		$this->data['setting'] 		= $this->info['setting'];
		return view('permintaanpupuk.index',$this->data);
	}
	function create( Request $request ) 
	{
		$this->hook( $request  );
		if($this->access['is_add'] ==0) 
			return redirect('dashboard')->with('message', __('core.note_restric'))->with('status','error');

		$this->data['row'] = $this->model->getColumnTable( $this->info['table']); 
		
		$this->data['setting'] 		= $this->info['setting'];
		$this->data['tableForm'] 	= $this->info['config']['forms'];
		$this->data['tableGrid'] 	= $this->info['config']['grid'];
		usort($this->data['tableGrid'], "SiteHelpers::_sort");
			$cols = '{"data":"rowId"},';
			if($this->data['setting']['view-method'] =='expand'){
				$cols .= '{"className": "details-control","orderable": false,"data": null,"defaultContent": ""},';
			}		
				
			foreach($this->data['tableGrid'] as $field)
			{				
				
				if($field['view'] =='1')
				{
					$cols .= '{"data":"'.$field['field'].'"},';
				}						
			}
			$cols .= '{"data":"action"},';
		$this->data['column'] = $cols ;	
		$this->data['access']		= $this->access;	
		$this->data['setting'] 		= $this->info['setting'];
		$this->data['id'] = '';
		return view($this->module.'.form',$this->data);
	}
	function edit( Request $request , $id ) 
	{
		$this->hook( $request , $id );
		if(!isset($this->data['row']))
			return redirect($this->module)->with('message','Record Not Found !')->with('status','error');
		if($this->access['is_edit'] ==0 )
			return redirect('dashboard')->with('message',__('core.note_restric'))->with('status','error');
		$this->data['row'] = (array) $this->data['row'];
		
		$this->data['setting'] 		= $this->info['setting'];
		$this->data['id'] = $id;
		return view($this->module.'.form',$this->data);
	}
	function show( Request $request , $id ) 
	{
		/* Handle import , export and view */
		$task =$id ;
		switch( $task)
		{
			case 'search':
				return $this->getSearch();
				break;
			case 'lookup':
				return $this->getLookup($request );
				break;
			case 'comboselect':
				return $this->getComboselect( $request );
				break;
			case 'import':
				return $this->getImport( $request );
			case 'removefiles':
				return $this->getRemovefiles( $request );	
				break;
			case 'export':
				return $this->getExport( $request );
				break;
			case 'cetak_pengantar':
				return $this->cetak_pengantar( $request );
				break;
			case 'verif':
				return $this->verif( $request );
				break;
			case 'verif_gudang':
				return $this->verif_gudang( $request );
				break;
			case 'tolak_gudang':
				return $this->tolak_gudang( $request );
				break;
			case 'get_saldo_pupuk':
				return $this->get_saldo_pupuk( $request );
				break;
			case 'hapus_permintaan_pupuk':
				return $this->hapus_permintaan_pupuk( $request );
				break;					
			case 'filterPermintaan':
				return $this->filterPermintaan( $request );
				break;
			default:
				$this->hook( $request , $id );
				if(!isset($this->data['row']))
					return redirect($this->module)->with('message','Record Not Found !')->with('status','error');

				if($this->access['is_detail'] ==0) 
					return redirect('dashboard')->with('message', __('core.note_restric'))->with('status','error');

				return view($this->module.'.view',$this->data);	
				break;		
		}
	}	
	public function store( Request $request){

		$task = $request->input('action_task');
		switch ($task)
		{
			default:
				return $this->postData( $request);
				break;
			case 'save':
				$rules = $this->validateForm();
				$validator = Validator::make($request->all(), $rules);
				if ($validator->passes()) 
				{
					$data = $this->validatePost( $request );
					// $data['tgl_permintaan'] = date("Y-m-d H:i:s");
					$data['status'] = 1;
					$data['user_peminta'] = session('uid');
					$data['unit'] = substr(\Session::get('fid'), 0, 6);

					$jml = $data['jumlah'];
					$saldo_pupuk_text = $request->input('saldo_pupuk_text');
					if($jml > $saldo_pupuk_text){
						return response()->json(array('status'=>'error','message'=> 'Saldo tidak mencukupi'));	
					}

 					$id = $this->model->insertRow($data , $request->input( $this->info['key']));
					
					/* Insert logs */
					$this->model->logs($request , $id);
					return response()->json(array('status'=>'success','message'=> __('core.note_success')));	
					
				} 
				else {
					$message = $this->validateListError(  $validator->getMessageBag()->toArray() );
					return response()->json(array(
						'message'	=> $message,
						'status'	=> 'error'
					));	
				}
				break;
			case 'delete':
				return $result = $this->destroy( $request );
				break;

			case 'import':
				return $this->PostImport( $request );
				break;

			case 'copy':
				$result = $this->copy( $request );
				return response()->json($result);
				break;		

		}
	}
	public function postData( $request)
	{ 
		error_reporting(0);
		
		$this->access = $this->model->validAccess($this->info['id'] , session('gid'));

		$tables 	= $this->info['config']['grid'];
		$cols = array();
		foreach($tables as $field)
		{				
			//$cols[$this->info['key']]	= array('db'=> $field['alias'] ,$this->info['key'] );
			if($field['view'] =='1')
			{
				$cols[] = array('db'=> $field['alias'],'dt'=> $field['field'] );
			}					
		}
		$conf = DataHelpers::simple($request->all(),$cols);
		$filter =  '';
		if(!is_null($request->input('search')))
		{
			$filter .= $this->liveSearch( $request);
		}

		if(!empty($request->input("kodepermintaan"))){
			$filter .= " and kode_permintaan = '".$request->input("kodepermintaan")."'";
		}

		if(\Session::get('gid') == 12){
			$filter .= " and area = '".\Session::get('fid')."'";
		}

		if(\Session::get('gid') < 3 ){
		}else{
			$filter .= " and unit ='".substr(\Session::get('fid'), 0, 6)."'";
		}	
		
		$conf['order']['sort'] = ' status, id';
		$conf['order']['by'] = ' desc';
		$params = array(
			'page'		=> $conf['page'] ,
			'limit'		=> 100 ,
			// 'limit'		=> $conf['limit'] ,
			'sort'		=> ($conf['order']['sort'] !='' ? $conf['order']['sort'] : $this->info['setting']['orderby']) ,
			'order'		=> ($conf['order']['by'] !='' ? $conf['order']['by'] : $this->info['setting']['ordertype']),
			'params'	=> $filter,
			'global'	=> (isset($this->access['is_global']) ? $this->access['is_global'] : 0 )
		);


		$results = $this->model->getRows($params);
		
		$array = array();
		foreach($results['rows'] as $key => $row)
		{
			$values = array();
			$values['rowId'] = $row->{$this->info['key']};
			foreach($tables as $field)
			{			
				
				if($field['view'] =='1')
				{
					if ($field['field'] == "kode_permintaan") {
            			if ($results['rows'][$key-1]->{$field['field']} == $row->{$field['field']}) {            				
            				$values[$field['field']] = "<i class='fa fa-caret-down'></i>";
            			}else{
            				// if ($groupid == 44) {
								$values[$field['field']] = "<span class='label label-warning'>".$row->{$field['field']}."</span>&nbsp&nbsp";
									  
								if ($row->status == 3) {          					
            						$values[$field['field']] .= "<button onclick='SximoModal(`".url('detailpermintaanpupuk/'.$row->kode_permintaan.'/edit')."`,`Cetak Surat Jalan`,`800`)' class='btn btn-success btn-xs'><i class='fa fa-print'></i></button>";
								}
							// }else{
            				// 	$values[$field['field']] = "<span class='label label-warning'>".$row->{$field['field']}."</span>";
            				// }
            			}
            		}else{
            			if ($field['field'] == "status") {
            				if ($row->{$field['field']} == 1) {
            					$values[$field['field']] = '<span class="label label-info">'.\SiteHelpers::formatRows($row->{$field['field']}, $field , $row ).'</span>';
            				}else if ($row->{$field['field']} == 2) {
            					$values[$field['field']] = '<span class="label label-warning">'.\SiteHelpers::formatRows($row->{$field['field']} , $field , $row ).'</span>';
            				}else if ($row->{$field['field']} == 3) {
            					if ($row->status_terima == 1) {
            							$values[$field['field']] = '<span class="label label-primary">DITERIMA DAERAH</span>';
            					}else if($row->status_satpam != null && $rowstatus_terima == null){
            							$values[$field['field']] = '<span class="label label-info">VALIDASI SATPAM</span>';
            					}else{
            							$values[$field['field']] = '<span class="label label-success">'.\SiteHelpers::formatRows($row->{$field['field']} , $field , $row ).'</span>';
            					}
            				}else {
            					$values[$field['field']] = '<span class="label label-danger">'.\SiteHelpers::formatRows($row->{$field['field']} , $field , $row ).'</span>';
            				}
            			}else{
							$values[$field['field']] = \SiteHelpers::formatRows($row->{$field['field']} , $field , $row );
            			}
            		}
					// $values[$field['field']] = \SiteHelpers::formatRows($row->{$field['field']}, $field , $row);
				}	
			}
			if ($row->status == 1) {
				if(\Session::get('gid') == 12){
					$values['action'] = '<a href="#" onclick="verif('.$row->id.')" class=" btn btn-sm btn-success tips "  title="view"><i class="fa  fa-check"></i>  </a> &nbsp;&nbsp;';
					$values['action'] .= '<a href="#" onclick="hapus_permintaan_pupuk('.$row->id.')" class="btn btn-sm btn-danger tips text-danger" title="hapus"><i class="fa fa-trash"></i></a> &nbsp;&nbsp;';
				}else{
					$values['action'] .= '';
				}
			}

			else if ($row->status == 2) {
				if(\Session::get('gid') == 11){
						$values['action']  = '<a href="#" onclick="ajax_verif('.$row->id.')" class=" btn btn-sm btn-success tips "  title="setujui"><i class="fa  fa-check"></i>  </a> &nbsp;&nbsp;
										<a href="#" onclick="ajax_tolak('.$row->id.')" class="btn btn-sm btn-danger tips "  title="tolak"><i class="fas fa-times"></i>  </a> &nbsp;&nbsp;';
				}else{
					$values['action']  = '';
				}
			
			}else{
				$values['action'] = "";
			}
			// $values['action'] =  \SiteHelpers::buttonAction($this->module,$this->access ,$row->{$this->info['key']} ,$this->info['setting']) ;
			$array[] = $values; 	
		}
		
		$data = array(
			'draw'			=> (!is_null($request->input('draw')) ? intval($request->input('draw') ) : 0), 
			'recordsTotal'	=> $results['total'] ,
			'recordsFiltered'	=> $results['total'],
			'data'				=> $array

		);
		return response()->json($data);
	}

	public function destroy( Request $request)
	{

		if(!\Auth::check()) 
			return response()->json(array(
				'status'=>'error',
				'message'=> 'You are not login'
			));

		$this->access = $this->model->validAccess($this->info['id'] , session('gid'));
		if($this->access['is_remove'] ==0) 
			return response()->json(array('status'=>'error','message'=> __('core.note_restric')));	


		// delete multipe rows 
		if(count($request->input('ids')) >=1)
		{
			$this->model->destroy($request->input('ids'));
			
			return response()->json(array(
				'status'=>'success',
				'message'=> __('core.note_success_delete')
			));
		} else {
			return response()->json(array(
				'status'=>'error',
				'message'=> __('core.note_error')
			));

		} 		

	}

	function verif($request)
	{
		\DB::table('t_permintaan_pupuk_herbisida')->where('id',$request->input('id'))->update(array('status'=>2)); 
		return json_encode(array('status'=>'success','message'=> 'Data berhasil diverifikasi'));
	}

	function verif_gudang($request)
	{
		\DB::table('t_permintaan_pupuk_herbisida')->where('id',$request->input('id'))->update(array('status'=>3));  
		return json_encode(array('status'=>'success','message'=> 'Data berhasil diverifikasi'));
	}

	function tolak_gudang($request)
	{
		\DB::table('t_permintaan_pupuk_herbisida')->where('id',$request->input('id'))->update(array('status'=>4));  
		return json_encode(array('status'=>'success','message'=> 'Data berhasil ditolak'));

	}

	function hapus_permintaan_pupuk($request)
	{
		$id = $request->input('id');
		if (empty($id)) {
			return response()->json([
				'status' => 'error',
				'message' => 'ID tidak ditemukan'
			]);
		}

		$deleted = \DB::table('t_permintaan_pupuk_herbisida')->where('id', $id)->delete();

		if ($deleted) {
			return response()->json([
				'status' => 'success',
				'message' => 'Data berhasil dihapus'
			]);
		} else {
			return response()->json([
				'status' => 'error',
				'message' => 'Gagal menghapus data'
			]);
		}
	}

	function get_saldo_pupuk($request)
	{
		// config(['app.debug' => true]);
		$id = $request->input("id");
		if (empty($id)) {
			$id = 0;
		}
		$unit = substr(\Session::get('fid'), 0, 6);
		$data = $this->model->saldo_pupuk($id, $unit);
		echo json_encode($data);
	}

	function cetak_pengantar($request)
	{
		$this->data['data'] = $this->model->cetak_pengantar($request->input('id'));
		return view($this->module.'.cetak_pengantar',$this->data);
	}

	function filterPermintaan(Request $request)
	{
		$tanggalAwal = $request->input('tanggalAwal');
		$tanggalAkhir = $request->input('tanggalAkhir');
		$area = $request->input('area');
		$barang = $request->input('barang');
		$status = $request->input('status');

		$query = \DB::table('t_permintaan_pupuk_herbisida')
			->select('*')
			->when($area, function ($query) use ($area) {
				return $query->where('unit', '=', $area);
			})
			->when($tanggalAwal && $tanggalAkhir, function ($query) use ($tanggalAwal, $tanggalAkhir) {
				return $query->whereBetween('tgl_permintaan', [$tanggalAwal, $tanggalAkhir]);
			})
			->when($status !== null && $status !== '', function ($query) use ($status) {
				return $query->where('status', '=', $status);
			})
			->when($barang, function ($query) use ($barang) {
				return $query->where('barang', '=', $barang);
			})
			->limit(10000);

		$results = $query->get();

		return response()->json([
			'status' => 'success',
			'data' => $results,
			'message' => 'Data berhasil difilter'
		]);
	}

}