One Hat Cyber Team
Your IP :
18.188.93.255
Server IP :
192.145.235.60
Server :
Linux ngx365.inmotionhosting.com 5.14.0-427.33.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 30 09:45:56 EDT 2024 x86_64
Server Software :
Apache
PHP Version :
8.2.27
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
centos12
/
www
/
centosuit
/
app
/
Http
/
Controllers
/
View File Name :
CustomFieldController.php
<?php namespace App\Http\Controllers; use App\Helper\Reply; use App\Models\CustomField; use App\Models\CustomFieldGroup; use Yajra\DataTables\Facades\DataTables; use App\Http\Requests\CustomField\StoreCustomField; use App\Http\Requests\CustomField\UpdateCustomField; class CustomFieldController extends AccountBaseController { public function __construct() { parent::__construct(); $this->pageTitle = 'app.menu.customFields'; $this->activeSettingMenu = 'custom_fields'; $this->middleware(function ($request, $next) { abort_403(user()->permission('manage_custom_field_setting') !== 'all'); return $next($request); }); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $this->customFields = CustomField::join('custom_field_groups', 'custom_field_groups.id', '=', 'custom_fields.custom_field_group_id') ->select('custom_fields.id', 'custom_field_groups.name as module', 'custom_fields.label', 'custom_fields.type', 'custom_fields.values', 'custom_fields.required', 'custom_fields.export', 'custom_fields.visible') ->get(); $this->groupedCustomFields = $this->customFields->groupBy('module'); return view('custom-fields.index', $this->data); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $this->customFieldGroups = CustomFieldGroup::all(); $this->types = ['text', 'number', 'password', 'textarea', 'select', 'radio', 'date', 'checkbox', 'file']; return view('custom-fields.create-custom-field-modal', $this->data); } /** * @param StoreCustomField $request * @return array */ public function store(StoreCustomField $request) { $name = CustomField::generateUniqueSlug($request->get('label'), $request->module); $group = [ 'fields' => [ [ 'name' => $name, 'custom_field_group_id' => $request->module, 'label' => $request->get('label'), 'type' => $request->get('type'), 'required' => $request->get('required'), 'values' => $request->get('value'), 'export' => $request->get('export'), 'visible' => $request->get('visible'), ] ], ]; $this->addCustomField($group); return Reply::success('messages.recordSaved'); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $this->field = CustomField::findOrFail($id); $this->field->values = json_decode($this->field->values); return view('custom-fields.edit-custom-field-modal', $this->data); } /** * Update the specified resource in storage. * * @param UpdateCustomField $request */ public function update(UpdateCustomField $request, $id) { $field = CustomField::findOrFail($id); $name = CustomField::generateUniqueSlug($request->label, $field->custom_field_group_id); $field->label = $request->label; $field->name = $name; $field->values = json_encode($request->value); $field->required = $request->required; $field->export = $request->export; $field->visible = $request->visible; $field->save(); return Reply::success('messages.updateSuccess'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // Find the custom field $field = CustomField::findOrFail($id); $module = $field->fieldGroup->name; // Delete the custom field $field->delete(); // Fetch the updated count for the module $updatedCount = CustomField::whereHas('fieldGroup', function ($query) use ($module) { $query->where('name', $module); })->count(); return Reply::successWithData(__('messages.deleteSuccess'), ['updatedCount' => $updatedCount]); } private function addCustomField($group) { // Add Custom Fields for this group foreach ($group['fields'] as $field) { $insertData = [ 'custom_field_group_id' => $field['custom_field_group_id'], 'label' => $field['label'], 'name' => $field['name'], 'type' => $field['type'], 'export' => $field['export'], 'visible' => $field['visible'] ]; if (isset($field['required']) && (in_array($field['required'], ['yes', 'on', 1]))) { $insertData['required'] = 'yes'; } else { $insertData['required'] = 'no'; } // Single value should be stored as text (multi value JSON encoded) if (isset($field['values'])) { if (is_array($field['values'])) { $insertData['values'] = \GuzzleHttp\json_encode($field['values']); } else { $insertData['values'] = $field['values']; } } CustomField::create($insertData); } } }