<?php
/**
* PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/)
**/
_admin();
$ui->assign('_title', $_L['Reports'].'- '. $config['CompanyName']);
$ui->assign('_sysfrm_menu', 'reports');

$action = $routes['1'];
$admin = Admin::_info();
$ui->assign('_admin', $admin);

$mdate = date('Y-m-d');
$tdate = date('Y-m-d', strtotime('today - 30 days'));

//first day of month
$first_day_month = date('Y-m-01');
//
$this_week_start = date('Y-m-d',strtotime( 'previous sunday'));
// 30 days before
$before_30_days = date('Y-m-d', strtotime('today - 30 days'));
//this month
$month_n = date('n');

switch ($action) {

    case 'print-by-date':
        $mdate = date('Y-m-d');
        $d = ORM::for_table('tbl_transactions');
        $d->where('recharged_on', $mdate);
        $d->order_by_desc('id');
        $x =  $d->find_many();

        $dr = ORM::for_table('tbl_transactions');
        $dr->where('recharged_on', $mdate);
        $dr->order_by_desc('id');
        $xy =  $dr->sum('price');

        $ui->assign('d',$x);
		$ui->assign('dr',$xy);
        $ui->assign('mdate',$mdate);
        $ui->assign('recharged_on',$mdate);

        $ui->display('print-by-date.tpl');
        break;

    case 'pdf-by-date':
		$mdate = date('Y-m-d');

        $d = ORM::for_table('tbl_transactions');
        $d->where('recharged_on', $mdate);
        $d->order_by_desc('id');
        $x =  $d->find_many();

		$dr = ORM::for_table('tbl_transactions');
        $dr->where('recharged_on', $mdate);
        $dr->order_by_desc('id');
        $xy =  $dr->sum('price');

        $title = ' Reports ['.$mdate.']';
        $title = str_replace('-',' ',$title);

        if ($x) {
            $html = '
			<div id="page-wrap">
				<div id="address">
					<h3>'.$config['CompanyName'].'</h3>
					'.$config['address'].'<br>
					'.$_L['Phone_Number'].': '.$config['phone'].'<br>
				</div>
				<div id="logo"><img id="image" src="system/uploads/logo.png" alt="logo" /></div>
			</div>
			<div id="header">'.$_L['All_Transactions_at_Date'].': '. date($_c['date_format'], strtotime($mdate)).'</div>
			<table id="customers">
				<tr>
				<th>'.$_L['Username'].'</th>
				<th>'.$_L['Plan_Name'].'</th>
				<th>'.$_L['Type'].'</th>
				<th>'.$_L['Plan_Price'].'</th>
				<th>'.$_L['Created_On'].'</th>
				<th>'.$_L['Expires_On'].'</th>
				<th>'.$_L['Method'].'</th>
				<th>'.$_L['Routers'].'</th>
				</tr>';
            $c = true;
            foreach ($x as $value) {

                $username = $value['username'];
                $plan_name = $value['plan_name'];
                $type = $value['type'];
                $price = $_c['currency_code'].' '. number_format($value['price'],0,$_c['dec_point'],$_c['thousands_sep']);
				$recharged_on = date( $config['date_format'], strtotime($value['recharged_on']));
				$expiration = date( $config['date_format'], strtotime($value['expiration']));
				$time = $value['time'];
				$method = $value['method'];
				$routers = $value['routers'];

                $html .= "<tr".(($c = !$c)?' class="alt"':' class=""').">"."
				<td>$username</td>
				<td>$plan_name</td>
				<td>$type</td>
				<td align='right'>$price</td>
				<td>$recharged_on $time </td>
				<td>$expiration $time </td>
				<td>$method</td>
				<td>$routers</td>
				</tr>";
            }
            $html .= '</table>
			<h4 class="text-uppercase text-bold">'.$_L['Total_Income'].':</h4>
			<h3 class="sum">'.$_c['currency_code'].' '.number_format($xy,2,$_c['dec_point'],$_c['thousands_sep']).'</h3>';

            define('_MPDF_PATH','system/vendors/mpdf/');

            require('system/vendors/mpdf/mpdf.php');

            $mpdf=new mPDF('c','A4','','',20,15,25,25,10,10);
            $mpdf->SetProtection(array('print'));
            $mpdf->SetTitle($config['CompanyName'].' Reports');
            $mpdf->SetAuthor($config['CompanyName']);
            $mpdf->SetWatermarkText($d['price']);
            $mpdf->showWatermarkText = true;
            $mpdf->watermark_font = 'Helvetica';
            $mpdf->watermarkTextAlpha = 0.1;
            $mpdf->SetDisplayMode('fullpage');

            $style = '<style>
			#page-wrap { width: 100%; margin: 0 auto; }
			#header { text-align: center; position: relative; color: black; font: bold 15px Helvetica, Sans-Serif; margin-top: 10px; margin-bottom: 10px;}

			#address { width: 300px; float: left; }
			#logo { text-align: right; float: right; position: relative; margin-top: 15px; border: 5px solid #fff; overflow: hidden; }

			#customers
			{
			font-family: Helvetica, sans-serif;
			width:100%;
			border-collapse:collapse;
			}
			#customers td, #customers th
			{
			font-size:0.8em;
			border:1px solid #98bf21;
			padding:3px 5px 2px 5px;
			}
			#customers th
			{
			font-size:0.8em;
			text-align:left;
			padding-top:5px;
			padding-bottom:4px;
			background-color:#A7C942;
			color:#fff;
			}
			#customers tr.alt td
			{
			color:#000;
			background-color:#EAF2D3;
			}
			</style>';

            $nhtml = <<<EOF
$style
$html
EOF;
            $mpdf->WriteHTML($nhtml);
            $mpdf->Output(date('Y-m-d')._raid(4).'.pdf', 'D');

        }else{
            echo 'No Data';
        }

        break;

    case 'print-by-period':
		$fdate = _post('fdate');
        $tdate = _post('tdate');
        $stype = _post('stype');

        $d = ORM::for_table('tbl_transactions');
		if ($stype != ''){
				$d->where('type', $stype);
		}

        $d->where_gte('recharged_on', $fdate);
        $d->where_lte('recharged_on', $tdate);
        $d->order_by_desc('id');
        $x =  $d->find_many();

		$dr = ORM::for_table('tbl_transactions');
		if ($stype != ''){
				$dr->where('type', $stype);
		}

        $dr->where_gte('recharged_on', $fdate);
        $dr->where_lte('recharged_on', $tdate);
		$xy = $dr->sum('price');

		$ui->assign('d',$x);
		$ui->assign('dr',$xy);
        $ui->assign('fdate',$fdate);
        $ui->assign('tdate',$tdate);
        $ui->assign('stype',$stype);

        $ui->display('print-by-period.tpl');
        break;


    case 'pdf-by-period':
		$fdate = _post('fdate');
        $tdate = _post('tdate');
        $stype = _post('stype');

        $d = ORM::for_table('tbl_transactions');
		if ($stype != ''){
				$d->where('type', $stype);
		}

        $d->where_gte('recharged_on', $fdate);
        $d->where_lte('recharged_on', $tdate);
        $d->order_by_desc('id');
        $x =  $d->find_many();

		$dr = ORM::for_table('tbl_transactions');
		if ($stype != ''){
				$dr->where('type', $stype);
		}

        $dr->where_gte('recharged_on', $fdate);
        $dr->where_lte('recharged_on', $tdate);
		$xy = $dr->sum('price');

        $title = ' Reports ['.$mdate.']';
        $title = str_replace('-',' ',$title);

        if ($x) {
            $html = '
			<div id="page-wrap">
				<div id="address">
					<h3>'.$config['CompanyName'].'</h3>
					'.$config['address'].'<br>
					'.$_L['Phone_Number'].': '.$config['phone'].'<br>
				</div>
				<div id="logo"><img id="image" src="system/uploads/logo.png" alt="logo" /></div>
			</div>
			<div id="header">'.$_L['All_Transactions_at_Date'].': '.date( $_c['date_format'], strtotime($fdate)).' - ' .date( $_c['date_format'], strtotime($tdate)).'</div>
			<table id="customers">
				<tr>
				<th>'.$_L['Username'].'</th>
				<th>'.$_L['Plan_Name'].'</th>
				<th>'.$_L['Type'].'</th>
				<th>'.$_L['Plan_Price'].'</th>
				<th>'.$_L['Created_On'].'</th>
				<th>'.$_L['Expires_On'].'</th>
				<th>'.$_L['Method'].'</th>
				<th>'.$_L['Routers'].'</th>
				</tr>';
            $c = true;
            foreach ($x as $value) {

                $username = $value['username'];
                $plan_name = $value['plan_name'];
                $type = $value['type'];
                $price = $_c['currency_code'].' '. number_format($value['price'],0,$_c['dec_point'],$_c['thousands_sep']);
				$recharged_on = date( $config['date_format'], strtotime($value['recharged_on']));
				$expiration = date( $config['date_format'], strtotime($value['expiration']));
				$time = $value['time'];
				$method = $value['method'];
				$routers = $value['routers'];

                $html .= "<tr".(($c = !$c)?' class="alt"':' class=""').">"."
				<td>$username</td>
				<td>$plan_name</td>
				<td>$type</td>
				<td align='right'>$price</td>
				<td>$recharged_on $time </td>
				<td>$expiration $time </td>
				<td>$method</td>
				<td>$routers</td>
				</tr>";
            }
            $html .= '</table>
			<h4 class="text-uppercase text-bold">'.$_L['Total_Income'].':</h4>
			<h3 class="sum">'.$_c['currency_code'].' '.number_format($xy,2,$_c['dec_point'],$_c['thousands_sep']).'</h3>';

            define('_MPDF_PATH','system/vendors/mpdf/');

            require('system/vendors/mpdf/mpdf.php');

            $mpdf=new mPDF('c','A4','','',20,15,25,25,10,10);
            $mpdf->SetProtection(array('print'));
            $mpdf->SetTitle($config['CompanyName'].' Reports');
            $mpdf->SetAuthor($config['CompanyName']);
            $mpdf->SetWatermarkText($d['price']);
            $mpdf->showWatermarkText = true;
            $mpdf->watermark_font = 'Helvetica';
            $mpdf->watermarkTextAlpha = 0.1;
            $mpdf->SetDisplayMode('fullpage');

            $style = '<style>
			#page-wrap { width: 100%; margin: 0 auto; }
			#header { text-align: center; position: relative; color: black; font: bold 15px Helvetica, Sans-Serif;  margin-top: 10px; margin-bottom: 10px;}

			#address { width: 300px; float: left; }
			#logo { text-align: right; float: right; position: relative; margin-top: 15px; border: 5px solid #fff; overflow: hidden; }

			#customers
			{
			font-family: Helvetica, sans-serif;
			width:100%;
			border-collapse:collapse;
			}
			#customers td, #customers th
			{
			font-size:0.8em;
			border:1px solid #98bf21;
			padding:3px 5px 2px 5px;
			}
			#customers th
			{
			font-size:0.8em;
			text-align:left;
			padding-top:5px;
			padding-bottom:4px;
			background-color:#A7C942;
			color:#fff;
			}
			#customers tr.alt td
			{
			color:#000;
			background-color:#EAF2D3;
			}
			</style>';

            $nhtml = <<<EOF
$style
$html
EOF;
            $mpdf->WriteHTML($nhtml);
            $mpdf->Output(date('Y-m-d')._raid(4).'.pdf', 'D');

        }else{
            echo 'No Data';
        }

        break;

    default:
        echo 'action not defined';
}