Request::all('search', 'trashed'), 'contacts' => Auth::user()->account->contacts() ->with('organization') ->orderByName() ->filter(Request::only('search', 'trashed')) ->paginate() ->withQueryString() ->through(function ($contact) { return [ 'id' => $contact->id, 'name' => $contact->name, 'phone' => $contact->phone, 'city' => $contact->city, 'deleted_at' => $contact->deleted_at, 'organization' => $contact->organization ? $contact->organization->only('name') : null, ]; }), ]); } public function create() { return Inertia::render('Contacts/Create', [ 'organizations' => Auth::user()->account ->organizations() ->orderBy('name') ->get() ->map ->only('id', 'name'), ]); } public function store() { Auth::user()->account->contacts()->create( Request::validate([ 'first_name' => ['required', 'max:50'], 'last_name' => ['required', 'max:50'], 'organization_id' => ['nullable', Rule::exists('organizations', 'id')->where(function ($query) { $query->where('account_id', Auth::user()->account_id); })], 'email' => ['nullable', 'max:50', 'email'], 'phone' => ['nullable', 'max:50'], 'address' => ['nullable', 'max:150'], 'city' => ['nullable', 'max:50'], 'region' => ['nullable', 'max:50'], 'country' => ['nullable', 'max:2'], 'postal_code' => ['nullable', 'max:25'], ]) ); return Redirect::route('contacts')->with('success', 'Contact created.'); } public function edit(Contact $contact) { return Inertia::render('Contacts/Edit', [ 'contact' => [ 'id' => $contact->id, 'first_name' => $contact->first_name, 'last_name' => $contact->last_name, 'organization_id' => $contact->organization_id, 'email' => $contact->email, 'phone' => $contact->phone, 'address' => $contact->address, 'city' => $contact->city, 'region' => $contact->region, 'country' => $contact->country, 'postal_code' => $contact->postal_code, 'deleted_at' => $contact->deleted_at, ], 'organizations' => Auth::user()->account->organizations() ->orderBy('name') ->get() ->map ->only('id', 'name'), ]); } public function update(Contact $contact) { $contact->update( Request::validate([ 'first_name' => ['required', 'max:50'], 'last_name' => ['required', 'max:50'], 'organization_id' => ['nullable', Rule::exists('organizations', 'id')->where(function ($query) { $query->where('account_id', Auth::user()->account_id); })], 'email' => ['nullable', 'max:50', 'email'], 'phone' => ['nullable', 'max:50'], 'address' => ['nullable', 'max:150'], 'city' => ['nullable', 'max:50'], 'region' => ['nullable', 'max:50'], 'country' => ['nullable', 'max:2'], 'postal_code' => ['nullable', 'max:25'], ]) ); return Redirect::back()->with('success', 'Contact updated.'); } public function destroy(Contact $contact) { $contact->delete(); return Redirect::back()->with('success', 'Contact deleted.'); } public function restore(Contact $contact) { $contact->restore(); return Redirect::back()->with('success', 'Contact restored.'); } }