|
|
@@ -11,8 +11,10 @@ use App\Models\Schedule;
|
|
|
use App\Models\ScheduleProposal;
|
|
|
use App\Models\ScheduleRefuse;
|
|
|
use App\Models\ServicePackage;
|
|
|
+use App\Notifications\Push\Cliente\Agendamento\PrestadorAceitouPush;
|
|
|
use App\Rules\ScheduleBusinessRules;
|
|
|
use App\Services\NotificationService;
|
|
|
+use App\Services\PushNotificationService;
|
|
|
use Carbon\Carbon;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
@@ -414,12 +416,40 @@ class CustomScheduleService
|
|
|
'user_id' => $schedule->client->user_id,
|
|
|
]);
|
|
|
|
|
|
+ $this->sendProposalReceivedPush($schedule, $provider->user->name);
|
|
|
+
|
|
|
return ScheduleProposal::create([
|
|
|
'schedule_id' => $scheduleId,
|
|
|
'provider_id' => $providerId,
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
+ private function sendProposalReceivedPush(Schedule $schedule, string $providerName): void
|
|
|
+ {
|
|
|
+ $user = $schedule->client->user;
|
|
|
+
|
|
|
+ if (! $user) {
|
|
|
+ Log::warning('Push de proposta ignorada: cliente sem usuário', [
|
|
|
+ 'schedule_id' => $schedule->id,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ app(PushNotificationService::class)->sendToUser(
|
|
|
+ $user,
|
|
|
+ new PrestadorAceitouPush($providerName, isProposal: true)
|
|
|
+ );
|
|
|
+ } catch (\Throwable $exception) {
|
|
|
+ Log::error('Falha ao enviar push de nova proposta sob medida', [
|
|
|
+ 'schedule_id' => $schedule->id,
|
|
|
+ 'user_id' => $user->id,
|
|
|
+ 'error' => $exception->getMessage(),
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function refuseOpportunity($scheduleId, $providerId)
|
|
|
{
|
|
|
|