Viewing file: ReportController.php (7.34 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Models\Customer; use App\Models\Order; use App\Models\Transaction; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB;
class ReportController extends Controller {
public function order_list(){ $data['customers'] = Customer::where('status','active')->get(); return view('admin.report.order',$data); }
public function transaction_list(){ $data['customers'] = Customer::where('status','active')->select('id','email')->get(); return view('admin.report.transaction',$data); } public function getAllOrder(Request $request){
$orders = Order::with(['customer','orderdetails.service'])->orderBy('created_at', 'DESC')->select('status','customer_id','created_at','id');
if ($request->date){ $startAndEndDate = explode(' - ', $request->date); $start_date = isset($startAndEndDate[0]) ? $startAndEndDate[0] : Carbon::now(); $end_date = isset($startAndEndDate[1]) ? $startAndEndDate[1] : Carbon::now(); $newStartDay = new \DateTime($start_date); $newEndDay = new \DateTime($end_date); $orders->whereBetween('created_at',[$newStartDay,$newEndDay]); } if ($request->customer_id){ $orders->where('customer_id', $request->customer_id); } if ($request->status){ $orders->where('status', $request->status); }
return datatables()->of($orders) ->addColumn('profile', function ($q) {
$profile = '<p class="text-bold user-name-customize">'.isset($q->customer)?$q->customer->full_name:''.'</p>'. '<span>'."isset($q->customer)?$q->customer->email:''".'</span>';
return $profile; }) ->addColumn('services', function ($q) { $service = ''; foreach ($q->orderdetails as $detail){ $remains = $detail->order_quantity - $detail->counter; $service .= '<div id="accordion"> <div class="card"> <div class="card-header" id="headingOne"> <h5 class="mb-0"> <button class="btn btn-link" data-toggle="collapse" data-target="#collapse'.$detail->id.'" aria-expanded="true" aria-controls="collapse'.$detail->id.'"> '.$detail->service->name.' <i class="fas fa-angle-down ml-3"></i> </button> </h5> </div> <div id="collapse'.$detail->id.'" class="collapse" aria-labelledby="headingOne" data-parent="#accordion"> <div class="card-body"> <ul> <li>Link: '.$detail->link.'</li> <li>Quantity: '.$detail->order_quantity.'</li> <li>Charges: '.formatNumberWithCurrSymbol($detail->charges).'</li> <li>Start Counter: '.$detail->counter.'</li> <li>Remains: '.$remains.'</li> </ul> </div> </div> </div> </div>'; } return $service; }) ->addColumn('order_quantity', function ($q) { $order_quantity=''; foreach ($q->orderdetails as $detail){
$order_quantity .= '<span>'.$detail->order_quantity.'</span> <br>'; } return $order_quantity; }) ->addColumn('charges', function ($q) { $charges = ''; foreach ($q->orderdetails as $detail){ $charges .= '<span>'.formatNumberWithCurrSymbol($detail->charges).'</span> <br>'; } return $charges; }) ->addColumn('status', function ($q) {
if($q->status=='pending'){ $status='<span class="badge bg-green">'.ucfirst($q->status).'</span>'; }elseif ($q->status=='processing' || $q->status == 'inProgress' || $q->status == 'partial'){ $status='<span class="badge bg-primary">'.ucfirst($q->status).'</span>'; }elseif ($q->status=='rejected' || $q->status=='cancelled' || $q->status=='refund'){ $status='<span class="badge bg-danger">'.ucfirst($q->status).'</span>'; }else{ $status='<span class="badge bg-green">'.ucfirst($q->status).'</span>'; } return $status; }) ->addColumn('created_at', function ($q) {
return formatDate($q->created_at); }) ->rawColumns(['profile','status','services','order_quantity','charges']) ->toJson(); }
public function getAllTransaction(Request $request){
$transaction = Transaction::orderBy('created_at','desc')->with(['customer'])->select('status','payment_type','type','amount','customer_id','created_at');
if ($request->date){ $startAndEndDate = explode(' - ', $request->date); $start_date = isset($startAndEndDate[0]) ? $startAndEndDate[0] : Carbon::now(); $end_date = isset($startAndEndDate[1]) ? $startAndEndDate[1] : Carbon::now(); $newStartDay = new \DateTime($start_date); $newEndDay = new \DateTime($end_date); $transaction = $transaction->whereBetween('created_at',[$newStartDay,$newEndDay]);
} if($request->customer_id){ $transaction = $transaction->where('customer_id',$request->customer_id); } if($request->type){ $transaction = $transaction->where('type',$request->type); }
return datatables()->of($transaction) ->addColumn('profile', function ($q) {
$profile = '<p class="text-bold user-name-customize">'.isset($q->customer)?$q->customer->full_name:''.'</p>'. '<span>'."isset($q->customer)?$q->customer->email:''".'</span>'; return $profile; }) ->addColumn('payment_type', function ($q) {
return ucfirst($q->payment_type); }) ->addColumn('type', function ($q) {
if($q->type == 'add' || $q->type == 'deposit'){
$type = '<strong class="badge bg-primary">'.ucfirst($q->type).'</strong>'; }else{ $type = '<strong class="badge bg-danger">'.ucfirst($q->type).'</strong>'; } return $type; }) ->addColumn('amount', function ($q) {
return formatNumberWithCurrSymbol($q->amount); }) ->addColumn('created_at', function ($q) {
return formatDate($q->created_at); }) ->rawColumns(['profile','type']) ->toJson(); }
}
|