diff --git a/app/Http/Controllers/Api/ApiContactController.php b/app/Http/Controllers/Api/ApiContactController.php index e12d7ee71..67a57bc06 100644 --- a/app/Http/Controllers/Api/ApiContactController.php +++ b/app/Http/Controllers/Api/ApiContactController.php @@ -7,6 +7,7 @@ use App\Helpers\SearchHelper; use App\Models\Contact\Contact; use Illuminate\Http\JsonResponse; use Illuminate\Support\Collection; +use App\Jobs\UpdateLastConsultedDate; use Illuminate\Database\QueryException; use App\Services\Contact\Contact\SetMeContact; use Illuminate\Validation\ValidationException; @@ -96,7 +97,7 @@ class ApiContactController extends ApiController return $this->respondNotFound(); } - $contact->updateConsulted(); + UpdateLastConsultedDate::dispatch($contact); if ($this->getWithParameter() == 'contactfields') { return new ContactWithContactFieldsResource($contact); diff --git a/app/Http/Controllers/ContactsController.php b/app/Http/Controllers/ContactsController.php index 87b2317e2..668da41b9 100644 --- a/app/Http/Controllers/ContactsController.php +++ b/app/Http/Controllers/ContactsController.php @@ -18,6 +18,7 @@ use App\Models\Contact\Contact; use App\Services\VCard\ExportVCard; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Auth; +use App\Jobs\UpdateLastConsultedDate; use Illuminate\Http\RedirectResponse; use Illuminate\Contracts\View\Factory; use App\Models\Relationship\Relationship; @@ -244,7 +245,7 @@ class ContactsController extends Controller $query->orderBy('updated_at', 'desc'); }]); - $contact->updateConsulted(); + UpdateLastConsultedDate::dispatch($contact); $relationships = $contact->relationships; // get love relationship type diff --git a/app/Jobs/UpdateLastConsultedDate.php b/app/Jobs/UpdateLastConsultedDate.php new file mode 100644 index 000000000..91b580059 --- /dev/null +++ b/app/Jobs/UpdateLastConsultedDate.php @@ -0,0 +1,45 @@ +contact = $contact; + } + + /** + * Update the Last Consulted At field for the given contact. + * + * @return void + */ + public function handle(): void + { + $timestamps = $this->contact->timestamps; + $this->contact->timestamps = false; + + $this->contact->last_consulted_at = now(); + $this->contact->number_of_views = $this->contact->number_of_views + 1; + + $this->contact->save(); + + $this->contact->timestamps = $timestamps; + } +} diff --git a/tests/Unit/Jobs/UpdateLastConsultedDateTest.php b/tests/Unit/Jobs/UpdateLastConsultedDateTest.php new file mode 100644 index 000000000..91b4660d2 --- /dev/null +++ b/tests/Unit/Jobs/UpdateLastConsultedDateTest.php @@ -0,0 +1,32 @@ +create([ + 'number_of_views' => 1, + ]); + + dispatch(new UpdateLastConsultedDate($contact)); + + $this->assertDatabaseHas('contacts', [ + 'id' => $contact->id, + 'last_consulted_at' => '2017-01-01 07:00:00', + 'number_of_views' => 2, + ]); + } +}