Viewing file: WhatsAppNumberController.php (8.55 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\Number; use App\Models\NumberRequest; use App\Models\WhatsAppNumber; use App\Models\WhatsAppNumberRequest; use Carbon\Carbon; use Illuminate\Http\Request;
class WhatsAppNumberController extends Controller { public function index(){ return view('admin.whatsapp_number.index'); }
public function getAll(){ $customers=auth()->user()->whatsapp_numbers()->select(['id','number','dynamic_gateway_id','purchase_price','sell_price','status','created_at']); return datatables()->of($customers) ->addColumn('created_at',function($q){ return $q->created_at->format('d-m-Y'); }) ->addColumn('from',function($q){ $gateway=$q->gateway->name; return $gateway; }) ->addColumn('purchase_price',function($q){ return formatNumberWithCurrSymbol($q->purchase_price); }) ->addColumn('sell_price',function($q){ return formatNumberWithCurrSymbol($q->sell_price); }) ->addColumn('status',function($q){ if($q->status=='active') { $status= '<strong class="text-white bg-success px-2 py-1 rounded status-font-size"> '.ucfirst($q->status).' </strong>'; }else{ $status= '<strong class="text-white bg-danger px-2 py-1 rounded status-font-size"> '.ucfirst($q->status).' </strong>'; } return $status; })
->addColumn('action',function($q){ return "<a class='btn btn-sm btn-info' href='".route('admin.whatsapp-number.edit',[$q])."' title='Edit'><i class='fa fa-pencil-alt'></i></a> ". '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this whats-app number?" data-action='.route('admin.whatsapp-number.destroy',[$q]).' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm" title="Delete"><i class="fa fa-trash"></i></button>' ; }) ->rawColumns(['action','status','from','purchase_price','sell_price']) ->toJson(); } public function create(){ $data['gateways']=auth()->user()->gateways()->where('status', 'active')->get();
return view('admin.whatsapp_number.create', $data); }
public function store(Request $request){ $request->validate([ 'number'=>'required|unique:numbers|regex:/^[0-9\-\+]{9,15}$/', 'dynamic_gateway_id'=>'required', 'purchase_price'=>'required|numeric', 'sell_price'=>'required|numeric', 'status'=>'required|in:active,inactive' ]);
auth()->user()->whatsapp_numbers()->create($request->all());
return back()->with('success',trans('admin.message.whatsapp_number_create')); }
public function edit(WhatsAppNumber $whatsapp_number){ $data['number']=$whatsapp_number; $data['gateways']=auth()->user()->gateways()->where('status', 'active')->get(); return view('admin.whatsapp_number.edit',$data); }
public function update(WhatsAppNumber $whatsapp_number,Request $request){ $request->validate([ 'purchase_price'=>'required|numeric', 'sell_price'=>'required|numeric', 'status'=>'required|in:active,inactive' ]);
$valid_data=$request->only('purchase_price','sell_price','status');
//update the model $whatsapp_number->update($valid_data);
return redirect()->route('admin.whatsapp-number.index')->with('success', trans('admin.message.whatsapp_number_update')); }
public function requests(){ return view('admin.whatsapp_number.request'); }
public function get_requests() { $requests=auth()->user()->whatsapp_number_requests;
return datatables()->of($requests) ->addColumn('customer',function($q){ return "<a href='" . route('admin.customers.edit', [$q->customer_id]) . "'>".$q->customer->full_name."</a>"; }) ->addColumn('number',function($q){ return $q->whatsapp_number->number; }) ->addColumn('from',function($q){ return $q->whatsapp_number->gateway->name; }) ->addColumn('purchase_price',function($q){ return $q->whatsapp_number->purchase_price; }) ->addColumn('sell_price',function($q){ return $q->whatsapp_number->sell_price; }) ->addColumn('status',function($q){ if ($q->status=='pending') { $status = '<strong class="text-white bg-primary px-2 py-1 rounded status-font-size"> ' . ucfirst($q->status) . ' </strong>'; }elseif ($q->status=='approved'){ $status = '<strong class="text-white bg-success px-2 py-1 rounded status-font-size"> ' . ucfirst($q->status) . ' </strong>'; }else{ $status= '<strong class="text-white bg-danger px-2 py-1 rounded status-font-size"> '.ucfirst($q->status).' </strong>'; } return $status; }) ->addColumn('action',function(WhatsAppNumberRequest $q){ return '<button class="mr-1 btn btn-sm btn-info" data-message="Are you sure you want to add <b>\''.$q->whatsapp_number->number.'\'</b> to \''.$q->customer->full_name.'\' ?" data-action='.route('admin.whatsapp.number.requests.response').' data-input={"id":"'.$q->id.'","status":"accepted"} data-toggle="modal" data-target="#modal-confirm" title="Approveed"><i class="fa fa-check"></i></button>'. '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to reject the request ?" data-action='.route('admin.whatsapp.number.requests.response').' data-input={"id":"'.$q->id.'","status":"rejected"} data-toggle="modal" data-target="#modal-confirm" title="Rejected"><i class="fa fa-times"></i></button>'; }) ->rawColumns(['action','customer','status']) ->toJson(); }
public function request_response(Request $request){ $this->validate($request, [ 'id' => 'required', 'status' => 'required|in:accepted,rejected', ]); $number_request = auth()->user()->whatsapp_number_requests()->where('id', $request->id)->first(); if (!$number_request) return back()->with('fail', trans('admin.message.request_not_found'));
if($number_request->status!='pending') return back()->with('fail', trans('admin.message.request_not_pending'));
$customer = auth()->user()->customers()->where('id', $number_request->customer_id)->first(); if (!$customer) return back()->with('fail', trans('admin.message.customer_not_found'));
$number = WhatsAppNumber::find($number_request->number_id); if (!$number) return back()->with('fail', trans('admin.message.wh_number_not_found'));
$isAssigned = $customer->whatsapp_numbers()->where('number_id', $number->id)->first(); if ($isAssigned) return back()->with('fail', trans('admin.message.wh_number_already_assigned'));
$number_request->status=$request->status; $number_request->save();
if($request->status=='rejected') return back()->with('success', trans('admin.message.wh_request_rejected'));
$time = Carbon::now()->addMonths(1); $customer->whatsapp_numbers()->create(['number_id' => $number->id,'dynamic_gateway_id'=>$number->dynamic_gateway_id ,'number' => $number->number,'expire_date' => $time, 'cost' => $number->sell_price]);
return back()->with('success', trans('admin.message.wa_number_successfully_added')); }
public function destroy(WhatsAppNumber $whatsapp_number){ if($whatsapp_number->customer_whatsapp_numbers){ return back()->with('fail', trans('admin.message.wh_number_already_used')); } $whatsapp_number->delete(); return redirect()->route('admin.whatsapp-number.index')->with('success', trans('admin.message.wh_number_deleted')); } }
|