<?php namespace App\Http\Controllers;

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


class SaldokuotabbmController extends Controller {

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

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


		
	}

	public function index( Request $request )
	{
		// Make Sure users Logged 
		if(!\Auth::check()) 
			return redirect('user/login')->with('status', 'error')->with('message','You are not login');
		// $this->grab( $request) ;
		// if($this->access['is_view'] ==0) 
		// 	return redirect('dashboard')->with('message', __('core.note_restric'))->with('status','error');				
		// Render into template
		return view( $this->module.'.index',$this->data);
	}	

	public function mapbbm(Request $request)
	{
		return view('dashboard.mapbbm');
	}

	function dashboard( Request $request ) 
	{
		// config(['app.debug' => true]);
		if(!\Auth::check()) 
			return redirect('user/login')->with('status', 'error')->with('message','You are not login');

		$result = \DB::select("
			select 
			b.stasiun,
			b.kapasitas,
				(sum(a.saldo) +
				(select ifnull(sum(jumlah), 0) from t_transfer_bbm where stasiun = a.stasiun)) - 
				(select ifnull(sum(jumlah), 0) from t_pengeluaran_bbm where unit = '".session('fid')."'  and statiun_id = a.stasiun) as saldo_akhir,
				(select sum(jumlah) from t_pengeluaran_bbm where unit = '".session('fid')."' and tgl_keluar = date(now())  and statiun_id = a.stasiun) as total_pengeluaran_hi,
				(select sum(jumlah) from t_pengeluaran_bbm where unit = '".session('fid')."'  and statiun_id = a.stasiun) as total_pengeluaran_sd,
				(select ifnull(sum(jumlah), 0) from t_transfer_bbm where stasiun = a.stasiun) as transfer	
			from t_saldo_bbm a
			inner join m_stasiun_bbm b on b.id = a.stasiun

			where a.jenis_bbm = 1 and a.unit = '".session('fid')."' group by a.stasiun
		");
		

		$this->data['data'] = $result;

		return view( $this->module.'.dashboard',$this->data);	
	}

	public function getPermintaanBBMTable(Request $request)
	{
		$unit = $request->input('unit', \session('fid'));
		$startDate = $request->input('start_date');
		$endDate = $request->input('end_date');

		$query = \DB::table('t_permintaan_bbm as a')
			->select(
				'a.kode_permintaan',
				'a.tanggal',
				'a.nomer_kartu',
				'd.stasiun',
				'b.no_kendaraan',
				'b.deskripsi_kendaraan',
				'c.jenis_bbm',
				'a.jumlah_bbm as jml_permintaan',
				\DB::raw('sum(e.jumlah) as jml_pengeluaran'),
				'a.satuan',
				'a.keperluan'
			)
			->join('m_kendaraan as b', 'b.id', '=', 'a.kendaraan_id')
			->join('m_jenis_bbm as c', 'c.id', '=', 'a.jenis_bbm')
			->join('m_stasiun_bbm as d', 'd.id', '=', 'a.statiun_id')
			->Join('t_pengeluaran_bbm as e', 'e.kode_permintaan', '=', 'a.kode_permintaan')
			->where('a.unit', $unit);


		if ($startDate && $endDate) {
			$query->whereBetween('a.tanggal', [$startDate, $endDate]);
		}

		$results = $query->groupBy(
			'a.kode_permintaan',
			'a.tanggal',
			'a.nomer_kartu',
			'd.stasiun',
			'b.no_kendaraan',
			'b.deskripsi_kendaraan',
			'c.jenis_bbm',
			'a.jumlah_bbm',
			'a.satuan',
			'a.keperluan'
		)->get();

		$html = '<style>
			.custom-table {
				width: 100%;
				border-collapse: collapse;
				font-family: Arial, sans-serif;
				background: #f9f9f9;
			}
			.custom-table th {
				background: #007bff;
				color: #fff;
				padding: 10px;
				text-align: left;
				border-bottom: 2px solid #0056b3;
			}
			.custom-table td {
				padding: 8px 10px;
				border-bottom: 1px solid #dee2e6;
			}
			.custom-table tr:nth-child(even) {
				background: #e9ecef;
			}
			.custom-table tr:hover {
				background: #d1ecf1;
			}
		</style>';

		$html .= '<table class="custom-table">';
		$html .= '<thead>
			<tr>
				<th>Kode Permintaan</th>
				<th>Tanggal</th>
				<th>Nomer Kartu</th>
				<th>Stasiun</th>
				<th>No Kendaraan</th>
				<th>Deskripsi Kendaraan</th>
				<th>Jenis BBM</th>
				<th>Jumlah Permintaan</th>
				<th>Jumlah Pengeluaran</th>
				<th>Satuan</th>
				<th>Keperluan</th>
			</tr>
		</thead><tbody>';

		foreach ($results as $row) {
			$html .= '<tr>';
			$html .= '<td>' . htmlspecialchars($row->kode_permintaan) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->tanggal) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->nomer_kartu) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->stasiun) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->no_kendaraan) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->deskripsi_kendaraan) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->jenis_bbm) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->jml_permintaan) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->jml_pengeluaran) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->satuan) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->keperluan) . '</td>';
			$html .= '</tr>';
		}
		$html .= '<tr style="background:#f1f1f1;font-weight:bold">';
		$html .= '<td colspan="7" style="text-align:right;">Total</td>';
		$html .= '<td>' . htmlspecialchars($results->sum('jml_permintaan')) . '</td>';
		$html .= '<td>' . htmlspecialchars($results->sum('jml_pengeluaran')) . '</td>';
		$html .= '<td colspan="2"></td>';
		$html .= '</tr>';
		$html .= '</tbody></table>';


		return response($html);
	}

	function showtables(Request $request) {
		$tunit = session('fid');
		$ttgl = $request->input('filter_date');

		$results = \DB::select('CALL GetSisaKuotaBBM(?, ?)', [$tunit, $ttgl]);

		$html = '<style>
			.custom-table {
			width: 100%;
			border-collapse: collapse;
			font-family: Arial, sans-serif;
			background: #f9f9f9;
			}
			.custom-table th {
			background: #007bff;
			color: #fff;
			padding: 10px;
			text-align: left;
			border-bottom: 2px solid #0056b3;
			}
			.custom-table td {
			padding: 8px 10px;
			border-bottom: 1px solid #dee2e6;
			}
			.custom-table tr:nth-child(even) {
			background: #e9ecef;
			}
			.custom-table tr:hover {
			background: #d1ecf1;
			}
		</style>';

		$html .= '<table class=" custom-table">';
		$html .= '<thead>
			<tr>
			<th>Nomer Kartu</th>
			<th>No Kendaraan</th>
			<th>Deskripsi Kendaraan</th>
			<th>Jenis BBM</th>
			<th>Satuan</th>
			<th>Total Kuota</th>
			<th>Total Permintaan</th>
			<th>Sisa Kuota</th>
			<th>Pemakaian HI</th>			
			</tr>
		</thead><tbody>';

		foreach ($results as $row) {
			$html .= '<tr>';
			$html .= '<td>' . htmlspecialchars($row->nomer_kartu) . '</td>';
			$html .= '<td><strong style="color:#007bff;">' . htmlspecialchars($row->no_kendaraan) . '</strong></td>';
			$html .= '<td>' . htmlspecialchars($row->deskripsi_kendaraan) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->jenis_bbm) . '</td>';
			$html .= '<td>' . htmlspecialchars($row->satuan) . '</td>';
			$html .= '<td><strong style="color:#17a2b8;">' . htmlspecialchars($row->total_kuota) . '</strong></td>';
			$html .= '<td><strong style="color:#ffc107;">' . htmlspecialchars($row->jml_permintaan) . '</strong></td>';
			$html .= '<td><strong style="color:#28a745;">' . htmlspecialchars($row->sisa_kuota) . '</strong></td>';
			$html .= '<td><strong style="color:#dc3545;">' . htmlspecialchars($row->pemakaian_hi) . '</strong></td>';
			$html .= '</tr>';
		}

		$html .= '</tbody></table>';

		return response($html);
	}
	function show( Request $request , $id ) 
	{
		/* Handle import , export and view */
		$task =$id ;
		switch( $task)
		{

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