Viewing file: StepController.php (10.33 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\Step; use App\Models\StepDetail; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str;
class StepController extends Controller { public function index() {
return view('admin.step.index'); }
public function getAll(Request $request) { $steps = Step::orderByDesc('created_at');
return datatables()->of($steps)
->addColumn('design', function (Step $q) { $design = str_replace('_', '-', $q->design);
return $design; })
->addColumn('status', function (Step $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 (Step $q) {
$edit = '<a class="btn btn-info btn-sm" href="' . route('admin.step.edit', [$q]) . '">Edit</a>'; $delete = '<button class="btn btn-danger btn-sm ml-3" data-message="Are sure you want to delete this step?" data-action=' . route('admin.step.destroy', [$q]) . ' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm">Delete</button>';
return $edit . $delete; }) ->rawColumns(['action', 'status', 'design']) ->toJson(); }
public function create() {
return view('admin.step.create'); }
public function store(Request $request) {
$request->validate([ 'title' => 'required', 'step_number' => 'required|unique:steps', 'design_name' => 'required', ]);
$step = new Step(); $step->step_number = $request->step_number; $step->title = $request->title; $step->sub_title = $request->sub_title; $step->non_sub_title = $request->non_sub_title; $step->design = $request->design_name; $step->save();
return redirect()->route('admin.step.edit', $step); }
public function edit(Step $step) {
$data['step'] = $step; $data['check_box_details']=$step->step_details()->where('type', 'checkbox')->get(); $data['slider_details']=$step->step_details()->where('type', 'slider')->get(); $data['inputs_details']=$step->step_details()->where('type', 'input')->get(); $data['weight_details']=$step->step_details()->where('type', 'input')->get(); $data['radio_details']=$step->step_details()->where('type', 'radio')->get();
return view('admin.step.create', $data); }
public function update(Step $step, Request $request) {
DB::beginTransaction();
try {
if ($step->step_details) { $step->step_details()->delete(); }
if ($step->design == 'design_one' || $step->design == 'design_six'|| $step->design == 'design_four') { $this->saveDesignOne($request, $step); }
if ($step->design == 'design_five') { $this->saveDesignFive($request, $step); }
if ($step->design == 'design_nine') { $this->saveDesignFive($request, $step); }
if ($step->design == 'design_two' || $step->design == 'design_eight') { $this->saveDesignTwo($request, $step); }
if ($step->design == 'design_three' || $step->design == 'design_seven') { $this->saveDesignThree($request, $step); }
DB::commit(); return redirect()->route('admin.step.index')->with('success', trans('Step successfully updated')); } catch (\Exception $ex) {
DB::rollBack(); return redirect()->route('admin.step.index')->withErrors(['failed'=>$ex->getMessage()]); } }
public function destroy(Step $step) {
if ($step->step_details) { $step->step_details()->delete(); }
$step->delete();
return redirect()->route('admin.step.index')->with('success', trans('Step successfully delete')); }
function saveDesignOne($request, $step) {
foreach ($request->checkbox_title as $key => $title) { $str_rand = Str::random(5);
if (isset($request->checkbox_image[$key]) && $request->checkbox_image[$key]) { $file = $request->file('checkbox_image')[$key]; $imageName = time() . $str_rand . '-' . $key . '.' . $file->getClientOriginalExtension(); $file->move(public_path('/uploads/'), $imageName); $request['image'] = $imageName; } else if (isset($request->pre_checkbox_image[$key]) && $request->pre_checkbox_image[$key]) { $request['image'] = $request->pre_checkbox_image[$key]; } else { $request['image'] = ''; } $request['title'] = $title; $request['description'] = isset($request->checkbox_des_value[$key]) ? $request->checkbox_des_value[$key] : ''; $request['value'] = isset($request->checkbox_value[$key]) ? $request->checkbox_value[$key] : '';
$request_data = $request->only('image', 'title', 'value','description');
$step_details = new StepDetail(); $step_details->step_id = $step->id; $step_details->type = 'checkbox'; $step_details->value = json_encode($request_data); $step_details->save(); } }
function saveDesignTwo($request, $step) {
//TODO::Save Slider data in StepDetails if ($request->slider_title) { foreach ($request->slider_title as $key => $slider_title) { $str_rand = Str::random(5); if (isset($request->slider_image[$key]) && $request->slider_image[$key]) { $file = $request->file('slider_image')[$key]; $imageName = time() . $str_rand . '-' . $key . '.' . $file->getClientOriginalExtension(); $file->move(public_path('/uploads/'), $imageName); $request['image'] = $imageName; }else if (isset($request->pre_slider_image[$key]) && $request->pre_slider_image[$key]) { $request['image'] = $request->pre_slider_image[$key]; } else { $request['image'] = ''; } $request['title'] = $slider_title; $request['value'] = isset($request->slider_value[$key]) ? $request->slider_value[$key] : ''; $request['t_title'] = isset($request->text_title[$key]) ? $request->text_title[$key] : ''; $request['t_description'] = isset($request->text_description[$key]) ? $request->text_description[$key] : '';
$request_data = $request->only('image', 'title', 'value','t_title','t_description');
$step_details = new StepDetail(); $step_details->step_id = $step->id; $step_details->type = 'slider'; $step_details->value = json_encode($request_data); $step_details->save(); } }
}
function saveDesignThree($request, $step) {
//TODO::Save InputsType data in StepDetails if ($request->input_title) { foreach ($request->input_title as $key => $title) {
$request['title'] = $title; $request['value'] = isset($request->input_value[$key]) ? $request->input_value[$key] : ''; $request['min'] = isset($request->input_min[$key]) ? $request->input_min[$key] : ''; $request['max'] = isset($request->input_max[$key]) ? $request->input_max[$key] : ''; $request['group'] = isset($request->input_group[$key]) ? $request->input_group[$key] : '';
$request_data = $request->only('min', 'title', 'value','max', 'group');
$step_details = new StepDetail(); $step_details->step_id = $step->id; $step_details->type = 'input'; $step_details->value = json_encode($request_data); $step_details->save(); } }
}
function saveDesignFive($request, $step) {
foreach ($request->radio_title as $key => $title) {
$request['title'] = $title; $request['value'] = isset($request->radio_value[$key]) ? $request->radio_value[$key] : ''; $request['description'] = isset($request->radio_description[$key]) ? $request->radio_description[$key] : '';
$request_data = $request->only('title', 'value','description');
$step_details = new StepDetail(); $step_details->step_id = $step->id; $step_details->type = 'radio'; $step_details->value = json_encode($request_data); $step_details->save(); } }
function saveDesignSaven($request, $step) {
//TODO::Save InputsType data in StepDetails if ($request->input_title) { foreach ($request->input_title as $key => $title) {
$request['title'] = $title; $request['value'] = isset($request->input_value[$key]) ? $request->input_value[$key] : ''; $request['min'] = isset($request->input_min[$key]) ? $request->input_min[$key] : ''; $request['max'] = isset($request->input_max[$key]) ? $request->input_max[$key] : ''; $request['group'] = isset($request->input_group[$key]) ? $request->input_group[$key] : '';
$request_data = $request->only('min', 'title', 'value','max', 'group');
$step_details = new StepDetail(); $step_details->step_id = $step->id; $step_details->type = 'input'; $step_details->value = json_encode($request_data); $step_details->save(); } }
}
}
|