Орла
Области
Компаний
Пользователи
Галерея
Фиксированные новости
Орла
Отзывы о фирмах
Тарифы
Пользователи
Области
Банкоматы
Торговые точки
Доска объявлений
Курсы валют
Скидки
организации Орла
организации области
товары
сайты
сайты Орел
Данные
Разделы
Поиск
Поиск запросы
Статистика
Показы каталога организаций
Статистика клиенты
Пользователи
Сайты
Управление сайтом
Анкета
Аптеки
Афиша
Афиша новая
Баннеры
Бизнес >
Викторина
Голосование
Гость на сайте
Истории
Календарь событий
Каталоги >
Конкурс красоты
Конкурс аудио
Консультации
Меню
Новое на сайте
Новости >
Организации >
Программа ТВ
Публикации
Разделы сайта
Рассылка
Рестораны
Секрет фирмы >
Сервисы >
Ссылки
Тесты
Файловый менеджер
Форум
Фотогалерея
Обратная связь
Недвижимость
Новый год
Тексты
Пользователи
Юридический рейтинг
Отзывы на товары
Бан пользователей
Жалобы
Новые тесты
Коронавирус
Файловый менеджер
Имя файла
SaveOrganizationHandler.php
Содержимое
<?php namespace Visitka\Handlers; use app\organizations\Organizations; use app\organizations\validators\EmailValidator; use DomainException; use app\organizations\validators\AccessValidator; use app\organizations\validators\AddressValidator; use app\organizations\validators\PhoneValidator; use dimsog\arrayhelper\ArrayHelper; class SaveOrganizationHandler { private $post; private $files; private $organization = []; private $phones = []; private $emails = []; private $addresses = []; private $accessValidator; private $phoneValidator; private $emailValidator; private $addressValidator; public function __construct(array $post, array $files) { $this->post = $post; $this->files = $files; $this->accessValidator = new AccessValidator(); $this->phoneValidator = new PhoneValidator(); $this->emailValidator = new EmailValidator(); $this->addressValidator = new AddressValidator(); } public function handle() { $this->extract(); $this->validate(); // все провалидировано, значит нужно обновлять данные // обновим имя Organizations::updateName( $this->getOrganizationId(), $this->getOrganizationName() ); // сохраним логотип if (isset($this->files['client_logo']['tmp_name'])) { Organizations::updateLogoFromRequest($this->getOrganizationId()); } // обновим адрес организации Organizations::updateAddress( $this->getOrganizationId(), (int) $this->organization['city_id'], $this->organization['street'], $this->organization['home'], $this->organization['floor'], $this->organization['apartment'] ); // обновим дополнительные адреса Organizations::deleteAdditionalAddresses($this->getOrganizationId()); foreach ($this->addresses as $addressItem) { Organizations::addAdditionalAddress( $this->getOrganizationId(), $addressItem['city_id'], $addressItem['street'], $addressItem['home'], $addressItem['floor'], $addressItem['apartment'] ); } // обновим телефоны Organizations::deletePhones($this->getOrganizationId()); foreach ($this->phones as $phone) { Organizations::addPhone( $this->getOrganizationId(), $phone['number'], $phone['ext'], $phone['info'], $phone['active'] ); } // обновим email адреса Organizations::deleteEmails($this->getOrganizationId()); foreach ($this->emails as $email) { Organizations::addEmail( $this->getOrganizationId(), $email['email'] ); } } private function extract() { $json = json_decode(ArrayHelper::getValue($this->post, 'organization', ''), true); $this->organization = ArrayHelper::getValue($json, 'organization', []); $this->addresses = ArrayHelper::getValue($json, 'addresses', []); $this->phones = ArrayHelper::getValue($json, 'phones', []); $this->emails = ArrayHelper::getValue($json, 'emails', []); } private function validate() { if (empty($this->organization)) { throw new DomainException("Данные для сохранения не переданы"); } // есть ли доступ к организации? $this->accessValidator->validateOrFail($this->getOrganizationId()); // сначала провалидируем все данные if (empty($this->organization['name'])) { throw new DomainException('Укажите имя организации'); } // провалидируем основной адрес $this->addressValidator->validateOrFail( (int) ArrayHelper::getValue($this->organization, 'city_id', 0), ArrayHelper::getValue($this->organization, 'street'), ArrayHelper::getValue($this->organization, 'home'), ArrayHelper::getValue($this->organization, 'floor'), ArrayHelper::getValue($this->organization, 'apartment') ); // провалидируем дополнительные адреса foreach ($this->addresses as $addressItem) { $this->addressValidator->validateOrFail( ArrayHelper::getValue($addressItem, 'city_id'), ArrayHelper::getValue($addressItem, 'street'), ArrayHelper::getValue($addressItem, 'home'), ArrayHelper::getValue($addressItem, 'floor'), ArrayHelper::getValue($addressItem, 'apartment') ); } // провалидируем телефоны foreach ($this->phones as $phone) { $this->phoneValidator->validateOrFail( ArrayHelper::getValue($phone, 'number'), ArrayHelper::getValue($phone, 'ext'), ArrayHelper::getValue($phone, 'info'), ArrayHelper::getValue($phone, 'active') ); } // провалидируем почты foreach ($this->emails as $email) { $this->emailValidator->validateOrFail( ArrayHelper::getValue($email, 'email') ); } } private function getOrganizationId() { return (int) ArrayHelper::getValue($this->organization, 'id', 0); } private function getOrganizationName() { return (string) ArrayHelper::getValue($this->organization, 'name'); } }
/visitka/src/Handlers/
Имя
Дата
Размер
..
2020-03-10
SaveBlockHandler.php
2020-02-26
2 кб.
SaveOrganizationHandler.php
2020-02-25
6 кб.
UploadFileHandler.php
2020-03-10
2 кб.
UploadImageHandler.php
2020-03-10
878 байт
/visitka/src/Handlers
Загрузить файлы
Файл 1
Файл 2
Файл 3