File: /var/www/quadcode/app/Repository/PipedriveQueueRepository.php
<?php
namespace App\Repository;
use App\Models\PipedriveQueue;
use Illuminate\Database\Eloquent\Collection;
class PipedriveQueueRepository
{
public function create(array $data): void
{
$pipedriveQueue = new PipedriveQueue(['data' => json_encode($data)]);
$pipedriveQueue->save();
}
/** @return Collection|array|PipedriveQueue[] */
public function getNeedToSend(): Collection|array
{
return PipedriveQueue::query()->where('status', PipedriveQueue::STATUS_NEW)->get();
}
public function getErrorsCount(): int
{
return PipedriveQueue::query()->where('status', PipedriveQueue::STATUS_ERROR)->count();
}
public function getFirstStepLeads(): Collection
{
return PipedriveQueue::query()
->where('status', PipedriveQueue::STATUS_DONE)
->where('whats_app_status', PipedriveQueue::STATUS_NEW)
->where('step', 1)
->whereRaw("lead_created_at <= now() - INTERVAL '2 MINUTES'")
->whereNotNull('lead_id')
->get();
}
public function getSecondStepLeads(): Collection
{
return PipedriveQueue::query()
->where('status', PipedriveQueue::STATUS_DONE)
->where('whats_app_status', PipedriveQueue::STATUS_NEW)
->where('step', 2)
->whereRaw("lead_created_at <= now() - INTERVAL '3 DAYS'")
->whereNotNull('lead_id')
->get();
}
public function getThirdStepLeads(): Collection
{
return PipedriveQueue::query()
->where('status', PipedriveQueue::STATUS_DONE)
->where('whats_app_status', PipedriveQueue::STATUS_NEW)
->where('step', 3)
->whereRaw("lead_created_at <= now() - INTERVAL '5 DAYS'")
->whereNotNull('lead_id')
->get();
}
}