src/Service/ValidationService.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use Symfony\Component\Validator\Constraints as Assert;
  4. use Symfony\Component\Form\FormError;
  5. use Symfony\Contracts\Translation\TranslatorInterface;
  6. class ValidationService
  7. {
  8.     static public function validateNotBlank($validator$formField)
  9.     {
  10.         $assert = new Assert\NotBlank();
  11.         $errors $validator->validate($formField->getData(), $assert);
  12.         if(count($errors) !== 0){
  13.             $formField->addError(new FormError("Campo obbligatorio"));
  14.             return false;
  15.         }
  16.         return true;
  17.     }
  18.     
  19.     static public function validateNotBlankWithZero($validator$formField)
  20.     {
  21.         $assert = new Assert\NotBlank();
  22.         $errors $validator->validate($formField->getData(), $assert);
  23.         if(count($errors) !== || $formField->getData() == 0){
  24.             $formField->addError(new FormError("Campo obbligatorio"));
  25.             return false;
  26.         }
  27.         return true;
  28.     }
  29.     static public function validateNotBlankType2($validator$formData$formFieldError)
  30.     {
  31.         $assert = new Assert\NotBlank();
  32.         $errors $validator->validate($formData->getData(), $assert);
  33.         if(count($errors) !== 0){
  34.             $formFieldError->addError(new FormError("Campo obbligatorio"));
  35.             return false;
  36.         }
  37.         return true;
  38.     }
  39.     
  40.     static public function validateNotBlankType3($validator$formData$formFieldError1$formFieldError2)
  41.     {
  42.         $assert = new Assert\NotBlank();
  43.         $errors $validator->validate($formData->getData(), $assert);
  44.         if(count($errors) !== 0){
  45.             $formFieldError1->addError(new FormError("Campo obbligatorio"));
  46.             $formFieldError2->addError(new FormError("Campo obbligatorio"));
  47.             return false;
  48.         }
  49.         return true;
  50.     }
  51.     static public function validateLength($formField$length)
  52.     {
  53.         if(strlen($formField->getData()) > $length){
  54.             $formField->addError(new FormError("Inserire al massimo ".$length." caratteri"));
  55.             return false;
  56.         }
  57.         return true;
  58.     }
  59.     static public function validateDate($validator$formField)
  60.     {
  61.         $assert = new Assert\Date();
  62.         $errors $validator->validate($formField->getData(), $assert);
  63.         if(count($errors) !== 0){
  64.             $formField->addError(new FormError("Inserire una data valida"));
  65.             return false;
  66.         }
  67.         return true;
  68.     }
  69.     
  70.     static public function validateCompareDate($formFieldFrom$formFieldTo$type$errorMsg)
  71.     {
  72.         switch($type){
  73.             case 'minor':
  74.                 if($formFieldFrom->getData()->format('Ymd') < $formFieldTo->getData()->format('Ymd')){
  75.                     $formFieldFrom->addError(new FormError($errorMsg)); return false;
  76.                     $formFieldTo->addError(new FormError($errorMsg)); return false;
  77.                 }
  78.                 break;
  79.             case 'minor-equal':
  80.                 if($formFieldFrom->getData()->format('Ymd') <= $formFieldTo->getData()->format('Ymd')){
  81.                     $formFieldFrom->addError(new FormError($errorMsg)); return false;
  82.                     $formFieldTo->addError(new FormError($errorMsg)); return false;
  83.                 }
  84.                 break;
  85.             case 'major':
  86.                 if($formFieldFrom->getData()->format('Ymd') > $formFieldTo->getData()->format('Ymd')){
  87.                     $formFieldFrom->addError(new FormError($errorMsg)); return false;
  88.                     $formFieldTo->addError(new FormError($errorMsg)); return false;
  89.                 }
  90.                 break;
  91.             case 'major-equal':
  92.                 if($formFieldFrom->getData()->format('Ymd') >= $formFieldTo->getData()->format('Ymd')){
  93.                     $formFieldFrom->addError(new FormError($errorMsg)); return false;
  94.                     $formFieldTo->addError(new FormError($errorMsg)); return false;
  95.                 }
  96.                 break;
  97.             default: break;
  98.         }
  99.         return true;
  100.     }
  101.     static public function validateEmail($validator$formField)
  102.     {
  103.         $assert = new Assert\Email();
  104.         $errors $validator->validate($formField->getData(), $assert);
  105.         if(count($errors) !== 0){
  106.             $formField->addError(new FormError("Inserire una e-mail valida"));
  107.             return false;
  108.         }
  109.         return true;
  110.     }
  111.     
  112.     static public function validateNotDuplicate($validator$formField$em$entity$parameters)
  113.     {
  114.         $value $em->getRepository($entity)->findDuplicate($formField->getData(), $parameters);
  115.         if($value != null){
  116.             $formField->addError(new FormError("Valore giĆ  presente"));
  117.             return false;
  118.         }
  119.         return true;
  120.     }
  121.     
  122.     static public function validateRegex($validator$formField$pattern$msg)
  123.     {
  124.         $assert = new Assert\Regex(['pattern' => $pattern]);
  125.         $errors $validator->validate($formField->getData(), $assert);
  126.         if(count($errors) !== 0){
  127.             $formField->addError(new FormError($msg));
  128.             return false;
  129.         }
  130.         return true;
  131.     }
  132.     
  133.     static public function validateFile($validator$formField$required$file$mb$formats)
  134.     {
  135.         if($required){
  136.             $assert = new Assert\NotBlank();
  137.             $errors $validator->validate($file$assert);
  138.             if(count($errors) !== 0){
  139.                 $formField->addError(new FormError("Inserire un file valido"));
  140.                 return false;
  141.             }
  142.         }
  143.         if($file != null){
  144.             if(filesize($file) > ($mb pow(2,20))){
  145.                 $formField->addError(new FormError("Inserire un file di dimensione inferiore a ".$mb." MB"));
  146.                 return false;
  147.             }
  148.             $found false;
  149.             $first true;
  150.             $formatsString "";
  151.             foreach($formats as $format){
  152.                 if($first$first false; else $formatsString.=', ';
  153.                 $formatsString.= $format;
  154.                 if($file->guessExtension() == $format){
  155.                     $found true;
  156.                     break;
  157.                 }
  158.             }
  159.             if(!$found){
  160.                 $formField->addError(new FormError("Inserire un file in uno dei seguenti formati: ".$formatsString));
  161.                 return false;
  162.             }
  163.         }
  164.         
  165.         return true;
  166.     }
  167.     
  168.     static public function validateMultipleEmailString($validator$formField$separatorPattern)
  169.     {    
  170.         $emails preg_split($separatorPattern$formField->getData());
  171.         $assert = new Assert\Email();
  172.         foreach($emails as $email){
  173.             $errors $validator->validate(rtrim(ltrim($email" ")," "), $assert);
  174.             if(count($errors) !== 0){
  175.                 $formField->addError(new FormError("Inserire una e-mail valida"));
  176.                 return false;
  177.             }
  178.         }
  179.         return true;
  180.     }
  181.     static public function validateCsvDelimiter($filename$delimiter$formField)
  182.     {
  183.         $valid true;
  184.         $handle fopen($filename'r');
  185.         if(strlen($delimiter) !== 1)
  186.             $valid false;
  187.         if($valid)
  188.             if($handle === false)
  189.                 $valid false;
  190.         
  191.         // Il delimitatore deve essere presente nella prima riga
  192.         if($valid){
  193.             if(strpos(fgets($handle), $delimiter) === false)
  194.                 $valid false;
  195.         }
  196.    
  197.         // Proviamo a usare fgetcsv
  198.         if($valid){
  199.             $row fgetcsv($handle0$delimiter);
  200.             $valid is_array($row) && count($row) > 1;
  201.         }
  202.         fclose($handle);
  203.         
  204.         if(!$valid){
  205.             $formField->addError(new FormError("Il separatore selezionato non trova riscontro nel file!"));
  206.             return false;
  207.         }
  208.         return true;
  209.     }
  210.     static public function validateCsvHasEmptyRows($filename$separator$formField)
  211.     {
  212.         $valid true;
  213.         if(!file_exists($filename))
  214.             return false;
  215.         
  216.         if(($handle fopen($filename'r')) !== false){
  217.             while(($row fgetcsv($handle0$separator)) !== false){
  218.                 // Rimuovo spazi e valori null
  219.                 $row array_map('trim'$row);
  220.                 // Se TUTTI i valori sono vuoti => riga vuota
  221.                 if (count(array_filter($row, fn($v) => $v !== '')) === 0) {
  222.                     $valid false;
  223.                 }
  224.             }
  225.         }
  226.         fclose($handle);
  227.         if(!$valid){
  228.             $formField->addError(new FormError("Il file contiene righe vuote!"));
  229.             return false;
  230.         }
  231.         return true;
  232.     }
  233. }