HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/ipsremont-demo/app/Services/Email/SendEmailService.php
<?php

namespace App\Services\Email;

use App\Jobs\SendMail;
use App\Mail\BaseMail;
use App\Models\Order;
use App\Models\Service\Service;
use App\Services\PlaceholderService;
use App\Services\Service\ServiceService;
use App\User;
use Illuminate\Support\Facades\Auth;

class SendEmailService
{

    public static function isBodyActive($event, $role, $lang)
    {
        $body = EmailTemplatesService::getTplForLetter($event, $lang, $role);

        return isset($body) && $body->active;
    }

    public static function sendMail($event, $role, $user, $service, $order, $repair = null)
    {
        if (!SendEmailService::isBodyActive($event, $role, $user->lang)) {
            return;
        }

        $placeholders = new PlaceholderService();

        if ($user) {
            $placeholders->initRecipientPlaceholder($user);
        }
        if ($service) {
            $placeholders->initServicePlaceholder($service);
        }
        if ($order) {
            $placeholders->initOrderPlaceholder($order);
        }
        if ($repair) {
            $placeholders->initRepairPlaceholder($repair);
        }

        $variables = [
            'user' => $user,
            'event' => $event,
            'placeholders' => $placeholders->getAllPlaceholders(),
        ];

        SendMail::dispatch(new BaseMail($variables), $user->email);
    }

    public static function sendMailImproved($event, $role, $user, $placeholders)
    {
        if (!SendEmailService::isBodyActive($event, $role, $user->lang)) {
            return;
        }

        $variables = ['user' => $user, 'event' => $event, 'placeholders' => $placeholders];

        SendMail::dispatch(new BaseMail($variables), $user->email);
    }

    public static function orderChangeStatusMail($model)
    {
        return;

        $admins = User::getAdmins();

        $service = Service::where('id', $model->service_id)->first();

        if (!Auth::check() || Auth::user()->isService()) {
            $managers = $service->managers()->get();
            foreach ($managers as $user) {
                self::sendMail('order-' . $model->status, 'manager', $user, $service, $model);
            }

        } elseif (!Auth::check() || Auth::user()->isManager()) {
            $services = $service->user()->get();
            foreach ($services as $user) {
                self::sendMail('order-' . $model->status, 'service', $user, $service, $model);
            }
        }

        foreach ($admins as $user) {
            self::sendMail('order-' . $model->status, 'admin', $user, $service, $model);
        }
    }

    public static function orderEditMail($model, $event)
    {
        return;

        $admins = User::getAdmins();

        $service = Service::where('id', $model->service_id)->first();

        if (!Auth::check() || Auth::user()->isService()) {
            $managers = $service->managers()->get();
            foreach ($managers as $user) {
                self::sendMail($event, 'manager', $user, $service, $model);
            }

        } elseif (!Auth::check() || Auth::user()->isManager()) {
            $services = $service->user()->get();
            foreach ($services as $user) {
                self::sendMail($event, 'service', $user, $service, $model);
            }
        }

        foreach ($admins as $user) {
            self::sendMail($event, 'admin', $user, $service, $model);
        }
    }

    public static function repairChangeStatusMail($model)
    {
        return;

        $admins = User::getAdmins();

        $service = Service::where('id', $model->service_id)->first();

        $order = Order::where('repair_id', $model->id)->orderBy('created_at', 'desc')->first();

        if (!Auth::check() || Auth::user()->isService()) {
            $managers = $service->managers()->get();
            foreach ($managers as $user) {
                self::sendMail('repair-' . $model->status, 'manager', $user, $service, $order, $model);
            }

        } elseif (!Auth::check() || Auth::user()->isManager()) {
            $services = $service->user()->get();
            foreach ($services as $user) {
                self::sendMail('repair-' . $model->status, 'service', $user, $service, $order, $model);
            }
        }

        foreach ($admins as $user) {
            self::sendMail('repair-' . $model->status, 'admin', $user, $service, $order, $model);
        }
    }

    public static function addressMail($model, $event, $new = null)
    {
        if (!Auth::user()) {
            return;
        }

        if (Auth::user()->isService()) {
            $service = ServiceService::getById($model->service_id);
            $managers = $service->managers()->canLogin()->get();

            $placeholders = new PlaceholderService();
            if ($event == 'main-address-changed' && !$new) {
                $placeholders->initServicePlaceholder($service);
            } elseif ($event == 'main-address-changed' && $new) {
                $placeholders->initServicePlaceholder($service, $model, 1);
            } else {
                $placeholders->initServicePlaceholder($service, $model);
            }

            foreach ($managers as $user) {
                $placeholders->initRecipientPlaceholder($user);

                self::sendMailImproved($event, 'manager', $user, $placeholders->getAddressChangePlaceholders());
            }
        }
    }

    public static function newServiceMail($service, $new_service)
    {
        $event = 'request-to-add-company';
        $placeholders = new PlaceholderService();
        $placeholders->initServicePlaceholder($service);
        $placeholders->initNewServicePlaceholder($new_service);

        if (!Auth::user()->isManager()) {
            $managers = $service->managers()->canLogin()->get();
            foreach ($managers as $manager) {
                $placeholders->initRecipientPlaceholder($manager);
                self::sendMailImproved(
                    $event, 'manager', $manager,
                    $placeholders->getNewServicePlaceholders()
                );
            }
        }

        if (!Auth::user()->isService()) {
            $placeholders->initRecipientPlaceholder($service->user);
            self::sendMailImproved(
                $event, 'service', $service->user,
                $placeholders->getNewServicePlaceholders()
            );
        }

        if (!Auth::user()->isAdmin()) {
            $admins = User::getAdmins();
            foreach ($admins as $admin) {
                $placeholders->initRecipientPlaceholder($admin);
                self::sendMailImproved(
                    $event, 'admin', $admin,
                    $placeholders->getNewServicePlaceholders()
                );
            }
        }
    }

    public static function editServiceMail($service, $event)
    {
        if (!Auth::user()) {
            return;
        }

        $placeholders = new PlaceholderService();
        $placeholders->initServicePlaceholder($service);

        if (!Auth::user()->isManager()) {
            $managers = $service->managers()->canLogin()->get();
            foreach ($managers as $manager) {
                $placeholders->initRecipientPlaceholder($manager);
                self::sendMailImproved($event, 'manager', $manager, $placeholders->getAllPlaceholders());
            }
        }

        if (!Auth::user()->isService()) {
            $placeholders->initRecipientPlaceholder($service->user);
            self::sendMailImproved($event, 'service', $service->user, $placeholders->getAllPlaceholders());
        }

        if (!Auth::user()->isAdmin()) {
            $admins = User::getAdmins();
            foreach ($admins as $admin) {
                $placeholders->initRecipientPlaceholder($admin);
                self::sendMailImproved($event, 'admin', $admin, $placeholders->getAllPlaceholders());
            }
        }
    }

    public static function companyActivationMail($service, $event, $old_service_company_name)
    {
        $placeholders = new PlaceholderService();
        $placeholders->initServicePlaceholder($service);
        $placeholders->setServicePlaceholder('{old_service_company_name}', $old_service_company_name);

        if (!Auth::user()->isManager()) {
            $managers = $service->managers()->canLogin()->get();
            foreach ($managers as $manager) {
                $placeholders->initRecipientPlaceholder($manager);
                self::sendMailImproved(
                    $event, 'manager', $manager,
                    $placeholders->getAllPlaceholders()
                );
            }
        }

        if (!Auth::user()->isService()) {
            $placeholders->initRecipientPlaceholder($service->user);
            self::sendMailImproved(
                $event, 'service', $service->user,
                $placeholders->getAllPlaceholders()
            );
        }

        if (!Auth::user()->isAdmin()) {
            $admins = User::getAdmins();
            foreach ($admins as $admin) {
                $placeholders->initRecipientPlaceholder($admin);
                self::sendMailImproved(
                    $event, 'admin', $admin,
                    $placeholders->getAllPlaceholders()
                );
            }
        }
    }

    public static function acttcMail($model, $event)
    {
        return;

        $placeholders = new PlaceholderService();
        $placeholders->initActtcPlaceholders($model);
        $placeholders->initRepairPlaceholder($model->repair);
        $placeholders->initServicePlaceholder($model->service);

        if (Auth::check()) {
            if (!Auth::user()->isManager()) {
                $managers = $model->service->managers()->canLogin()->get();
                foreach ($managers as $manager) {
                    $placeholders->initRecipientPlaceholder($manager);
                    self::sendMailImproved(
                        $event, 'manager', $manager,
                        $placeholders->getPlaceholdersForActtc()
                    );
                }
            }
            if (!Auth::user()->isService()) {
                $placeholders->initRecipientPlaceholder($model->service->user);
                self::sendMailImproved(
                    $event, 'service', $model->service->user,
                    $placeholders->getPlaceholdersForActtc()
                );
            }
            if (!Auth::user()->isAdmin()) {
                $admins = User::getAdmins();
                foreach ($admins as $admin) {
                    $placeholders->initRecipientPlaceholder($admin);
                    self::sendMailImproved(
                        $event, 'admin', $admin,
                        $placeholders->getPlaceholdersForActtc()
                    );
                }
            }
        } else {
            $managers = $model->service->managers()->canLogin()->get();
            foreach ($managers as $manager) {
                $placeholders->initRecipientPlaceholder($manager);
                self::sendMailImproved(
                    $event, 'manager', $manager,
                    $placeholders->getPlaceholdersForActtc()
                );
            }

            $placeholders->initRecipientPlaceholder($model->service->user);
            self::sendMailImproved(
                $event, 'service', $model->service->user,
                $placeholders->getPlaceholdersForActtc()
            );

            $admins = User::getAdmins();
            foreach ($admins as $admin) {
                $placeholders->initRecipientPlaceholder($admin);
                self::sendMailImproved(
                    $event, 'admin', $admin,
                    $placeholders->getPlaceholdersForActtc()
                );
            }
        }
    }

    public static function shipmentMail($model)
    {
        return;

        $placeholders = new PlaceholderService();
        $placeholders->initShipmentPlaceholders($model);
        $placeholders->initOrderPlaceholder($model->order);

        if (Auth::check()) {
            if (!Auth::user()->isManager()) {
                $managers = $model->order->service->managers()->canLogin()->get();
                foreach ($managers as $manager) {
                    $placeholders->initRecipientPlaceholder($manager);
                    self::sendMailImproved(
                        'shipment-' . $model->status, 'manager', $manager,
                        $placeholders->getPlaceholdersForShipment()
                    );
                }
            }
            if (!Auth::user()->isService()) {
                $placeholders->initRecipientPlaceholder($model->order->service->user);
                self::sendMailImproved(
                    'shipment-' . $model->status, 'service', $model->order->service->user,
                    $placeholders->getPlaceholdersForShipment()
                );
            }
            if (!Auth::user()->isAdmin()) {
                $admins = User::getAdmins();
                foreach ($admins as $admin) {
                    $placeholders->initRecipientPlaceholder($admin);
                    self::sendMailImproved(
                        'shipment-' . $model->status, 'admin', $admin,
                        $placeholders->getPlaceholdersForShipment()
                    );
                }
            }
        } else {
            $managers = $model->order->service->managers()->canLogin()->get();
            foreach ($managers as $manager) {
                $placeholders->initRecipientPlaceholder($manager);
                self::sendMailImproved(
                    'shipment-' . $model->status, 'manager', $manager,
                    $placeholders->getPlaceholdersForShipment()
                );
            }

            $placeholders->initRecipientPlaceholder($model->order->service->user);
            self::sendMailImproved(
                'shipment-' . $model->status, 'service', $model->order->service->user,
                $placeholders->getPlaceholdersForShipment()
            );

            $admins = User::getAdmins();
            foreach ($admins as $admin) {
                $placeholders->initRecipientPlaceholder($admin);
                self::sendMailImproved(
                    'shipment-' . $model->status, 'admin', $admin,
                    $placeholders->getPlaceholdersForShipment()
                );
            }
        }
    }

}