Viewing file: NumberController.php (6.28 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\BillingRequest; use App\Models\Customer; use App\Models\Number; use App\Models\NumberRequest; use Carbon\Carbon; use Illuminate\Http\Request;
class NumberController extends Controller { public function index(){ return view('admin.numbers.index'); }
public function getAll(){ $customers=auth()->user()->numbers()->select(['id','number','from','purch_price','sell_price','status','created_at']); return datatables()->of($customers) ->addColumn('created_at',function($q){ return $q->created_at->format('d-m-Y'); }) ->addColumn('action',function($q){ return "<a class='btn btn-sm btn-info' href='".route('admin.numbers.edit',[$q->id])."'>Edit</a> ". '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this number?" data-action='.route('admin.numbers.destroy',[$q]).' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm">Delete</button>' ; }) ->rawColumns(['action']) ->toJson(); } public function create(){ return view('admin.numbers.create'); }
public function store(Request $request){ $request->validate([ 'number'=>'required|unique:numbers|regex:/^[0-9\-\+]{9,15}$/', 'from'=>'required|in:signalwire,twilio,nexmo,telnyx,plivo,africastalking,nrs,message_bird,infobip,cheapglobalsms,plivo_powerpack,easysendsms,twilio_copilot,twilio_copilot,bulksms,ones_two_u,clickatel,route_mobile,hutch', 'purch_price'=>'required|numeric', 'sell_price'=>'required|numeric', 'status'=>'required|in:active,inactive' ]);
auth()->user()->numbers()->create($request->all());
return back()->with('success','Number successfully created'); }
public function edit(Number $number){ $data['number']=$number; return view('admin.numbers.edit',$data); }
public function update(Number $number,Request $request){ $request->validate([ 'purch_price'=>'required|numeric', 'sell_price'=>'required|numeric', 'status'=>'required|in:active,inactive' ]);
$valid_data=$request->only('purch_price','sell_price','status');
//update the model $number->update($valid_data);
return back()->with('success','Number successfully updated'); }
public function requests(){ return view('admin.numbers.requests'); }
public function get_requests() { $requests=auth()->user()->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->number->number; }) ->addColumn('from',function($q){ return $q->number->from; }) ->addColumn('purch_price',function($q){ return $q->number->purch_price; }) ->addColumn('sell_price',function($q){ return $q->number->sell_price; }) ->addColumn('status',function($q){ return $q->status; }) ->addColumn('action',function(NumberRequest $q){ return '<button class="mr-1 btn btn-sm btn-info" data-message="Are you sure you want to add <b>\''.$q->number->number.'\'</b> to \''.$q->customer->full_name.'\' ?" data-action='.route('admin.number.requests.response').' data-input={"id":"'.$q->id.'","status":"accepted"} data-toggle="modal" data-target="#modal-confirm" >Approve</button>'. '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to reject the request ?" data-action='.route('admin.number.requests.response').' data-input={"id":"'.$q->id.'","status":"rejected"} data-toggle="modal" data-target="#modal-confirm" >Reject</button>'; }) ->rawColumns(['action','customer']) ->toJson(); }
public function request_response(Request $request){ $this->validate($request, [ 'id' => 'required', 'status' => 'required|in:accepted,rejected', ]); $number_request = auth()->user()->number_requests()->where('id', $request->id)->first(); if (!$number_request) return back()->with('fail', 'Request not found');
if($number_request->status!='pending') return back()->with('fail', 'Request is not pending');
$customer = auth()->user()->customers()->where('id', $number_request->customer_id)->first(); if (!$customer) return back()->with('fail', 'Customer not found');
$number = Number::find($number_request->number_id); if (!$number) return back()->with('fail', 'Number not found');
$isAssigned = $customer->numbers()->where('number_id', $number->id)->first(); if ($isAssigned) return back()->with('fail', 'Number already assigned to this customer');
$number_request->status=$request->status; $number_request->save();
if($request->status=='rejected') return back()->with('success', 'Request successfully rejected for the customer');
$time = Carbon::now()->addMonths(1); $customer->numbers()->create(['number_id' => $number->id, 'number' => $number->number,'expire_date' => $time, 'cost' => $number->sell_price]);
return back()->with('success', 'Number successfully added to the customer'); }
public function destroy(Number $number){ if($number->customer_numbers->isNotEmpty()){ return back()->with('fail','Sorry number is already in used'); } $number->delete(); return back()->with('success','Number successfully deleted'); }
}
|