input('called_at')); $answered = false; $whoInitiated = 'me'; switch ($request->input('who_initiated')) { case 'contact_not_answered': $whoInitiated = 'contact'; $answered = false; break; case 'me_not_answered': $whoInitiated = 'me'; $answered = false; break; case 'contact': $whoInitiated = 'contact'; $answered = true; break; case 'me': $whoInitiated = 'me'; $answered = true; break; } $data = [ 'account_id' => Auth::user()->account_id, 'author_id' => Auth::id(), 'vault_id' => $vaultId, 'contact_id' => $contactId, 'call_reason_id' => $request->input('call_reason_id') == 0 ? null : $request->input('call_reason_id'), 'emotion_id' => $request->input('emotion_id') == 0 ? null : $request->input('emotion_id'), 'called_at' => $carbonDate->format('Y-m-d'), 'duration' => $request->input('duration'), 'description' => $request->input('description'), 'type' => $request->input('type'), 'answered' => $answered, 'who_initiated' => $whoInitiated, ]; $call = (new CreateCall)->execute($data); $contact = Contact::find($contactId); return response()->json([ 'data' => ModuleCallsViewHelper::dto($contact, $call, Auth::user()), ], 201); } public function update(Request $request, string $vaultId, string $contactId, int $callId) { $carbonDate = Carbon::parse($request->input('called_at')); $answered = false; $whoInitiated = 'me'; switch ($request->input('who_initiated')) { case 'contact_not_answered': $whoInitiated = 'contact'; $answered = false; break; case 'me_not_answered': $whoInitiated = 'me'; $answered = false; break; case 'contact': $whoInitiated = 'contact'; $answered = true; break; case 'me': $whoInitiated = 'me'; $answered = true; break; default: break; } $data = [ 'account_id' => Auth::user()->account_id, 'author_id' => Auth::id(), 'vault_id' => $vaultId, 'contact_id' => $contactId, 'call_id' => $callId, 'call_reason_id' => $request->input('call_reason_id') == 0 ? null : $request->input('call_reason_id'), 'emotion_id' => $request->input('emotion_id') == 0 ? null : $request->input('emotion_id'), 'called_at' => $carbonDate->format('Y-m-d'), 'duration' => $request->input('duration'), 'description' => $request->input('description'), 'type' => $request->input('type'), 'answered' => $answered, 'who_initiated' => $whoInitiated, ]; $call = (new UpdateCall)->execute($data); $contact = Contact::find($contactId); return response()->json([ 'data' => ModuleCallsViewHelper::dto($contact, $call, Auth::user()), ], 200); } public function destroy(Request $request, string $vaultId, string $contactId, int $callId) { $data = [ 'account_id' => Auth::user()->account_id, 'author_id' => Auth::id(), 'vault_id' => $vaultId, 'contact_id' => $contactId, 'call_id' => $callId, ]; (new DestroyCall)->execute($data); return response()->json([ 'data' => true, ], 200); } }