$alarm) { $event = Event::with('competition_group')->with('home')->with('away')->find($event_id); foreach ($alarm as $user_id => $alarm_user) { $user = User::find($user_id); foreach ($alarm_user as $bookmaker_id => $alarm_user_bookmaker) { $bookmaker = Bookmaker::find($bookmaker_id); foreach ($alarm_user_bookmaker as $mode => $alarm_user_bookmaker_mode) { foreach ($alarm_user_bookmaker_mode as $fieldname => $alarm_level_id) { $bet = OddsName::where('alarm', $fieldname)->select('table', 'bettype', 'name')->first()->toArray(); $quote = DB::table($bet['table'])->where('event_id', $event_id)->where('bookmaker_id', $bookmaker_id)->value($bet['name']); switch ($mode) { case 'mail': $send = CheckSend::check($event_id, $user_id, $bookmaker_id, $alarm_level_id, $fieldname, 'notify_by_email'); if (! $send) { $send = PersonalNotificationSend::create([ 'event_id' => (int) $event_id, 'user_id' => (int) $user_id, 'bookmaker_id' => (int) $bookmaker_id, 'alarm_level_id' => (int) $alarm_level_id, 'fieldname' => $fieldname, 'notify_by_mail' => 1, ]); $stored_alarms[] = $send->id; switch ($alarm_level_id) { case 1: $message = 'ALARM LEVEL '.$alarm_level_id; break; case 2: $message = 'ALARM LEVEL '.$alarm_level_id; break; default: $message = 'ALARM LEVEL '.$alarm_level_id; break; } $tablecontent = [ ['key' => 'League', 'value' => $event->competition_group->name], ['key' => 'Event', 'value' => $event->home->name.' vs '.$event->away->name], ['key' => 'Starttime', 'value' => $event->starttime], ['key' => 'Bookmaker', 'value' => $bookmaker->name], ['key' => 'Bettype', 'value' => $bet['bettype']], ['key' => 'Odd Name', 'value' => $bet['name']], ['key' => 'Value', 'value' => $quote], ['key' => 'Id', 'value' => $event_id], ]; Mail::to($user) ->send(new AlarmNotification($message, $tablecontent, $alarm_level_id)); } else { $stored_alarms[] = $send; } break; case 'system': $send = CheckSend::check($event_id, $user_id, $bookmaker_id, $alarm_level_id, $fieldname, 'notify_by_system'); if (! $send) { $send = PersonalNotificationSend::create([ 'event_id' => (int) $event_id, 'user_id' => (int) $user_id, 'bookmaker_id' => (int) $bookmaker_id, 'alarm_level_id' => (int) $alarm_level_id, 'fieldname' => $fieldname, 'notify_by_system' => 1, ]); $stored_alarms[] = $send->id; switch ($alarm_level_id) { case 1: $title = '
ALARM LEVEL '.$alarm_level_id.'
'; break; case 2: $title = '
ALARM LEVEL '.$alarm_level_id.'
'; break; default: $title = '
ALARM LEVEL '.$alarm_level_id.'
'; break; } $message = '
'; $message .= '
League
'.$event->competition_group->name.'
'; $message .= '
Event
'.$event->home->name.' vs '.$event->away->name.'
'; $message .= '
Starttime
'.$event->starttime.'
'; $message .= '
Bookmaker
'.$bookmaker->name.'
'; $message .= '
Bettype
'.$bet['bettype'].'
'; $message .= '
Odd Name
'.$bet['name'].'
'; $message .= '
Value
'.$quote.'
'; Notification::make() ->title($title) ->icon('phosphor-envelope-duotone') ->body($message) ->sendToDatabase($user); break; } else { $stored_alarms[] = $send; } } } } } } } if ($stored_alarms) { PersonalNotificationSend::whereNotIn('id', $stored_alarms)->delete(); } } }