Current File : /home/inlingua/www/crm.vprotectindia.com/app/Http/Controllers/Customer/HomeController.php
<?php

namespace App\Http\Controllers\Customer;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;
use App\Model\API\CustomerMasterModel;
use App\Model\API\InvoiceMasters;
use App\Model\API\SaleSubscription;
use App\Model\API\Vouchers;
use App\Model\UnRegisterPayment;
use App\Model\OutstandingReport; 
use App\Model\CustomerPayment; 
use App\Model\Customer;
use Barryvdh\DomPDF\Facade as PDF;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Yajra\Datatables\Datatables;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
       $this->middleware('auth:customers');
//Auth::guard('customers')->user();
        // $this->middleware('guest')->except('logout');
        // $this->middleware('guest:admin')->except('logout');
        // $this->middleware('guest:writer')->except('logout');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        $headData = $this->deshboard_count();
		
		return view('customer.home',compact('headData'));
    }
	
	public function passalert()
    {
        $headData = $this->deshboard_count();
		
		return view('customer.passalert',compact('headData'));
    }
public function changePassword(Request $request)
{
	 $headData = $this->deshboard_count();
	 
   $user=Auth::guard('customers')->user();

    $curPassword = $request->current_password;
    $newPassword = $request->password;
	
	
    if (Hash::check($curPassword, $user->password)) {
		
		$id=$user->id;
		//$obj_user = Customer::where('id', $id)->first();
		
		$obj_user = Customer::find($id);
	
		
        $password = Hash::make($newPassword);
        //$obj_user->save();
		$userdata=DB::table('customers')
        ->where('id', $id)
        ->update(['password' => $password]);
		

			return back()->with('success', "Password Changed Successfully");

        }
        else{
			
            return back()->with('error', "Current Password is Invalid");
        }
   

    return view('customer.passalert',compact('headData'));
}
    public function sale_sub(Request $request)
    {   
        $headData = $this->deshboard_count();
        return view('customer.rptsales_subs',compact('headData'));
    }
    public function getsubs()
    {
        // $query= SaleSubscription::with('customer')->get();
        // $query=SaleSubscription::with(array('customer'=>function($query){
        //           $query->select('id','fname');
        // }))->get();
        $is_super = Auth::user()->is_super; 
        $user_name = Auth::user()->name; 
        $query=  DB::table('sales_subsc_details AS subsc')
            ->select('subsc.id','subsc.product','subsc.billing_type','subsc.kit_type','subsc.subs_valid_from','subsc.subs_valid_to','subsc.price','subsc.status','customer_master.fname')
        ->join('customer_master','customer_master.id','=','subsc.user_id');
        if($is_super!=1)
        { 
           $query->where('customer_master.created_by',$user_name);
        } 
        $query = $query->get();
        return Datatables::of($query)->make(true);
    }
    public function invoices()
    { 
        $headData = $this->deshboard_count();
        return view('admin.rpt_invoice',compact('headData'));
    }
    public function getinv()
    {
        $is_super = Auth::user()->is_super; 
        $user_name = Auth::user()->name;
        if($is_super==1)
        {
          $query=InvoiceMasters::query()->with('customer')->get();
        }
        else
        {
            $query=InvoiceMasters::where('salesperson',$user_name)->with('customer')->get();
        } 

        return Datatables::of($query)
             //->addColumn('totalamt', $InvoiceMasters) 
             //  ->addColumn('action', 'hello')

             ->addColumn('totalamt', function(InvoiceMasters $invoices) {
                $totalamt=isset(InvoiceMasters::find($invoices->id)->ledgers()->first()->amount)?InvoiceMasters::find($invoices->id)->ledgers()->first()->amount:"0";
                    return $totalamt;
                })
             ->addColumn('balance', function(InvoiceMasters $invoices) {
                $recamt=InvoiceMasters::find($invoices->id)->receipt()->sum('amount');
               // $totalamt=($totalamt-$recamt);
                    return $recamt;
                })

             ->addColumn('status', function(InvoiceMasters $invoices) {
                $totalamt=isset(InvoiceMasters::find($invoices->id)->ledgers()->first()->amount)?InvoiceMasters::find($invoices->id)->ledgers()->first()->amount:"0";
                $recamt=InvoiceMasters::find($invoices->id)->receipt()->sum('amount');
               $status="Pending";
               if($totalamt==$recamt)$status='Completed';
                    return $status;
                })

            ->addColumn('action', function(InvoiceMasters $invoices) {
            $totalamt=isset(InvoiceMasters::find($invoices->id)->ledgers()->first()->amount)?InvoiceMasters::find($invoices->id)->ledgers()->first()->amount:"0";

            $recamt=InvoiceMasters::find($invoices->id)->receipt()->sum('amount');
$status='<a class="btn btn-primary btn-sm" target="_blank" href="'.route('admin.home.print_invoice',$invoices->id).'" >Print</a>';
            if($totalamt!=$recamt)$status .='|<a class="btn btn-warning btn-sm" href="#">Pay</a>';
                return $status;
return '<a class="btn btn-primary btn-sm" target="_blank" href="'.route('admin.home.print_invoice',$invoices->id).'" >Print</a>';
            })->addColumn('details_url', function($invoices) {
                return route('admin.home.item_details', $invoices->id);
            }) 
                // ->addColumn('action', 'admin.pay')
                ->rawColumns(['action'])

        ->make(true);
    }
public function getItemDetailsSingleData($id)
    {
        $item_list = InvoiceMasters::findOrFail($id)->items;
        return Datatables::of($item_list)->make(true);
    }


    public function payments(Request $request)
    {  
         //dd($query);
        $headData = $this->deshboard_count();
        return view('customer.rpt_payments',compact('headData'));
    }
    public function getpayments()
    {
        
		
		$headData = $this->deshboard_count();
        return view('customer.rpt_payments',compact('headData'));
		//exit;
		
    }
	
	    public function get_customerpayments()
    {
		DB::enableQueryLog();
        //$id = Auth::user()->user_name;         
        //$cust_id=CustomerMasterModel::where('customer_code',$id)->first()->id;  \\\\\\
		/*
		       DB::enableQueryLog();
	   $customer_number='10000096';
        
		
		//$user = DB::table('outstanding_reports')->where('customer_number',$customer_number)->first();
		
		*/
		$customer_number=Auth::guard('customers')->user()->ACCOUNT_NUMBER;
		return Datatables::of(OutstandingReport::query()->where('customer_number',$customer_number)->orderBy('id', 'DESC'))
		
		
		->addColumn('detect_amount', function(OutstandingReport $invoices) {
			if($invoices->tds>0) {
				
				$tds=$invoices->tds;
				//$getamout=($tds / 100) * $invoices->bal_func_amt;
				$amount=$invoices->bal_func_amt;
				$remain=(18 / 100) * $amount;
				$mainamount=$amount-$remain;
				$tds=($tds / 100) * $mainamount;
				$tetect_tds=$mainamount-$tds;
				$total=$tetect_tds+$remain;
				$getamout = round($total,2);
				
				
				
				
				
				
			}else {
				
				$getamout=$invoices->tds;
			}
				
			return $getamout;
		})	
		
        ->addColumn('action', function(OutstandingReport $invoices) {
        

$status='<a class="btn btn-primary btn-sm" target="_blank" href="'.route('customer.print_customer_invoice',$invoices->invoice_number).'" >View Invoice</a>';
			if($invoices->txn_status=='0') {
				
				$status.='| <a class="btn btn-warning btn-sm" onClick="reply_click(this.id)"  id="'.$invoices->id."@@".$invoices->bal_func_amt.'"  >Pay</a>';
				
			}else{
				$status.='| <a class="btn btn-warning btn-sm" >Payment Success</a>';
			}
            //if($totalamt!=$recamt)$status .='|<a class="btn btn-warning btn-sm" href="#">Pay</a>';
                return $status;

            }) 
                      
		
		->make(true);
		
		
		
		
    }
	
	
public function getVoucherDetailsSingleData($id)
    {
        $voucher_list = Vouchers::findOrFail($id)->voucher_list;
        return Datatables::of($voucher_list)->make(true);
    }



    public function print_customer_invoice($id)
    {
        $customer_number=Auth::guard('customers')->user(); 
        $invoice_mast=CustomerPayment::where('orderid',$id)->where('payment_status','1')->first();
//echo '<pre>';print_r($invoice_mast);	 exit;	
        //return view('customer.print_customer_invoice',compact('invoice_mast'));
         $pdf = PDF::loadView('customer.print_customer_invoice',compact('invoice_mast'));
         return $pdf->stream('customer_invoice.pdf');
    }

     public   function deshboard_count()
    { 
        $paid=0;
        $unpaid=0;
        $totalamt=0;
        $recamt=0;
        //$id = Auth::user()->user_name;         
        //$cust_id=CustomerMasterModel::where('customer_code',$id)->first()->id;
		$customer_number=Auth::guard('customers')->user()->ACCOUNT_NUMBER;
		
        $Subscriptionquery = SaleSubscription::count();
        $Invoicequery = InvoiceMasters::get(['id']);
		
		
		
       //$customer_number='10000096';
        $Invoicequery=  DB::table('outstanding_reports')
            
        
           ->where('customer_number',$customer_number)
      
        ->get();
		
		
$total_recamt=DB::table('outstanding_reports')
            
        
           ->where('customer_number',$customer_number)
           ->where('txn_status','0')
		   ->sum('bal_func_amt');


        foreach ($Invoicequery as $row) {
         //$totalamt = isset(InvoiceMasters::find($row->id)->ledgers()->first()->amount)?InvoiceMasters::find($row->id)->ledgers()->first()->amount:"0";
           //$recamt =InvoiceMasters::find($row->id)->receipt()->sum('amount');
		   
		   
            if($row->txn_status=='1')
            {
                $paid++;
            }
            else{
                $unpaid ++;
            }
        }

        return array(
            'subscription' =>0,
            'invoice'=>$Invoicequery->count(),
            'paid'=>$paid,
            'unpaid'=>$unpaid,
			'balance'=>$total_recamt,
        );
    }
 
    public function show()
    {
        $headData = $this->deshboard_count();
        return view('admin.rpt_unregister_payments',compact('headData'));
    }
	
	  public function outstanding_report()
    {
        $headData = $this->deshboard_count();
        return view('admin.rpt_outstanding_report',compact('headData'));
    }
	public function customer_report()
    {
        $headData = $this->deshboard_count();
        return view('admin.rpt_customer_report',compact('headData'));
    }
	
    public function getunregisterpayments()
    {
        return Datatables::of(UnRegisterPayment::query()->orderBy('id', 'DESC'))->make(true);
    }
	
	public function getoutstandingreport()
    {
        return Datatables::of(OutstandingReport::query()->orderBy('id', 'DESC'))->make(true);
		dd(DB::getQueryLog());
    }
	public function getcustomerreport()
    {
        return Datatables::of(CustomerList::query()->orderBy('id', 'DESC'))
		
		
		
		
		->make(true);
		dd(DB::getQueryLog());
    }

   
}