Viewing file: FormController.php (6.18 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Customer;
use App\Http\Controllers\Controller;
use App\Models\Form;
use App\Models\FormDetail;
use Illuminate\Http\Request;
class FormController extends Controller
{
public function index()
{
return view('customer.form.index');
}
public function create()
{
return view('customer.form.create');
}
public function store(Request $request)
{
if (config("app.demo")){
return redirect()->back()->withErrors(['message' => trans('admin.app_demo_message')]);
}
$request->validate([
'input_name.*' => 'required',
'input_label.*' => 'required',
'input_type.*' => 'required|in:checkbox,input,textarea,radio',
'title' => 'required',
]);
$form = auth('customer')->user()->forms()->create($request->only('title'));
$inputs = [];
foreach ($request->input_name as $key => $input_name) {
$inputs [] = [
'input_name' => $input_name,
'input_type' => $request->input_type[$key],
'input_label' => $request->input_label[$key],
'form_id' => $form->id,
];
}
auth('customer')->user()->form_details()->createMany($inputs);
return back()->with('success', 'Form successfully created');
}
public function getAll()
{
$form = auth('customer')->user()->forms()->select(['id', 'title', 'created_at']);
return datatables()->of($form)
->addColumn('created_at', function ($q) {
return $q->created_at->format('Y-m-d');
})
->addColumn('action', function ($q) {
return "<a class='btn btn-sm btn-info' href='" . route('customer.forms.edit', [$q]) . "'>Edit</a> <a class='btn btn-sm btn-secondary' target='_blank' href='" . route('view', [$q]) . "'>View</a> <a class='btn btn-sm btn-dark' href='" . route('customer.form.form.data', [$q]) . "'>Data</a> " .
'<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this add form?"
data-action=' . route('customer.forms.destroy', [$q]) . '
data-input={"_method":"delete"}
data-toggle="modal" data-target="#modal-confirm">Delete</button>';
})
->rawColumns(['action'])
->toJson();
}
public function show()
{
}
public function edit(Form $form)
{
if (auth('customer')->user()->id != $form->user_id) {
abort(404);
}
$data['form'] = $form;
$data['form_details'] = auth('customer')->user()->form_details()->where('form_id', $form->id)->get();
return view('customer.form.edit', $data);
}
public function update(Form $form, Request $request)
{
if (config("app.demo")){
return redirect()->back()->withErrors(['message' => trans('admin.app_demo_message')]);
}
$request->validate([
'input_name.*' => 'required',
'input_label.*' => 'required',
'input_type.*' => 'required|in:checkbox,input,textarea,radio',
'title' => 'required',
]);
if (auth('customer')->user()->id != $form->user_id) {
abort(404);
}
$form->update($request->only('title'));
auth('customer')->user()->form_details()->where('form_id', $form->id)->delete();
$inputs = [];
foreach ($request->input_name as $key => $input_name) {
$inputs [] = [
'input_name' => $input_name,
'input_type' => $request->input_type[$key],
'input_label' => $request->input_label[$key],
'form_id' => $form->id,
];
}
auth('customer')->user()->form_details()->createMany($inputs);
return redirect()->route('customer.forms.index')->with('success', 'Form successfully update');
}
public function view($id)
{
$data['form'] = Form::where('id', $id)->firstOrfail();
$data['form_details'] = FormDetail::where('form_id', $id)->get();
return view('customer.form.view', $data);
}
public function view_form_store(Request $request)
{
$forms = auth('customer')->user()->forms()->where('id', $request->form_id)->first();
if (!$forms) {
abort(404);
}
$form_data = json_encode($request->except(['_token', 'form_id']));
auth('customer')->user()->form_datas()->create(['form_id' => $forms->id, 'form_name' => $forms->title, 'value' => $form_data,]);
return back()->with('success', 'Form successfully submit');
}
public function form_data($id)
{
if (!$id) {
abort(404);
}
$form_datas = auth('customer')->user()->form_datas()->where('form_id', $id)->get(['id', 'value']);
$data['form_details'] = auth('customer')->user()->form_details()->where('form_id', $id)->get();
$form_details = [];
foreach ($form_datas as $form_data) {
$get_result_arr = json_decode($form_data->value, true);
$form_details[] = [
'value' => $get_result_arr,
'id' => $form_data->id
];
}
$data['form_datas'] = $form_details;
return view('customer.form.form_data_index', $data);
}
public function form_data_delete($id)
{
if (!$id) {
abort(404);
}
auth('customer')->user()->form_datas()->where('id', $id)->delete();
return back()->with('success', 'Form data successfully deleted');
}
public function destroy(Form $form)
{
if (auth('customer')->user()->id != $form->user_id) {
abort(404);
}
auth('customer')->user()->form_details()->where('form_id', $form->id)->delete();
$form->delete();
return back()->with('success', 'Form successfully deleted');
}
}
|