Viewing file: OrderRequestController.php (8.43 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\CustomerWallet; use App\Models\Order; use App\Models\OrderDetails; use App\Models\Transaction; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB;
class OrderRequestController extends Controller { public function order(){ return view('admin.order_request.index'); } public function getAll() { $orders = Order::with(['customer','orderdetails','service'])->orderBy('created_at', 'DESC')->select(['id','customer_id','status']); return datatables()->of($orders) ->addColumn('name', function ($q) {
return isset($q->customer)?$q->customer->full_name:''; }) ->addColumn('order_basic_details', 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('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('action',function($q){ if ($q->status == 'pending'){ return'<button data-order="'. $q->id .'" class="btn btn-sm btn-info massOrderModal" data-action='.route('admin.order.request.status',['id'=>$q]).' title="Approved" ><i class="fa fa-check-circle"></i></button>'. '<button class="btn btn-sm btn-danger ml-2" data-message="Are you sure you want to rejected this order?" data-action='.route('admin.order.request.status',['id'=>$q,'status'=>'rejected']).' data-input={"_method":"post"} data-toggle="modal" data-target="#modal-confirm" data-toggle="tooltip" data-placement="right" title="Rejected"><i class="fa fa-times-circle"></i></button>' ; }elseif ($q->status == 'processing' || $q->status == 'inProgress' || $q->status == 'partial'){ return'<button class="btn btn-sm btn-info massOrderModal" data-action='.route('admin.order.request.status',['id'=>$q]).' data-order="'. $q->id .'" title="Approved" ><i class="fa fa-check-circle"></i></button>'; } else{ return'<button class="btn btn-sm btn-info" data-message="Are you sure you want to approved this order?" data-input={"_method":"get"} data-toggle="modal" data-target="#modal-confirm" data-toggle="tooltip" data-placement="right" title="Approved" disabled><i class="fa fa-check-circle"></i></button>'. '<button class="btn btn-sm btn-danger ml-2" data-message="Are you sure you want to rejected this order?" data-input={"_method":"get"} data-toggle="modal" data-target="#modal-confirm" data-toggle="tooltip" data-placement="right" title="Rejected" disabled><i class="fa fa-times-circle"></i></button>' ;; } }) ->rawColumns(['action','status','order_basic_details']) ->toJson(); }
public function orderStatusChange(Request $request){ if ($request->status == 'rejected') { $request->validate([ 'id' => 'required|numeric', 'status' => 'required|in:processing,inprogress,completed,partial,rejected', ]); }else{ $request->validate([ 'id' => 'required|numeric', 'status' => 'required|in:processing,inprogress,completed,partial,rejected', 'order_counter' => 'required|numeric' ]); } $order = Order::where('id',$request->id)->firstOrfail(); if ($request->status == 'rejected'){ $charges = $order->orderdetails->sum('charges'); $order->update(['status'=>$request->status]); $wallet = CustomerWallet::where('customer_id',$order->customer_id)->firstOrFail(); $wallet->update(['amount'=>$wallet->amount + $charges]); Transaction::create([ 'customer_id'=> auth('customer')->user()->id, 'amount'=> $charges, 'payment_type'=> 'offline', 'type'=> 'credit', 'payment_status'=> 'paid', 'status'=> 'approved', ]);
}else{ DB::beginTransaction(); try { $orderDetails = OrderDetails::where('order_id',$order->id)->where('service_id', $request->service_id)->firstOrFail();; if ($orderDetails->order_quantity < $request->order_counter+$orderDetails->counter ){ return redirect()->back()->withErrors(['msg' => trans('admin.order_approved_limit')]); } if (!isset($order->customer) || !isset($order->customer->wallet)){ abort(404); } $order->update(['status'=>$request->status]);
$orderDetails->update(['counter'=>$orderDetails->counter + $request->order_counter]); cache()->forget('pending_order_request'); DB::commit(); } catch (\Exception $ex) { DB::rollback(); return redirect()->back()->withErrors(['msg' => $ex->getMessage()]); } }
return back()->with('success', 'Mass Order status successfully updated'); }
public function orderService(Request $request){
$orderDetails = OrderDetails::with(['service'])->where('order_id',$request->id)->get();
$order = []; foreach ($orderDetails as $details){ $order[] = [ 'id'=> $details->id, 'service_id'=> $details->service_id, 'name'=>$details->service->name, 'order_quantity'=>$details->order_quantity, 'charges'=>$details->charges, 'link'=>$details->link, 'counter'=>$details->counter, ]; } return response()->json(['status'=>'success','data'=>$order]); }
}
|