user()->account->lifeEventCategories; return LifeEventCategoryResource::collection($lifeEventCategories); } /** * Get the list of life event types for a given life event category. * @param Request $request * @param int $lifeEventCategoryId * @return \Illuminate\Http\Resources\Json\ResourceCollection */ public function types(Request $request, int $lifeEventCategoryId) { $lifeEventCategory = LifeEventCategory::findOrFail($lifeEventCategoryId); $lifeEventTypes = $lifeEventCategory->lifeEventTypes; return LifeEventTypeResource::collection($lifeEventTypes); } /** * Display the list of life events. * * @param Request $request * @param Contact $contact * * @return Collection */ public function index(Request $request, Contact $contact) { $lifeEventsCollection = collect([]); $lifeEvents = $contact->lifeEvents()->get(); foreach ($lifeEvents as $lifeEvent) { $data = [ 'id' => $lifeEvent->id, 'life_event_type' => $lifeEvent->lifeEventType->name, 'default_life_event_type_key' => $lifeEvent->lifeEventType->default_life_event_type_key, 'name' => $lifeEvent->name, 'note' => $lifeEvent->note, 'happened_at' => DateHelper::getShortDate($lifeEvent->happened_at), ]; $lifeEventsCollection->push($data); } return $lifeEventsCollection; } /** * Store the life event. * * @param Request $request * @param Contact $contact * * @return LifeEvent|\Illuminate\Http\RedirectResponse */ public function store(Request $request, Contact $contact) { $data = [ 'account_id' => auth()->user()->account->id, 'contact_id' => $contact->id, 'life_event_type_id' => $request->get('life_event_type_id'), 'happened_at' => $request->get('happened_at'), 'name' => $request->get('name'), 'note' => $request->get('note'), 'has_reminder' => $request->get('has_reminder'), 'happened_at_month_unknown' => $request->get('happened_at_month_unknown'), 'happened_at_day_unknown' => $request->get('happened_at_day_unknown'), ]; // create the conversation try { $lifeEvent = app(CreateLifeEvent::class)->execute($data); } catch (\Exception $e) { return back() ->withInput() ->withErrors(trans('app.error_save')); } return $lifeEvent; } /** * Destroy the life event. * * @param Request $request * @param LifeEvent $lifeEvent * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ public function destroy(Request $request, LifeEvent $lifeEvent) { $data = [ 'account_id' => auth()->user()->account->id, 'life_event_id' => $lifeEvent->id, ]; try { app(DestroyLifeEvent::class)->execute($data); } catch (\Exception $e) { return back() ->withInput() ->withErrors(trans('app.error_save')); } return $this->respondObjectDeleted($lifeEvent->id); } }