<?php
if (!defined('BASEPATH'))
    exit('No direct script access allowed');
class Android extends CI_Controller
{
    var $main_menu_name = "android";
    var $sub_menu_name = "android";
    public function __construct()
    {
        parent::__construct();
        $this->load->model('Common_Model');
        $this->load->model('User_Model');
    }
    public function index()
    {
    }
    public function login()
    {	//get user name and password
        $user_username = $this->uri->segment('3');
        $password      = $this->uri->segment('4');
		//get user id
        $user_id       = $this->User_Model->login($user_username, $password);
        if ($user_id) {
            $data['user_details'] = $this->User_Model->get_user_info($user_id);
            $ss_user_username     = $data['user_details']['user_username'];
            $ss_user_id           = $data['user_details']['user_id'];
            $ss_group_id          = $data['user_details']['group_id'];
            $ss_warehouse_id      = $data['user_details']['warehouse_id'];
            $ss_user_first_name   = $data['user_details']['user_first_name'];
            $ss_user_last_name    = $data['user_details']['user_last_name'];
            $ss_user_group_name   = $data['user_details']['user_group_name'];
            //if cash collector owener super admin
            if ($ss_group_id == 4 || $ss_group_id == 1 || $ss_group_id == 2 || $ss_group_id == 3) {
                $stutus = 1;
                $user   = array(
                    'ss_stutus' => $stutus,
                    'ss_user_id' => $user_id,
                    'ss_group_id' => $ss_group_id,
                    'ss_warehouse_id' => $ss_warehouse_id,
                    'ss_user_first_name' => $ss_user_first_name,
                    'ss_user_group_name' => $ss_user_group_name
                );
                echo json_encode($user);
            } else {
                $stutus = 2;
                $user   = array(
                    'ss_stutus' => $stutus
                );
                echo json_encode($user);
            }
        } else {
            $stutus = 0;
            $user   = array(
                'ss_stutus' => $stutus
            );
            echo json_encode($user);
        }
    }
	
	
	
    public function list_invoices()
    {	//imoport models
       $this->load->model('Loan_Payment_Received_Model');
	   $this->load->model('Loan_Model');
	   $this->load->model('Panalty_Model');
	   //get loan id
       $user_id=$this->uri->segment('3');	   
	   $user_route=$this->User_Model->get_user_route($user_id);      
       $route=$user_route['preferd_route'];
	   $payment_t=1;
	   //get list loan pending
	   $values = $this->Loan_Payment_Received_Model->getLoan_approved_issued_cash_collect(0,$route,$payment_t);	   
	   $json=array();	   
	   $columns = array();
	        $data = array();
	        if (!empty($values)) {
	            foreach ($values as $users) {					
	           $row = array();
					$loan_id=$users->loan_id;				
					$payment_term=$users->loan_payment_term;
					$oustanding_value=0;
					$should_be_received_value=0;
					$total_paid_amount=0;	
					$a=0;
					$total_paid_amount=$this->Loan_Model->get_total_paid_by_loan_id($loan_id);	
					$total_panalty=$this->Loan_Payment_Received_Model->get_total_panalty_by_loan_id($loan_id);
					$total_due=$this->Loan_Payment_Received_Model->get_total_due_by_loan_id($loan_id);					
					$total_paid_panalty=$this->Loan_Payment_Received_Model->get_total_paid_panalty_by_loan_id($loan_id);
					$total_paid_due=$this->Loan_Payment_Received_Model->get_total_paid_due_by_loan_id($loan_id);
					$total_paid_loan=$this->Loan_Payment_Received_Model->get_total_paid_loan_by_loan_id($loan_id);	
					
					$today=date('Y-m-d');					
					if($total_panalty['panalty_amount']>0)
					{
					$panalty_charge=$total_panalty['panalty_amount'];	
					}
					else
					{
						$panalty_charge=0;
					}					
					if($total_due['due_amount']>0)
					{
					$due_charge=$total_due['due_amount'];	
					}
					else
					{
						$due_charge=0;
					}					
					if($total_paid_panalty['panalty_received']>0)
					{
					$paid_panalty_charge=$total_paid_panalty['panalty_received'];	
					}
					else
					{
				$paid_panalty_charge=0;
					}					
					if($total_paid_due['due_received']>0)
					{
						$paid_due_charge=$total_paid_due['due_received'];	
					}
					else
					{
					$paid_due_charge=0;
					}					
					if($total_paid_loan['loan_received']>0)
					{
						$paid_loan_only=$total_paid_loan['loan_received'];	
					}
					else
					{
					$paid_loan_only=0;
					}					
					//monthly outstanding calculate 
					if($payment_term==3)
					{	
						$loan_req_date=$users->loan_date;												
						$date1 = new DateTime($today);
						$date2 = new DateTime($loan_req_date);
						$diff = $date1->diff($date2);
						$mature_month=(($diff->format('%y') * 12) + $diff->format('%m'));
						$loan_term_amount=$users->loan_term_amount;	
						$should_be_received_value=$loan_term_amount*$mature_month;
						$total_loan_amount=$users->loan_payable_total_amount;
						if($should_be_received_value>$total_loan_amount)
						{
							$should_be_received_value=$total_loan_amount;
						}
						$oustanding_value=	$should_be_received_value-$paid_loan_only;										
					}				
					//daily outstanding calculate
					if($payment_term==1)
					{					 
						$date1=date_create($users->loan_date);
						$date2=date_create($today);
						$diff=date_diff($date1,$date2);
						$days=$diff->format("%a");
						$mature_days=$days;
						$loan_term_amount=$users->loan_term_amount;	
						$should_be_received_value=$loan_term_amount*$mature_days;
						$total_loan_amount=$users->loan_payable_total_amount;
						if($should_be_received_value>$total_loan_amount)
						{
							$should_be_received_value=$total_loan_amount;
						}	
						$oustanding_value=	$should_be_received_value-$paid_loan_only;											
					}					
					//Weekly outstanding calculate
					if($payment_term==2)
					{					 
						$date1=date_create($users->loan_date);
						$date2=date_create($today);
						$diff=date_diff($date1,$date2);
						$days=$diff->format("%a");						
						$week=floor($days/7);					
						$mature_week=$week;
						$loan_term_amount=$users->loan_term_amount;	
						$should_be_received_value=$loan_term_amount*$mature_week;
						$total_loan_amount=$users->loan_payable_total_amount;
						if($should_be_received_value>$total_loan_amount)
						{
							$should_be_received_value=$total_loan_amount;
						}
						$oustanding_value=	$should_be_received_value-$paid_loan_only;												
					}					
					//cheque outstanding calculate
					if($payment_term==4)
					{	
						$should_be_received_value=0;
						//if cheque reduce from cheque date
					      if($users->reduce_fron_ceque==1)
						  {							
							$total_realize_cheque_for_today=$this->Loan_Payment_Received_Model->get_total_realize_cheque_for_today_by_loan_id($loan_id,$today);
							
							$total_cheque_for_today=$this->Loan_Payment_Received_Model->get_total_cheque_for_today_by_loan_id($loan_id,$today);
							$should_be_received_value=$total_cheque_for_today['loan_received'];
							if($total_realize_cheque_for_today['loan_received']>0)
							{
							$realize_cheque_value=$total_realize_cheque_for_today['loan_received'];	
							}else
							{
								$realize_cheque_value=0;
							}												
							$oustanding_value=$should_be_received_value-$realize_cheque_value;
						  }
						  else
						  {					  					  
						 $total_realize_cheque_for_today=$this->Loan_Payment_Received_Model->get_total_realize_cheque_for_today_by_loan_id($loan_id,$today);
							if($total_realize_cheque_for_today['loan_received']>0)
							{
							$realize_cheque_value=$total_realize_cheque_for_today['loan_received'];	
							}else
							{
								$realize_cheque_value=0;
							}							
							$date1=date_create($users->loan_date);
							$date2=date_create($today);
							$diff=date_diff($date1,$date2);
							$days=$diff->format("%a");
							$mature_days=$days;	
							
							if($users->loan_payment_term_qty>0)
							{
								$time_periad=$users->loan_payment_term_qty;
							}else
							{
								$time_periad=1;
							}						
							$term_count=$mature_days/$time_periad;						
							$diff=intval($term_count); 
							$should_be_received_value=$users->loan_term_amount*$diff;	
							
							$total_loan_amount=$users->loan_payable_total_amount;
							if($should_be_received_value>$total_loan_amount)
							{
							$should_be_received_value=$total_loan_amount;
							}																							
							$oustanding_value=$should_be_received_value-$realize_cheque_value-$paid_loan_only;		  
						  }		
					}					
					//------------------------------------------------------------------					
					$panalty_charge_total=0;					
					//$last_panalty_details=$this->Loan_Payment_Received_Model->get_last_panalty_by_loan_id($loan_id);			
					$panalty=$this->Panalty_Model->get_panalty_charge();					
					  $panalty_charge_total=$panalty_charge;					
					if($users->loan_payment_term == 4)
					{ 					
					$pTname=$users->payment_term_name. " " .$users->loan_payment_term_qty." days" ;
					if($users->reduce_fron_ceque == 1)
					{
					$pTname=$users->payment_term_name." ( Custom duration ) ";	
					}					
					}
					else
					{
					$pTname=$users->payment_term_name;	
					}	
					
									
					$due_balance=$due_charge-$paid_due_charge;
					$panlty_balance=$panalty_charge_total-$paid_panalty_charge;
					$total_need_to_pay=$users->loan_payable_total_amount+$panalty_charge_total+$due_charge;					
					$json_itm = array(
                    'sale_id' => $users->loan_id,
                    'sale_reference_no' => $users->loan_ref,
                    'sale_total' => $users->loan_payable_total_amount,
                    'sale_pymnt_amount' =>$users->loan_term_amount,
                    'totat_down_payment' => $users->loan_term_amount,
                    'term_amount' => $users->loan_term_amount,
                    'no_of_days' => $users->loan_no_of_terms,
                    'sale_datetime' => $users->loan_date,
					'loan_close_date' => $users->loan_close_date,
                    'customer_name' => $users->cus_name." ".$users->cus_nic,
                    'card_ref_number' => $users->loan_ref,
                    'outstanding' => number_format($oustanding_value+$due_balance+$panlty_balance, 2, '.', ','),
					'total_paid_amount'=>$total_paid_loan['loan_received'],
					'total_loan_amount'=>$users->loan_tot_amount,
					'due_total_amount'=>$users->loan_tot_amount-$total_paid_loan['loan_received'],
					'cus_mobile'=>$users->cus_mobile, 
					'total_panalty'=>$panalty_charge_total,
					'total_due_charge'=>$due_charge,
					
					
					
					
                );
                array_push($json, $json_itm);  	   
				}				
				echo json_encode($json);				
				}
				//if emty value array
				else
				{
				echo json_encode($json);
				}            
    }
	
	
    public function savepayment()
    {	//import models
		$this->load->model('Loan_Payment_Received_Model');
	   $this->load->model('Loan_Model');
	   $this->load->model('Panalty_Model');		
		//get details start
        $loan_id                    = $this->input->get('sale_id');
        $amount                     = $this->input->get('amount');
        $user_id                    = $this->input->get('user_id');
        $tracking_number            = $this->input->get('tracking_number');
		$payment_type				= "Cash";
		$loan_issue_date=date("Y-m-d H:i:s");	
       //get details end     
	       
			//start : get_data from db relevent to loan
			$details_confirm = $this->Loan_Model->get_loan_details_by_loan_id($loan_id);			
			$paid= $this->Loan_Payment_Received_Model->get_loan_paid_total_by_loan_id($loan_id);
			$total_paid_amount=$this->Loan_Model->get_total_paid_by_loan_id($loan_id);	
			$total_panalty=$this->Loan_Payment_Received_Model->get_total_panalty_by_loan_id($loan_id);
			$total_due=$this->Loan_Payment_Received_Model->get_total_due_by_loan_id($loan_id);			
			$total_paid_panalty=$this->Loan_Payment_Received_Model->get_total_paid_panalty_by_loan_id($loan_id);
			$total_paid_due=$this->Loan_Payment_Received_Model->get_total_paid_due_by_loan_id($loan_id);
			$total_paid_loan=$this->Loan_Payment_Received_Model->get_total_paid_loan_by_loan_id($loan_id);			
			$total_paid_capital=$this->Loan_Payment_Received_Model->get_total_paid_capital_by_loan_id($loan_id);
			$total_paid_interest=$this->Loan_Payment_Received_Model->get_total_paid_interest_by_loan_id($loan_id);
			//End : get_data from db relevent to loan
			
			//start:calculate currant recived capital and interest received %
			$tot_loan_amount=$details_confirm['loan_payable_total_amount'];
			$tot_paid_loan=$total_paid_loan['loan_received'];
			$tot_capital=$details_confirm['loan_tot_amount'];
			$tot_interest=$details_confirm['total_interest'];
			$tot_paid_capital=$total_paid_capital['capital_received'];
			$tot_paid_interest=$total_paid_interest['loan_interest_recived'];
			$tot_balance_capital=$tot_capital-$tot_paid_capital;
			$tot_balance_interest=$tot_interest-$tot_paid_interest;
			$tot_balance_loan=$tot_loan_amount-$tot_paid_loan;				
			if($tot_balance_loan==0)
			{
			$temp_tot_balance_loan=1;	
			}
			else
			{
				$temp_tot_balance_loan=$tot_balance_loan;
			}					
			$capital_presentage=($tot_balance_capital/$temp_tot_balance_loan)*100;
			$interest_presentage=($tot_balance_interest/$temp_tot_balance_loan)*100;		
			//end:calculate currant recived capital and interest received %			
			
			//start : validation amounts
			if($total_panalty['panalty_amount']>0)
			{
				$panalty_charge=$total_panalty['panalty_amount'];	
			}
			else
			{
				$panalty_charge=0;
			}					
			if($total_due['due_amount']>0)
			{
				$due_charge=$total_due['due_amount'];	
			}
			else
			{
				$due_charge=0;
			}		
			if($total_paid_panalty['panalty_received']>0)
			{
				$paid_panalty_charge=$total_paid_panalty['panalty_received'];	
			}
			else
			{
				$paid_panalty_charge=0;
			}					
			if($total_paid_due['due_received']>0)
			{
				$paid_due_charge=$total_paid_due['due_received'];	
			}
			else
			{
				$paid_due_charge=0;
			}
			if($paid['pymnt_amount']>0)
			{
			$paid_amount=$paid['pymnt_amount'];
			}
			else
			{
			$paid_amount=0;
			}			
			//END : validation amounts	
					
			// start : cal due and panalty payment 			
			$panalty_balance=$panalty_charge-$paid_panalty_charge;
			$due_balance=$due_charge-$paid_due_charge;			
			$currant_amount_balance=$amount;
			$total_loan_payment=0;
			$due_payment=0;
			$panalty_payment=0;	
			$loan_capital_payment=0;
			$loan_interest_payment=0;
			$loan_excess_payment=0;		
			//-------------------------------
			if($amount>$due_balance)
			{
				$due_payment=$due_balance;
			}
			else
			{
				if($amount>0)
				{
					$due_payment=$amount;					
				}				
			}			
			//-----------------------------------			
			$currant_amount_balance=$currant_amount_balance-$due_payment;			
			if($currant_amount_balance>$panalty_balance)
			{
				$panalty_payment=$panalty_balance;
			}
			else
			{				
				if($amount>0)
				{
					$panalty_payment=$currant_amount_balance;					
				}	
			}		
			$currant_amount_balance=$currant_amount_balance-$panalty_payment;			
			// end : cal due and panalty payment 
			//start : cal loan payment			
			if($currant_amount_balance>0)
			{
				$total_loan_payment=$currant_amount_balance;
				//start : cal capital and interest payment amount
				$loan_capital_payment=round(($total_loan_payment/100)*$capital_presentage,2);
				$loan_interest_payment=round(($total_loan_payment/100)*$interest_presentage,2);
				$loan_excess_payment=$total_loan_payment-$loan_capital_payment-$loan_interest_payment;	
				//end : cal capital and interest payment amount			
			}
			//end : cal loan payment			
			$c_pybl_total=$details_confirm['loan_payable_total_amount']+$panalty_balance+$due_balance;							
			$check= $c_pybl_total-$tot_paid_loan;
			//set to array				
			if($amount<=$check+1&& $amount>0){
			if($payment_type=="Cheque")
			{
			$data=array(
			'loan_id'=>$loan_id, 
			'cus_id'=>$details_confirm['cus_id'],
			'warehouse_id'=>$details_confirm['warehouse_id'],
			'route_id'=>$details_confirm['route_id'],
			'pymnt_paying_by'=>$payment_type,
			'payment_term'=>$details_confirm['loan_payment_term'],
			'pymnt_date_time'=>date('Y-m-d', strtotime($loan_issue_date)) ,			
			'pymnt_amount'=>$amount,
			'pymnt_cheque_no'=>$cheqe_number,
			'pymnt_cheque_date'=>date('Y-m-d', strtotime($chque_date)) ,
			'cheque_payee'=>$payee,
			'bank_id'=>$issue_bank,
			'pymnt_branch'=>$issue_brnach,
			'pymnt_added_date_time'=>date("Y-m-d H:i:s"),
			'user_id'=>$user_id,
			'pymnt_collected'=>1,	
			'panalty_received'=>$panalty_payment,
			'due_received'=>$due_payment,
			'loan_received'=>$total_loan_payment,
			'excess_received'=>$loan_excess_payment,
			'capital_received'=>$loan_capital_payment,
			'loan_interest_recived'=>$loan_interest_payment, 
			'pymnt_ref_no'=>$this->Common_Model->gen_ref_number('paymnt_id','loan_payment','RCPT/'), 
			);
			}
			else
			{
			$data=array(
			'loan_id'=>$loan_id, 
			'cus_id'=>$details_confirm['cus_id'],
			'warehouse_id'=>$details_confirm['warehouse_id'],
			'route_id'=>$details_confirm['route_id'],
			'pymnt_paying_by'=>$payment_type,
			'pymnt_date_time'=>date('Y-m-d', strtotime($loan_issue_date)) ,			
			'pymnt_amount'=>$amount,			
			'pymnt_added_date_time'=>date("Y-m-d H:i:s"),
			'user_id'=>$user_id,	
			'pymnt_collected'=>1,
			'pymnt_deposited'=>1,
			'panalty_received'=>$panalty_payment,
			'due_received'=>$due_payment,
			'loan_received'=>$total_loan_payment,
			'excess_received'=>$loan_excess_payment,
			'capital_received'=>$loan_capital_payment,
			'loan_interest_recived'=>$loan_interest_payment,
			'pymnt_ref_no'=>$this->Common_Model->gen_ref_number('paymnt_id','loan_payment','RCPT/'),			
			);					
			}			
			$result1=$this->Loan_Payment_Received_Model->save_loan_payment($data);			
			//check whether loan is ready to close and if rady automatical close by the system			
			$paid= $this->Loan_Payment_Received_Model->get_loan_paid_total_by_loan_id($loan_id);
			if($paid['pymnt_amount']>0)
			{
			$paid_amount=$paid['pymnt_amount'];
			}
			else
			{
			$paid_amount=0;
			}	
			$tot_to_be_payable=$tot_loan_amount+$panalty_charge+$due_charge;			
			$tot_to_be_pay_balance_amount=$tot_to_be_payable-$paid_amount;
			
			if($tot_to_be_pay_balance_amount<=0)
			{	//echo"done";
				$data=array('is_closed'=>1,'system_close_date'=>date("Y-m-d"));
				$result2= $this->Loan_Payment_Received_Model->update_loan_close_status($loan_id,$data);				
			}
			if ($result1 == 1) {
            echo json_encode(array(
                'result' => '1'
            ));
        }
        if ($result1 == 0) {
            echo json_encode(array(
                'result' => '0'
            ));
        }			
			}
			else
			{
				echo json_encode(array(
                'result' => '0'
           		 ));				
			}
        //save after  
    }	
	
	
	public function loan_details()
	{
		//import models
		$this->load->model('Loan_Payment_Received_Model');
		$this->load->model('Loan_Panalty_Process_Model');	
		$this->load->model('Loan_Due_Process_Model');
		$this->load->model('Loan_Model');
		$this->load->model('Customer_Model');
		$this->load->model('Warehouse_Model');
		//get loan id
		$loan_id=$this->uri->segment('3');
		//set details
		$data['loan_details']= $this->Loan_Model->get_loan_details_by_id($loan_id);
		$data['loan_panalty']= $this->Loan_Panalty_Process_Model->get_loan_payments_by_loan_id($loan_id);
		$data['loan_due']= $this->Loan_Due_Process_Model->get_loan_payments_by_loan_id($loan_id);		
		$data['total_paid_amount']=$this->Loan_Model->get_total_paid_by_loan_id($loan_id);
		$data['customer_details']= $this->Customer_Model->get_customer_info($data['loan_details']->cus_id);
		$data['warehouse_details']= $this->Warehouse_Model->get_warehouse_info($data['loan_details']->warehouse_id);
		$data['loan_payment_list']= $this->Loan_Model->get_loan_payments_by_loan_id($loan_id);
		$data['loan_id']=$loan_id;		
			//get data
			$paid= $this->Loan_Payment_Received_Model->get_loan_paid_total_by_loan_id($loan_id);
			$total_paid_amount=$this->Loan_Model->get_total_paid_by_loan_id($loan_id);	
			$total_panalty=$this->Loan_Payment_Received_Model->get_total_panalty_by_loan_id($loan_id);
			$total_due=$this->Loan_Payment_Received_Model->get_total_due_by_loan_id($loan_id);			
			$total_paid_panalty=$this->Loan_Payment_Received_Model->get_total_paid_panalty_by_loan_id($loan_id);
			$total_paid_due=$this->Loan_Payment_Received_Model->get_total_paid_due_by_loan_id($loan_id);
			$total_paid_loan=$this->Loan_Payment_Received_Model->get_total_paid_loan_by_loan_id($loan_id);
			//set data
			$data['total_panalty']=$total_panalty['panalty_amount'];
			$data['total_due']=$total_due['due_amount'];
			$data['total_paid_panalty']=$total_paid_panalty['panalty_received'];
			$data['total_paid_due']=$total_paid_due['due_received'];
			$data['total_paid_loan']=$total_paid_loan['loan_received'];			
			echo json_encode($data);		
	}
	
	
	
	public function get_user_summary()
	{
		$this->load->model('Report_Loan_Model');
		
		$user_id=$this->uri->segment('3');
		$date=$this->uri->segment('4');		
		$sel_date=date_create($date);		
		$sel_date=date_format($sel_date,'H:i');
		
		$data['payment_slip_list']=$this->Report_Loan_Model->get_user_summary($user_id,$sel_date);
		echo json_encode($data);
		
	}
	
	
		public function get_route_list()
	{
		$this->load->model('Route_Model');		
		$data['route_list']=$this->Route_Model->get_all_active_routes();
		echo json_encode($data);
		
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}