public function update()

in app/Http/Controllers/Contacts/ConversationsController.php [147:193]


    public function update(Request $request, Contact $contact, Conversation $conversation)
    {
        $data = $this->validateAndGetDatas($request);

        if ($data instanceof \Illuminate\Contracts\Validation\Validator) {
            return back()
                ->withInput()
                ->withErrors($data);
        }

        $date = $data['happened_at'];
        $data['conversation_id'] = $conversation->id;

        // update the conversation
        try {
            $conversation = app(UpdateConversation::class)->execute($data);
        } catch (ValidationException $e) {
            return back()
                ->withInput()
                ->withErrors($e->validator);
        } catch (\Exception $e) {
            return back()
                ->withInput()
                ->withErrors(trans('app.error_save'));
        }

        // delete all current messages
        foreach ($conversation->messages as $message) {
            $data = [
                'account_id' => auth()->user()->account_id,
                'conversation_id' => $conversation->id,
                'message_id' => $message->id,
            ];
            app(DestroyMessage::class)->execute($data);
        }

        // and create all new ones
        $result = $this->updateMessages($request, $conversation, $date);
        if ($result !== true) {
            return back()
                ->withInput()
                ->withErrors($result);
        }

        return redirect()->route('people.show', $contact)
            ->with('success', trans('people.conversation_edit_success'));
    }