Skip to content

Instantly share code, notes, and snippets.

@BerezhniyDmitro
Created December 3, 2018 07:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BerezhniyDmitro/1ee4970851204ed0aaca6a9cef69e262 to your computer and use it in GitHub Desktop.
Save BerezhniyDmitro/1ee4970851204ed0aaca6a9cef69e262 to your computer and use it in GitHub Desktop.
<?php
namespace App\Models\CodeBlocks\Validator;
use LogicException;
use Symfony\Component\Validator\Constraints\Choice;
use Symfony\Component\Validator\Constraints\Collection;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Regex;
/**
* Class CodeBlockConstraintMap
*/
class CodeBlockConstraintMap
{
/**
* @var array массив ограничений валидации
*/
private $mapConstraint;
/**
* CodeBlockConstraintMap constructor.
*/
public function __construct()
{
$this->mapConstraint = [
'certificates' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Сертификаты отсутствует название']),
new Length(['maxMessage' => 'Блок Сертификаты превышено максимально допустимое количество символов', 'max' => 255]),
]
]),
'cases_carousel' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Кейсы отсутствует название']),
new Length(['maxMessage' => 'Блок Кейсы превышено максимально допустимое количество символов', 'max' => 255]),
]
]),
'clients_carousel' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Клиенты отсутствует название']),
new Length(['maxMessage' => 'Блок Клиенты превышено максимально допустимое количество символов', 'max' => 255]),
]
]),
'reviews_carousel' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Отзывы отсутствует название']),
new Length(['maxMessage' => 'Блок Отзывы превышено максимально допустимое количество символов', 'max' => 255]),
]
]),
'about_us' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок О нас отсутствует название']),
new Length(['maxMessage' => 'Блок О нас превышено максимально допустимое количество символов', 'max' => 255]),
]
]),
'video' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок О нас отсутствует название']),
new Length(['maxMessage' => 'Блок О нас превышено максимально допустимое количество символов', 'max' => 255]),
],
'image' => [
new NotBlank(['message' => 'Блок Видео, картинка отсутствует']),
new Regex([
'pattern' => '~^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|jpeg|gif|png)$~',
'message' => 'Блок Видео, картинка неверного формата'
]),
],
'video' => [
new NotBlank(['message' => 'Блок Видео, отсутствует ссылка']),
]
]),
'client_dashboard' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Про ЛК отсутствует название']),
new Length(['maxMessage' => 'Блок Про ЛК превышено максимально допустимое количество символов', 'max' => 255]),
],
'image' => [
new NotBlank(['message' => 'Блок Про ЛК, картинка отсутствует']),
new Regex([
'pattern' => '~^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|jpeg|gif|png)$~',
'message' => 'Блок Видео, картинка неверного формата'
]),
],
'html' => [
new NotBlank(['message' => 'Блок Про ЛК, отсутствует текст']),
new Length(['maxMessage' => 'Блок Про ЛК превышено максимально допустимое количество символов', 'max' => 10000]),
]
]),
'html' => new Collection([
'title' => [
new NotBlank(['message' => 'HTML блок отсутствует название']),
new Length(['maxMessage' => 'HTML блок превышено максимально допустимое количество символов', 'max' => 255]),
],
'template_type' => [
new Choice([
'choices' => ['html_blue', 'html_white'],
'message' => 'Неверное значение фона подложки'
])
],
'html' => [
new NotBlank(['message' => 'Блок Про ЛК, отсутствует текст']),
new Length(['maxMessage' => 'Блок Про ЛК превышено максимально допустимое количество символов', 'max' => 10000]),
]
]),
'payment_schemes' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Схемы Оплат отсутствует название']),
new Length(['maxMessage' => 'Блок Схемы Оплат превышено максимально допустимое количество символов', 'max' => 255]),
],
'html' => [
new NotBlank(['message' => 'Блок Схемы Оплат, отсутствует текст']),
new Length(['maxMessage' => 'Блок Схемы Оплат превышено максимально допустимое количество символов', 'max' => 10000]),
]
]),
'stages_action_plan' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Этапы/план действий отсутствует название']),
new Length(['maxMessage' => 'Блок Этапы/план действий превышено максимально допустимое количество символов', 'max' => 255]),
],
'html' => [
new NotBlank(['message' => 'Блок Этапы/план действий, отсутствует текст']),
new Length(['maxMessage' => 'Блок Этапы/план действий превышено максимально допустимое количество символов', 'max' => 10000]),
]
]),
'offer' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Мы предлагаем отсутствует название']),
new Length(['maxMessage' => 'Блок Мы предлагаем превышено максимально допустимое количество символов', 'max' => 255]),
],
'html' => [
new NotBlank(['message' => 'Блок Мы предлагаем, отсутствует текст']),
new Length(['maxMessage' => 'Блок Мы предлагаем превышено максимально допустимое количество символов', 'max' => 10000]),
]
]),
'presentation' => new Collection([
'title' => [
new NotBlank(['message' => 'Блок Презентация отсутствует название']),
new Length(['maxMessage' => 'Блок Презентация превышено максимально допустимое количество символов', 'max' => 255]),
],
'presentation_link' => [
new NotBlank(['message' => 'Блок Презентация, отсутствует ссылка']),
new Regex([
'pattern' => '~^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:pdf)$~',
'message' => 'Блок Презентация, ссылка неверного формата. Верный формат pdf'
]),
],
]),
];
}
/**
* Метод получает правила валидации по названию блока кода
*
* @param string $typeCodeBlock тип блока кода
* @return mixed
*/
public function getConstraintByKey($typeCodeBlock)
{
if (empty($this->mapConstraint[$typeCodeBlock])) {
throw new LogicException('Такой тип блока кода отсутствует');
}
return $this->mapConstraint[$typeCodeBlock];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment