Current File : /home/inlingua/public_html/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());
}
}