Viewing file: PlanController.php (11.7 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\CustomerPlan; use App\Models\Plan; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB;
class PlanController extends Controller { public function index() {
return view('admin.plans.index'); }
public function getAll() {
$customers = auth()->user()->plans()->orderByDesc('created_at'); return datatables()->of($customers)
->addColumn('created_at', function ($q) { return $q->created_at->format('d-m-Y'); })
->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('capability', function ($q) { $meal_plan=''; $workout_plan=''; $live_support=''; if($q->meal_plan=='yes'){ $meal_plan='<span class="badge badge-success p-1">Meal Plan</span>'; } if($q->meal_plan=='yes'){ $workout_plan='<span class="badge badge-success p-1">Workout Plan</span>'; } if($q->meal_plan=='yes'){ $live_support='<span class="badge badge-success p-1">Live Support</span>'; }
return "<div>".$meal_plan.' '.$workout_plan.' '.$live_support."</div>"; }) ->addColumn('price', function ($q) { $price='<h class="mb-1">'.$q->price.'</h>'; $type='<h6><small>'.ucfirst($q->recurring_type).'</small></h6>'; return '<div>'.$price.$type.'</div>'; }) ->addColumn('action', function (Plan $q) { $deleteBtn = ''; if ($q->id != '1') { $deleteBtn = '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this plan?" data-action=' . route('admin.plans.destroy', [$q]) . ' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm" title="Delete"><i class="fa fa-trash"></i></button>'; }
return "<a class='btn btn-sm btn-info' href='" . route('admin.plans.edit', [$q->id]) . "' title='Edit'><i class='fa fa-pencil-alt'></i></a>" . ' ' . $deleteBtn; }) ->rawColumns(['action','title','capability','price','status']) ->toJson(); }
public function create() { $data['meal_plan']=[];
return view('admin.plans.create', $data); }
public function store(Request $request) { if (env("APP_DEMO")) { return redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]); } DB::beginTransaction(); try { $request->validate([ 'title' => 'required|unique:plans', 'price' => 'required|numeric', 'description' => 'required', ]);
unset($request['_token']);
if ($request->recurring_type == 'custom') { $date = explode('-', $request->custom_date); $dateField = [ 'to' => isset($date[0]) ? $date[0] : '', 'from' => isset($date[1]) ? $date[1] : '' ]; $request['custom_date'] = json_encode($dateField); }
if ($request->meal_plan == 'on') { $request['meal_plan'] = 'yes'; } else { $request['meal_plan'] = 'no'; }
if ($request->workout_plan == 'on') { $request['workout_plan'] = 'yes'; } else { $request['workout_plan'] = 'no'; }
if ($request->live_support == 'on') { $request['live_support'] = 'yes'; } else { $request['live_support'] = 'no'; }
$request['admin_id']=auth()->user()->id;
if($request->fields){ $request['details']=json_encode($request->fields); }
$data = collect($request->all())->filter(function ($value, $key) { return $value != null; })->toArray(); auth()->user()->plans()->create($data); DB::commit(); return redirect()->route('admin.plans.index')->with('success', 'Plan successfully created'); } catch (\Exception $ex) { DB::rollBack(); return redirect()->back()->withErrors(['failed' => $ex->getMessage()])->withInput($request->all()); } }
public function edit(Plan $plan) { $data['plan'] = $plan; $date = json_decode($plan->custom_date); if (isset($date)) { $data['date'] = $date->to . '-' . $date->from; } return view('admin.plans.edit', $data); }
public function update(Plan $plan, Request $request) { if (env("APP_DEMO")) { return redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]); } DB::beginTransaction(); try { $request->validate([ 'title' => 'required|unique:plans,title,' . $plan->id, 'price' => 'required|numeric', 'description' => 'required', 'recurring_type' => 'required|in:weekly,monthly,yearly,custom', ]);
unset($request['_token']);
if ($request->recurring_type == 'custom') { $date = explode('-', $request->custom_date); $dateField = [ 'to' => isset($date[0]) ? $date[0] : '', 'from' => isset($date[1]) ? $date[1] : '' ]; $request['custom_date'] = json_encode($dateField); }
if ($request->meal_plan == 'on') { $request['meal_plan'] = 'yes'; } else { $request['meal_plan'] = 'no'; }
if ($request->workout_plan == 'on') { $request['workout_plan'] = 'yes'; } else { $request['workout_plan'] = 'no'; }
if ($request->live_support == 'on') { $request['live_support'] = 'yes'; } else { $request['live_support'] = 'no'; }
if($request->fields){ $request['details']=json_encode($request->fields); } $plan->update($request->all());
DB::commit(); return redirect()->route('admin.plans.index')->with('success', 'Plan successfully updated'); } catch (\Exception $ex) { DB::rollBack(); return redirect()->back()->withErrors(['failed' => $ex->getMessage()])->withInput($request->all()); } }
public function requests() { return view('admin.plans.requests'); }
public function get_requests() { $adminPlans = auth()->user()->plans()->pluck('id'); $requests = auth()->user()->plan_requests()->whereIn('plan_id', $adminPlans)->orderByDesc('created_at'); return datatables()->of($requests) ->addColumn('title', function (BillingRequest $q) { return $q->plan->title; }) ->addColumn('price', function (BillingRequest $q) { return formatNumberWithCurrSymbol($q->plan->price); }) ->addColumn('transaction_id', function (BillingRequest $q) { return $q->transaction_id; }) ->addColumn('other_info', function (BillingRequest $q) { if ($q->other_info) { $array = (array)json_decode($q->other_info); $obj = json_encode(array_combine(array_map("ucfirst", array_keys($array)), array_values($array))); } else $obj = ""; return "<div class='show-more' style='max-width: 500px;white-space: pre-wrap'>" . str_replace(['_', '"', "{", "}"], [' ', ' ', '', ''], $obj) . "</div>"; }) ->addColumn('status', function (BillingRequest $q) { if ($q->status == 'accepted') { $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 (BillingRequest $q) { if ($q->status == 'pending') { return '<button class="mr-1 btn btn-sm btn-info" data-message="Are you sure you want to assign <b>\'' . $q->plan->title . '\'</b> to \'' . $q->customer->full_name . '\' ?" data-action=' . route('admin.customer.plan.change') . ' data-input={"id":"' . $q->plan_id . '","customer_id":"' . $q->customer_id . '","from":"request","billing_id":"' . $q->id . '","status":"accepted"} data-toggle="modal" data-target="#modal-confirm" title="Approved" ><i class="fa fa-check"></i></button>' . '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to reject <b>\'' . $q->plan->title . '\'</b> for \'' . $q->customer->full_name . '\' ?" data-action=' . route('admin.customer.plan.change') . ' data-input={"id":"' . $q->plan_id . '","customer_id":"' . $q->customer_id . '","from":"request","billing_id":"' . $q->id . '","status":"rejected"} data-toggle="modal" data-target="#modal-confirm" title="Reject" ><i class="fa fa-times"></button>'; } else if ($q->status == 'accepted') { return '<button class="mr-1 btn btn-sm btn-success disabled" disabled title="Approved" ><i class="fa fa-check"></i></button>'; } else { return '<button class="mr-1 btn btn-sm btn-danger disabled" disabled title="Reject" ><i class="fa fa-times"></button>'; } }) ->addColumn('customer', function (BillingRequest $q) { return "<a href='" . route('admin.customers.edit', [$q->customer_id]) . "'>" . $q->customer->full_name . "</a>"; }) ->rawColumns(['action', 'customer', 'other_info', 'status']) ->toJson(); }
public function destroy(Plan $plan) { if (env("APP_DEMO")) { return redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]); } $customerPlan = CustomerPlan::where('plan_id', $plan->id)->first(); $billingRequest = BillingRequest::where('plan_id', $plan->id)->first();
if ($customerPlan || $billingRequest) { return redirect()->route('admin.plans.index')->withErrors(['failed' => 'This plan already in used, You can\'n delete']); }
$plan->delete(); return redirect()->route('admin.plans.index')->with('success', 'Plan successfully delete'); } }
|