] * @author [Josh Gibson] */ class CustomFieldsetsController extends Controller { /** * List Fieldsets * * @group Custom Fields * @subgroup Custom Fieldsets * @author [A. Gianotto] [] * @author [Josh Gibson] * @param int $id * @since [v1.8] */ public function index() : array { $this->authorize('index', CustomField::class); $fieldsets = CustomFieldset::withCount('fields as fields_count', 'models as models_count')->get(); return (new CustomFieldsetsTransformer)->transformCustomFieldsets($fieldsets, $fieldsets->count()); } /** * Show Fieldset and Fields * * @group Custom Fields * @subgroup Custom Fieldsets * @param int $id * @author [Josh Gibson] * @author [A. Gianotto] [] * @since [v1.8] */ public function show($id) : JsonResponse | array { $this->authorize('view', CustomField::class); if ($fieldset = CustomFieldset::find($id)) { return (new CustomFieldsetsTransformer)->transformCustomFieldset($fieldset); } return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/custom_fields/message.fieldset.does_not_exist')), 200); } /** * Update Fieldset * * @group Custom Fields * @subgroup Custom Fieldsets * @param \Illuminate\Http\Request $request * @param int $id *@author [A. Gianotto] [] * @since [v4.0] */ public function update(Request $request, $id) : JsonResponse { $this->authorize('update', CustomField::class); $fieldset = CustomFieldset::findOrFail($id); $fieldset->fill($request->all()); if ($fieldset->save()) { return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.update.success'))); } return response()->json(Helper::formatStandardApiResponse('error', null, $fieldset->getErrors())); } /** * Create Fieldset * * @group Custom Fields * @subgroup Custom Fieldsets * @param \Illuminate\Http\Request $request *@since [v4.0] * @author [A. Gianotto] [] */ public function store(Request $request) : JsonResponse { $this->authorize('create', CustomField::class); $fieldset = new CustomFieldset; $fieldset->fill($request->all()); if ($fieldset->save()) { // Sync fieldset with auto_add_to_fieldsets $fields = CustomField::select('id')->where('auto_add_to_fieldsets', '=', '1')->get(); if ($fields->count() > 0) { foreach ($fields as $field) { $field_ids[] = $field->id; } $fieldset->fields()->sync($field_ids); } return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.create.success'))); } return response()->json(Helper::formatStandardApiResponse('error', null, $fieldset->getErrors())); } /** * Delete Fieldset * * @group Custom Fields * @subgroup Custom Fieldsets * @author [A. Gianotto] [] * @since [v4.0] */ public function destroy($id) : JsonResponse { $this->authorize('delete', CustomField::class); $fieldset = CustomFieldset::findOrFail($id); $modelsCount = $fieldset->models->count(); $fieldsCount = $fieldset->fields->count(); if (($modelsCount > 0) || ($fieldsCount > 0)) { return response()->json(Helper::formatStandardApiResponse('error', null, 'Fieldset is in use.')); } if ($fieldset->delete()) { return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/custom_fields/message.fieldset.delete.success'))); } return response()->json(Helper::formatStandardApiResponse('error', null, 'Unspecified error')); } /** * Show Fields in Fieldset * * @group Custom Fields * @subgroup Custom Fieldsets * @param $fieldsetId * @return string JSON * @author [V. Cordes] [] * @since [v4.1.10] */ public function fields($id) : array { $this->authorize('view', CustomField::class); $set = CustomFieldset::findOrFail($id); $fields = $set->fields; return (new CustomFieldsTransformer)->transformCustomFields($fields, $fields->count()); } /** * Fields in Fieldset with Default Values for Model * * @group Custom Fields * @subgroup Custom Fieldsets * @param $modelId * @param $fieldsetId * @return string JSON */ public function fieldsWithDefaultValues($fieldsetId, $modelId) : array { $this->authorize('view', CustomField::class); $set = CustomFieldset::findOrFail($fieldsetId); $fields = $set->fields; return (new CustomFieldsTransformer)->transformCustomFieldsWithDefaultValues($fields, $modelId, $fields->count()); } }