user()->account->contactFieldTypes; } /** * Store a newly created resource in storage. * * @param Request $request * @return string */ public function storeContactFieldType(Request $request) { Validator::make($request->all(), [ 'name' => 'required|max:255', 'icon' => 'max:255|nullable', 'protocol' => 'max:255|nullable', ])->validate(); return auth()->user()->account->contactFieldTypes()->create( $request->only([ 'name', 'protocol', ]) + [ 'fontawesome_icon' => $request->input('icon'), 'account_id' => auth()->user()->account_id, ] ); } /** * Edit a newly created resource in storage. * * @param Request $request * @param ContactFieldType $contactFieldType * * @return ContactFieldType */ public function editContactFieldType(Request $request, ContactFieldType $contactFieldType): ContactFieldType { Validator::make($request->all(), [ 'name' => 'required|max:255', 'icon' => 'max:255|nullable', 'protocol' => 'max:255|nullable', ])->validate(); $contactFieldType->update( $request->only([ 'name', 'protocol', ]) + [ 'fontawesome_icon' => $request->input('icon'), ] ); return $contactFieldType; } /** * Destroy the contact field type. */ public function destroyContactFieldType(Request $request, ContactFieldType $contactFieldType) { if (! $contactFieldType->delible) { return $this->respondUnauthorized(); } // find all the contact fields that have this contact field types $contactFields = auth()->user()->account->contactFields ->where('contact_field_type_id', $contactFieldType->id); foreach ($contactFields as $contactField) { $contactField->delete(); } $contactFieldType->delete(); return $this->respondObjectDeleted($contactFieldType->id); } }