We help IT Professionals succeed at work.

Could you point where to obtain this validation rules used by a Laravel's controller?

Eduardo Fuerte
on
Hi Experts

Could you point where to obtain this validation rules used by a Laravel's controller?

<?php

	namespace App\Http\Controllers\admin;

	use Illuminate\Http\Request;
	use App\Http\Controllers\Controller;

	use App\User;
	...

	use Carbon\Carbon;
	use League\Csv\Reader;

	use Auth;
	use Hash;
	use DB;
	use Debugbar;
	use Excel;
	use Config;

	use Illuminate\Support\Facades\Log;

	class UserController extends Controller
	{
	  public function salvar(Request $request){
	  ....
	  $this->validate($request, [
				  'name' => 'required',
				  ...
				  // I guess  it means that email must to be unique at user's table, ok?
                                 // and  the $id is sent at the reply's end.
				  'email' => 'required|email|unique:users,email,'.$id,

				  ...
				  // Another, similar.
				  'cnpj' => 'required|cnpj|unique:users,cnpj,'.$id,
				  ... 
				]

Open in new window


Is it a specific Laravel's feature?
What is "the key" word to find the related documentation for this feature?

Thanks in advance.
Comment
Watch Question

Most Valuable Expert 2018
Distinguished Expert 2019
Commented:
Hi Eduardo,

The key word is Validation.

The Validation class is built in to Laravel. You can read all the docs here -> https://laravel.com/docs/6.x/validation (make sure you select the correct version of Laravel from the top, right of the page).

When setting up validation rules, you define the property you're validating (name/email/password/date of birth etc), and you provide a pipe delimited list of Validation rules to apply (Required, Numeric, Starts With, Length, Unique etc).

Basically, your rules state the following:

Rule1: A 'name' is required

Rule2: An 'email' is required [required], it must be a valid email format [email], it must be unique in the Email column of the Users table (ignoring the current user) [unique:users,email,$id]

Your third validation rule is used to validate the value of the cnpj data. However, you've specified [cnpj] as a Validation Rule (in the pipe delimited list). Unless you've explcitly created a new Validation Rule yourself, then this is likely to cause an error, as it's not a standard, built-in rule.

You can find all of the built-in rules on the documentation page that I linked to above.
Eduardo FuerteDeveloper and Analyst

Author

Commented:
Hi Chris

When you say
(ignoring the current user)
is due this syntax:  [unique:users,email ,$id] ?

And

validation rule is used to validate the value of the cnpj data

The rule cnpj certainly exists...

Where to find the customized rules at the project?
Most Valuable Expert 2018
Distinguished Expert 2019

Commented:
Point 1 - Yes! The unique rule takes in a table, a column and an ID you want to ignore.

Where to find the customized rule will depend on how you created it. The normal way is to use the artisan command:

php artisan make:rule MyCustomRule

That will create a new file in the app/Rules folder, and you'll need to edit that file to apply your custom logic and error message.

If you only need to use a Rule once, then you can use a Closure or you can Extend the Validator class in your models.

How did you create the custom rule?
Eduardo FuerteDeveloper and Analyst

Author

Commented:
The creation was not mine, that's a project I must to mantain.

My project doesn't have the Rules folder under app. The only Rules folder I have is under  \vendor\
Most Valuable Expert 2018
Distinguished Expert 2019

Commented:
OK. In that case, I don't know where it would have been put. Sounds like the developer has put it in a non-standard place, so it could be anywhere. You're going to have to search through your Code to find it.

Probably the easiest way is to cause the validation to fail so you know what error message is generated and then search on that.
Eduardo FuerteDeveloper and Analyst

Author

Commented:
Amazingly, forcing the error  and finding the obtained message at the project, the error only exists inside the UserController itself.

cnpj is a table's column, also.
Most Valuable Expert 2018
Distinguished Expert 2019

Commented:
OK. If the error only exists in the Controller, then it sounds like you're using a closure on the Validate facade.

The cnpj will be a column in the table because it's a property on the Model, but in your code, it's not only a property on the Model, it's a custom validation rule:

'cnpj' => 'required|cnpj|unique:users,cnpj,'.$id,

The first instance of cnpj is the property name, the second one is the custom validation rule, and the third one is the column in the database.

If you want me to take a further look, post up the full code of your UserController.
Eduardo FuerteDeveloper and Analyst

Author

Commented:
Of course, here is the code:

<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

use App\XXX;
...
use App\Models\RevendaFamiliarTipo;

use App\Http\Requests;
use App\Helpers\CustomFuncs;
use App\Support\RestTools;
use App\Support\AzureStorage;
use App\Support\FileEncoding;

use Carbon\Carbon;
use League\Csv\Reader;

use Yyyy;
use Hash;
use DB;
use Debugbar;
use Excel;
use Config;

use Illuminate\Support\Facades\Log;

class XXXController extends Controller
{

    public function index(Request $request){

      $allXXXs = XXX::where('tipoparticipante_id','>',2)->where('statusparticipante_id','<>',4)->orderby('name')->get();
      $tipoparticipantes = Tipoparticipante::where("id",">",2)->orderBy('nome')->get();

      $statusparticipantes = Statusparticipante::where("id","<>","4")->get();
      $sexos=Sexo::all();
      //$hierarquia=Hierarquia::returnSelect('Selecione um tipo de revenda','hierarquia_id');
      $hierarquias = Hierarquia::orderBy('nome')->get();

      $tamanhoRevendas = TamanhoRevenda::get();
      $numero_filial = Yyyy::XXX()->numero_filial;

      if(Yyyy::XXX()->tipoparticipante->identificador==="CONSULTOR"){
        $consultores = XXX::where('id',Yyyy::XXX()->id)->orderBy('name')->get();
        $gerentes = XXX::where('id',Yyyy::XXX()->gerente_id)->where('tipoparticipante_id',Tipoparticipante::where('identificador','GERENTE')->first()->id)->orderBy('name')->get();
        $consultor_id = Yyyy::XXX()->id;
        $gerente_id = 0;
      } else if (Yyyy::XXX()->tipoparticipante->identificador==="GERENTE"){
        $consultores = XXX::where('gerente_id',Yyyy::XXX()->id)->where('tipoparticipante_id',Tipoparticipante::where('identificador','CONSULTOR')->first()->id)->orderBy('name')->get();
        $gerentes = XXX::where('id',Yyyy::XXX()->id)->where('tipoparticipante_id',Tipoparticipante::where('identificador','GERENTE')->first()->id)->orderBy('name')->get();
        $consultor_id=0;
        $gerente_id = Yyyy::XXX()->id;
      } else {
        $consultores = XXX::where('tipoparticipante_id',Tipoparticipante::where('identificador','CONSULTOR')->first()->id)->orderBy('name')->get();
        $gerentes = XXX::where('tipoparticipante_id',Tipoparticipante::where('identificador','GERENTE')->first()->id)->orderBy('name')->get();
        $consultor_id=0;
        $gerente_id = 0;
      }

      $XXXs = XXX
        ::nivel(Yyyy::XXX()->hierarquia_id)
        ->consultor($consultor_id)
        ->gerente($gerente_id)
        ->where('tipoparticipante_id','>',2)
        ->where('statusparticipante_id','<>',4)
        ->orderby('name');
        
      $request->session()->put('admin_participantes', $XXXs->get());
      $XXXs = $XXXs->paginate(CustomFuncs::registrosPorPagina());

      
      return view('admin.XXX.index',compact('allXXXs', 'XXXs','tipoparticipantes','statusparticipantes', 'sexos','hierarquias','consultores','gerentes','tamanhoRevendas','gerente_id','consultor_id','numero_filial'));
    }

    public function listar(){
      $XXXs = XXX::where('tipoparticipante_id','>',2)->where('statusparticipante_id','<>',4)->orderby('name')->paginate(CustomFuncs::registrosPorPagina());
      //$XXXs->setPath('XXX/listar');
      return view('admin.XXX._list', ['XXXs' => $XXXs]);
    }

    public function filtrar(Request $request){
      $porLogin=$request->input('porLogin');
      $porCPF=$request->input('porCPF');
      $porCnpj = $request->input('porCnpj');
      $porNome=$request->input('porNome');
      $porTipoparticipante=$request->input('porTipoparticipante');
      $porStatusparticipante=$request->input('porStatusparticipante');
      $porConsultor = $request->input('porConsultor');
      $porGerente = $request->input('porGerente');
      $porTipo = $request->input('porTipo');

      if(Yyyy::XXX()->tipoparticipante->identificador==="CONSULTOR"){
        $porConsultor = Yyyy::XXX()->id;
        $porGerente = 0;
      } else if (Yyyy::XXX()->tipoparticipante->identificador==="GERENTE"){
        $porConsultor=0;
        $porGerente = Yyyy::XXX()->id;
      }


      if ($porLogin==='' && $porCPF==='' && $porCnpj==='' && $porNome==='' && $porTipoparticipante===''&& $porStatusparticipante==='' && $porConsultor==='' && $porGerente==="" && $porTipo === ""){
        $XXXs = XXX::where('tipoparticipante_id','>',2)->where('statusparticipante_id','<>',4)->orderby('name');
      } else {
        $XXXs = XXX::login($porLogin)->cpf($porCPF)->cnpj($porCnpj)->nome($porNome)->perfil($porTipoparticipante)->status($porStatusparticipante)->consultor($porConsultor)->gerente($porGerente)->hierarquia($porTipo)->orderby('name');
      }
      $request->session()->put('admin_participantes', $XXXs->get());
      //$XXXs->setPath('listar');
      return view('admin.XXX._list',['XXXs' => $XXXs->paginate(CustomFuncs::registrosPorPagina())]);
    }

   public function exportArquivo($tipo){
    

      switch ($tipo) {
          case 1:
              $extensao='xls';
              break;
          case 2:
              $extensao='csv';
              break;
          case 3:
              $extensao='pdf';
              break;
      }


      $XXXs = session('admin_participantes');
        // Initialize the array which will be passed into the Excel
      // generator.
      $XXXsArray = [];

      // Define the Excel spreadsheet headers
 
      $XXXsArray[] = ['ID','Login','Nome','E-mail','E-mail Comercial','CPF','CNPJ','GRUPO CNPJ','RG','Data de Nascimento','CEP','Logradouro','Número','Complemento','Bairro','UF','Cidade','Ponto de Referência','Telefone Residencial','Celular','Telefone Comercial','Perfil','Status','CPF Consultor','Consultor','CPF Gerente','Gerente','Tamanho da Revenda','Tipo da Revenda','Inserido no Sistema em','Atualizado no Sistema Em','Aceitou o regulamento?','Data de Aceite'];

      // Convert each member of the returned collection into an array,
      // and append it to the XXXs array.
      
      
      foreach ($XXXs as $XXX) {
        $XXXsArray[] = [
          $XXX->id
        , $XXX->login
        , $XXX->name
        , $XXX->email
        , $XXX->emailComercial
        , CustomFuncs::formatarCpf($XXX->cpf)
        , CustomFuncs::formatarCnpj($XXX->cnpj)
        
        //EF Jan/2020 Grupo CNPJ C1T191
        , CustomFuncs::formatarCnpj($XXX->cnpj_grupo)
        
        , $XXX->rg
        , CustomFuncs::formatarData($XXX->dataNascimento)
        , $XXX->cep
        , $XXX->logradouro
        , $XXX->numero
        , $XXX->complemento
        , $XXX->bairro
        , $XXX->uf
        , $XXX->cidade
        , $XXX->pontoReferencia
        , $XXX->telefoneResidencial
        , $XXX->celular
        , $XXX->telefoneComercial
        , $XXX->tipoparticipante->nome
        , $XXX->statusparticipante->nome
        , empty($XXX->consultor)?"":CustomFuncs::formatarCpf($XXX->consultor->cpf)
        , empty($XXX->consultor)?"":$XXX->consultor->name
        , empty($XXX->gerente)?"":CustomFuncs::formatarCpf($XXX->gerente->cpf)
        , empty($XXX->gerente)?"":$XXX->gerente->name
        , empty($XXX->tamanhoRevenda)?"":$XXX->tamanhoRevenda->identificador."-".$XXX->tamanhoRevenda->descricao
        , empty($XXX->hierarquia)?"":$XXX->hierarquia->nome
        , CustomFuncs::castToDateFormat($XXX->created_at,'d/m/Y H:i:s')
        , CustomFuncs::castToDateFormat($XXX->updated_at,'d/m/Y H:i:s')
        , $XXX->aceiteRegulamento==0 ? "NÃO" : "SIM"
        , CustomFuncs::castToDateFormat($XXX->dataAceiteRegulamento,'d/m/Y H:i:s')
        ];
      }


      // Generate and return the spreadsheet
      Excel::create('participantes', function($excel) use ($XXXsArray) {

          // Set the spreadsheet title, creator, and description
          $excel->setTitle('Participantes');
          $excel->setCreator('IPremi')->setCompany('IPremi');
          $excel->setDescription('Lista de Participantes');

          // Build the spreadsheet, passing in the XXXs array
          $excel->sheet('sheet1', function($sheet) use ($XXXsArray) {
              $sheet->fromArray($XXXsArray, null, 'A1', false, false);
              $sheet->setOrientation('landscape');
              $sheet->setfitToPage(true);
          });

        })->download($extensao);
    }


    public function obter($id){
      $XXX=XXX::find($id);
      
      try {
        $XXX=new Resultado(false,"",$XXX);
      } catch (\Exception $e) {
        $XXX=new Resultado(true,$e->getMessage(),"");
      }
      return response()->json($XXX);
    }

    public function excluir($id){
      $XXX=XXX::find($id);
      try {
        $XXX->statusparticipante_id=4;
        $XXX->updated_at=new \DateTime();
        $XXX->save();
        $resultado=new Resultado(false,"","Participante excluído com sucesso.");
      } catch (\Exception $e) {
        $resultado=new Resultado(true,$e->getMessage(),"");
      }
      return response()->json($resultado);
    }

    public function alterarSenha(Request $request){
      $id = $request->input('id');
      $this->validate($request, [
                  'password'=>'required|confirmed',
                ],
                [
                  'password.confirmed'=>'A confirmação da senha não confere com a senha fornecida.',
                  'password.required'=>'A nova senha deve ser fornecida.',
                ]
                );
      $participante = XXX::find($id);
      $participante->updated_at = new \DateTime();
      $participante->password = Hash::make($request->input('password'));

      try {
        $result=CustomFuncs::gravarUsuarioParceiro($participante);
        if ($result->erro){
          $msg = "";
          foreach ($result->retorno->ErrorList as $erros) {
            $msg .= $erros->Error."<br/>";
          }
          $resultado=new Resultado(true,$msg,"Erro ao salvar os dados no parceiro.");
        } else {
          $participante->idExterno = $result->retorno->ParticipantID;
          $participante->save();
          $resultado=new Resultado(false,"","Senha alterada com sucesso, será válida no próximo login efetuado.");
        }
      } catch (\Exception $e){
        $resultado=new Resultado(true,$e->getMessage(),"Erro ao alterar a senha.");
      }

      return response()->json($resultado);

    }

    private function validateConsultor(Request $request, $edit){
      if($edit){
        $this->validate($request, [
          'login' => 'required',
          'name' => 'required',
          'email' => 'email',
          'cpf' => 'required|cpf',
          'tipoparticipante_id'=>'required',
          'statusparticipante_id'=>'required',
          'sexo_id'=>'required',
          'password'=>'confirmed',
          'password_confirmation'=>'required_with:password',
          'emailComercial'=>'email'
        ],
        [
          'tipoparticipante_id.required'=>'O perfil é obrigatório, não deixe em branco.',
          'statusparticipante_id.required'=>'O status é obrigatório, não deixe em branco.',
          'sexo_id.required' => 'O sexo é obrigatório, não deixe em branco.',
          'password_confirmation.required_with'=>'A confirmação da senha é necessária quando uma senha é fornecida.',
          'password.confirmed'=>'A confirmação da senha não confere com a senha fornecida.',
          'cpf.cnpj'=>'O CPF fornecido não é válido.',
          'name.required'=>'O campo nome é obrigatório.'
        ]
      );
      } else {
        $this->validate($request, [
            'login' => 'required|unique:XXXs',
            'name' => 'required',
            'email' => 'email|unique:XXXs',
            'cpf' => 'required|cpf|unique:XXXs',
            'tipoparticipante_id'=>'required',
            'statusparticipante_id'=>'required',
            'sexo_id'=>'required',
            'password'=>'confirmed',
            'password_confirmation'=>'required_with:password',
            'emailComercial'=>'email'
          ],
          [
            'tipoparticipante_id.required'=>'O perfil é obrigatório, não deixe em branco.',
            'statusparticipante_id.required'=>'O status é obrigatório, não deixe em branco.',
            'sexo_id.required' => 'O sexo é obrigatório, não deixe em branco.',
            'password_confirmation.required_with'=>'A confirmação da senha é necessária quando uma senha é fornecida.',
            'password.confirmed'=>'A confirmação da senha não confere com a senha fornecida.',
            'login.unique'=>'O login já existe na base de dados.',
            'email.unique'=>'O email já existe na base de dados.',
            'cpf.unique'=>'O CPF já existe na base de dados.',
            'cpf.cnpj'=>'O CPF fornecido não é válido.',
            'name.required'=>'O campo nome é obrigatório.'
          ]
        );
      }
    }

    private function validateGerente(Request $request,$edit){
      if ($edit){
        $this->validate($request, [
            'login' => 'required',
            'name' => 'required',
            'email' => 'email',
            'cpf' => 'required|cpf',
            'tipoparticipante_id'=>'required',
            'statusparticipante_id'=>'required',
            'sexo_id'=>'required',
            'password'=>'confirmed',
            'password_confirmation'=>'required_with:password',
            'emailComercial'=>'email',
          ],
          [
            'tipoparticipante_id.required'=>'O perfil é obrigatório, não deixe em branco.',
            'statusparticipante_id.required'=>'O status é obrigatório, não deixe em branco.',
            'sexo_id.required' => 'O sexo é obrigatório, não deixe em branco.',
            'password_confirmation.required_with'=>'A confirmação da senha é necessária quando uma senha é fornecida.',
            'password.confirmed'=>'A confirmação da senha não confere com a senha fornecida.',
            'cpf.cnpj'=>'O CPF fornecido não é válido.',
            'name.required'=>'O campo nome é obrigatório.',
          ]
        );
      } else {
        $this->validate($request, [
            'login' => 'required|unique:XXXs',
            'name' => 'required',
            'email' => 'email|unique:XXXs',
            'cpf' => 'required|cpf|unique:XXXs',
            'tipoparticipante_id'=>'required',
            'statusparticipante_id'=>'required',
            'sexo_id'=>'required',
            'password'=>'confirmed',
            'password_confirmation'=>'required_with:password',
            'emailComercial'=>'email',
          ],
          [
            'tipoparticipante_id.required'=>'O perfil é obrigatório, não deixe em branco.',
            'statusparticipante_id.required'=>'O status é obrigatório, não deixe em branco.',
            'sexo_id.required' => 'O sexo é obrigatório, não deixe em branco.',
            'password_confirmation.required_with'=>'A confirmação da senha é necessária quando uma senha é fornecida.',
            'password.confirmed'=>'A confirmação da senha não confere com a senha fornecida.',
            'login.unique'=>'O login já existe na base de dados.',
            'email.unique'=>'O email já existe na base de dados.',
            'cpf.unique'=>'O CPF já existe na base de dados.',
            'cpf.cnpj'=>'O CPF fornecido não é válido.',
            'name.required'=>'O campo nome é obrigatório.',
          ]
        );
      }
      
    }

    
    public function salvar(Request $request){

      $id = $request->input('id');

      $flagConcedePontos = false;
      $kpi=Kpi::where('identificador','ACEITE')->where('tamanho_revenda_id',Yyyy::XXX()->tamanho_revenda_id)->first();

      $admin = $request->input('admin');

      /* Valida requisição */
      if ($id==0){
        $this->validate($request, [
          'tipoparticipante_id'=>'required',
          ],
          [
            'tipoparticipante_id.required'=>'O perfil é obrigatório, não deixe em branco.',
          ]
        );
        $perfil = Tipoparticipante::find($request->input('tipoparticipante_id'));
        switch ($perfil->identificador) {
          case 'REVENDA':
            $this->validateRevenda($request,false);
            break;
          case 'CONSULTOR':
            $this->validateConsultor($request,false);
            break;
          case 'GERENTE':
            $this->validateGerente($request,false);
            break;
          case 'GESTAO':
            $this->validateGestao($request,false);
            break;
        }
      } else {
        if ($admin=="0"){
          $this->validate($request, [
              'name' => 'required',
              'email' => 'required|email|unique:XXXs,email,'.$id,
              'dataNascimento'=>'required',
             
             
              'cnpj' => 'required|cnpj|unique:XXXs,cnpj,'.$id,
              
              //EF Jan 2020 (Duvida)
              'cnpj_grupo' => 'required',
              
              'telefoneResidencial'=>'required',
              'celular'=>'required',
              'emailComercial'=>'required|email',
              'telefoneComercial'=>'required',
              'aceiteRegulamento'=>'required|accepted',
              'cep'=>'required',
              'logradouro'=>'required',
              'bairro'=>'required',
              'uf'=>'required',
              'cidade'=>'required',
              'numero'=>'required|numeric',
              'tipoparticipante_id'=>'required',
              'statusparticipante_id'=>'required',
              'sexo_id'=>'required',
              'password'=>'confirmed',
              'password_confirmation'=>'required_with:password',
            ],
            [
              'name.required'=>'O campo nome é obrigatório.',
              'email.unique'=>'O e-mail já existe na base de dados.',
              'email.required'=>'O e-mail é obrigatório.',
              'email.email'=>'Forneça um e-mail válido.',
              'dataNascimento.required'=>'A data de nascimento é obrigatória.',
              'cnpj.unique'=>'O CNPJ já existe na base de dados.',
              'cnpj.cnpj'=>'O CNPJ fornecido não é válido.',
              'cnpj.required'=>'O CNPJ é obrigatório.',
              
              'cnpj_grupo.cnpj_grupo'=>'O CNPJ GRUPO fornecido não é válido.',
              'cnpj_grupo.required'=>'O CNPJ GRUPO é obrigatório.',
              
            
              'telefoneResidencial.required'=>'O telefone residencial é obrigatório.',
              'celular.required'=>'O telefone celular é obrigatório',
              'emailComercial.email'=>'O e-mail comercial não tem um formato válido de email.',
              'emailComercial.required'=>'O e-mail comercial é obrigatório.',
              'telefoneComercial.required'=>'O telefone comercial é obrigatório.',
              'aceiteRegulamento.accepted'=>'É necessário aceitar o regulamento.',
              'aceiteTermo.accepted'=>'É necessário aceitar os termos de uso',
              'cep.required'=>'O CEP é obrigatório.',
              'logradouro.required'=>'O endereço é obrigatório.',                            
              'bairro.required'=>'O bairro é obrigatório',
              'uf.required'=>'O Estado é obrigatório',
              'cidade.required'=>'A Cidade é obrigatória',
              'numero.required'=>'O número é obrigatório, se por um acaso não tiver, preencha com o valor 0 (zero).',
              'numero.numeric'=>'Somente valores numéricos são permitidos no campo <u>número</u>, caso o número de sua residência possua letra (ex. 45-A), insira o número neste campo e a letra A no complemento.',
              'tipoparticipante_id.required'=>'O perfil é obrigatório, não deixe em branco.',
              'statusparticipante_id.required'=>'O status é obrigatório, não deixe em branco.',
              'sexo_id.required' => 'O sexo é obrigatório, não deixe em branco.',
              'password_confirmation.required_with'=>'A confirmação da senha é necessária quando uma senha é fornecida.',
              'password.confirmed'=>'A confirmação da senha não confere com a senha fornecida.',
              'login.unique'=>'O login já existe na base de dados.',        
            ]
            );
        } else {
          $this->validate($request, [
            'tipoparticipante_id'=>'required',
            ],
            [
              'tipoparticipante_id.required'=>'O perfil é obrigatório, não deixe em branco.',
            ]
          );
          $perfil = Tipoparticipante::find($request->input('tipoparticipante_id'));
          switch ($perfil->identificador) {
            case 'REVENDA':
              $this->validateRevenda($request,true);
              break;
            case 'CONSULTOR':
              $this->validateConsultor($request,true);
              break;
            case 'GERENTE':
              $this->validateGerente($request,true);
              break;
            case 'GESTAO':
              $this->validateGestao($request,true);
              break;
          }
        }
      }

      if ($id==0){
        $participante = new XXX;
        $participante->created_at = new \DateTime();
      } else {
        $participante = XXX::find($id);
        $participante->updated_at = new \DateTime();
      }

      $participante->login = $request->input('login');
      $participante->name = $request->input('name');
      
      
      $cpf = trim($request->input('cpf'));
      if($cpf != null && $cpf != '')
        $participante->cpf = $cpf;

      $cnpj = trim($request->input('cnpj'));
      if($cnpj != null && $cnpj != '')
        $participante->cnpj = $cnpj;
        
        
  
      $cnpj_grupo = trim($request->input('cnpj_grupo'));
      if($cnpj_grupo != null && $cnpj_grupo != '')
        $participante->cnpj_grupo = $cnpj_grupo;
        

      $email = trim($request->input('email'));
      if($email != null && $email != '')
        $participante->email = $email;

      $dataNascimento = $request->input('dataNascimento');

      if(!empty($dataNascimento))
          $participante->dataNascimento = Carbon::createFromFormat('d/m/Y', $dataNascimento)->toDateTimeString();
      else if(empty($participante->dataNascimento))
          $participante->dataNascimento = "1980-01-01";


      if(!empty($request->input('sexo_id'))){
        $participante->sexo_id=$request->input('sexo_id');
        }
      else if(empty($participante->sexo_id))
        $participante->sexo_id = 3;


      if (!empty($request->input('consultor_id'))){
        $participante->consultor_id = $request->input('consultor_id');
      }

      if (!empty($request->input('gerente_id'))){
        $participante->gerente_id = $request->input('gerente_id');
      }

      $participante->tipoparticipante_id = $request->input('tipoparticipante_id');
      $participante->statusparticipante_id = $request->input('statusparticipante_id');

      if ($request->input('password')!=""){
        $participante->password = Hash::make($request->input('password'));
      }
      

      $participante->numero_filial = CustomFuncs::brancoParaNulo($request->input('codigo_filial'));
      $participante->cnpj_grupo    = CustomFuncs::brancoParaNulo($request->input('cnpj_grupo'));
     


      return response()->json($resultado);
    }

    public function salvarImagem(Request $request){

      $imagem=$request->file('file');
      $imagemTxt=$request->input('fileTxt');

      if (!$request->hasFile('file')){
        $imagemUrl = $imagemTxt;
      } else {
          if ($imagem){
              $imagemUrl = AzureStorage::saveFile($imagem,'conteudo');
          } else {
              $imagemUrl='';
          }
      }

      $output = array(
        "imagem" => $imagemUrl,
			);

      $resultado=new Resultado(false,"",$output);

      return response()->json($resultado);
    }

    public function subirLote(Request $request){

      $arquivo=$request->file('arquivoLote');

      Config::set('excel.import.heading', 'slugged_with_count');
      Config::set('excel.import.startRow', 1);

      try{
        $arquivoUrl = AzureStorage::saveFile($arquivo,'arquivos');
        $planilha = Excel::selectSheets('Participantes')->load($arquivo)->toArray();

        $validacao = $this->validarArquivo($planilha);

        if(!$validacao["valido"])
          return response()->json(new Resultado(false,"",$validacao));
        
                
        $this->processarLote($planilha);

        $saida = array (
          "mensagem"=>"<div class='alert alert-success text-center'><strong>Sucesso:</strong> Arquivo processado com sucesso!</div>",
          "valido"=>true
        );

      } catch (\Exception $e) {
        Debugbar::info($e);
        Log::error($e);

        $saida = array (
          "mensagem"=>"<div class='alert alert-warning text-center'><strong>Informação:</strong> Arquivo de participantes com formato inválido.<br />Por favor, verifique-o antes de continuar</div>",
          "valido"=>false
        );
      }

      return response()->json(new Resultado(false,"",$saida));
    }

    private function validarArquivo($planilha){  
        $msg = '<table class="table table-hover table-striped" width="100%">';
        $msg .= '<thead><tr class="theadOnExtrato">';
        $msg .= '<th class="text-center">Linha</th>';
        $msg .= '<th>Erro</th>';
        $msg .= '</tr></thead>';
        $msg .= '<tbody>';

        $erros = "";
        $linha = 2;
        $valido = false;

        if (count($planilha) <= 0)
         
          $erros.=$this->geraErro(0,'Arquivo de participantes vazio ou com erros. Por favor, edite o arquivo antes de continuar');   
          
        else {
          foreach($planilha as $registro){
              //Debugbar::info($registro);

              $cpfGerente=CustomFuncs::completarCpf(CustomFuncs::limparFormatacao($registro['cpf_gerente']));
              $nomeGerente=trim($registro['nome_gerente']);
              if($cpfGerente == '00000000000' || $cpfGerente == '')
                $erros.=$this->geraErro($linha,'CPF do gerente não informado');
              else if(!CustomFuncs::validarCpf($cpfGerente))
                $erros.=$this->geraErro($linha,'CPF do gerente '.$cpfGerente.' - '.$nomeGerente.' inválido');

              if($nomeGerente == null || $nomeGerente == '')
                $erros.=$this->geraErro($linha,'Nome do gerente não informado');

              $cpfConsultor=CustomFuncs::completarCpf(CustomFuncs::limparFormatacao($registro['cpf_consultor']));
              $nomeConsultor=trim($registro['nome_consultor']);
              if($cpfConsultor == '00000000000' || $cpfConsultor == '')
                $erros.=$this->geraErro($linha,'CPF do consultor não informado');
              else if(!CustomFuncs::validarCpf($cpfConsultor))
                $erros.=$this->geraErro($linha,'CPF do consultor '.$cpfConsultor.' - '.$nomeConsultor.' inválido');

              if($nomeConsultor == null || $nomeConsultor == '')
                $erros.=$this->geraErro($linha,'Nome do consultor não informado');

              $cnpj=CustomFuncs::completarCnpj(CustomFuncs::limparFormatacao($registro['cnpj_login']));
              if($cnpj == '00000000000000' || $cnpj == ''){
                $erros.=$this->geraErro($linha,'CNPJ da revenda não informado');
              } else if(!CustomFuncs::validarCnpj($cnpj)) {
                $erros.=$this->geraErro($linha,'CNPJ da revenda '.$cnpj.' inválido');
              } else {
                $validateXXX = XXX::where('cnpj',$cnpj)->first();
                if (!empty($validateXXX)){
                  $erros.=$this->geraErro($linha,'CNPJ da revenda '.$cnpj.' já está cadastrado!');
                }
              }
              
              $cnpj_grupo=CustomFuncs::completarCnpj(CustomFuncs::limparFormatacao($registro['cnpj_grupo']));
              if($cnpj_grupo == '00000000000000' || $cnpj_grupo == ''){
                $erros.=$this->geraErro($linha,'CNPJ GRUPO da revenda não informado');
              } else if(!CustomFuncs::validarCnpj($cnpj_grupo)) {
                $erros.=$this->geraErro($linha,'CNPJ GRUPO da revenda '.$cnpj_grupo.' inválido');
              } 
              
    
              $codigoFilial=trim($registro['codigo_da_filial']);
              if($codigoFilial == null || $codigoFilial == '')
                $erros.=$this->geraErro($linha,'Código da Filial da revenda não informada');
              
                
              //-------------------------------------------------------------------------------------------
              
             

              $razaoSocial=trim($registro['razao_social']);
              if($razaoSocial == null || $razaoSocial == '')
                $erros.=$this->geraErro($linha,'Razão Social da revenda não informada');

              $divisaoRevenda=trim($registro['divisao_da_revenda']);
              $hierarquia = Hierarquia::where('identificador',$divisaoRevenda)->first();
              if($hierarquia == null)
                $erros.=$this->geraErro($linha,'Divisão da revenda não informada ou com erro. Favor utilizar ATACADISTA, VAREJISTA ou MISTO');

              $tamanhoRevenda=trim($registro['tamanho_da_revenda']);              
              $tamanho_revenda = TamanhoRevenda::where('identificador',$tamanhoRevenda)->first();
              if($tamanho_revenda == null)
                $erros.=$this->geraErro($linha,'Tamanho da revenda não informado ou com erro. Favor utilizar P, M ou G');

              $linha++;
          }
        }

        if (!empty($erros)){
          $msg .= $erros.'</tbody></table>';
        } else {
          $valido = true;
        }

        return array (
          "mensagem"=>$msg,
          "valido"=>$valido
        );
    }


    private function geraErro($linha,$erro) {
      $retorno="<tr>";
      $retorno.="<td>";
      $retorno.=$linha;
      $retorno.="</td>";
      $retorno.="<td>";
      $retorno.=mb_convert_encoding($erro,"UTF-8","auto");
      //$retorno=$erro;
      $retorno.="</td>";
      $retorno.="<tr>";
      return $retorno;
    }

    public function alterasenhaadmin(){
      return view('admin.XXX.alterarSenha');
    }

    public function mudarSenha(Request $request){

      $this->validate($request, [
        'password'=>'confirmed|min:6',
        'password_confirmation'=>'required_with:password',
      ],
      [
        'password.min'=>'A nova senha deve ter no mínimo 6 caracteres.',
        'password_confirmation.required_with'=>'A confirmação da senha é necessária quando uma nova senha é fornecida.',
        'password.confirmed'=>'A confirmação da senha não confere com a senha fornecida.',
      ]
      );

      $XXX = XXX::find($request->input('id'));
      $XXX->password = Hash::make($request->input('password'));


      try {
        $XXX->save();
        return redirect('/admin/XXX/alteraSenha')->with('success', 'Senha alterada com sucesso!');
      } catch (\Exception $e){
        return redirect('/admin/XXX/alteraSenha')->with('error', 'Erro ao alterar senha!');
      }
    }
}

Open in new window

Most Valuable Expert 2018
Distinguished Expert 2019

Commented:
Hey Eduardo,

Right - there's nothing in your controller that defines the custom validation rules so you're going to have to do some searching for where they're defined.

If they're not in the App folder, you could try looking in the AppServiceProvider provider file to see if there are any extension methods.

Failing that, you'll just need to search you're entire codebase. Unfortunately, you've named the validation rules the same as your model property, so you're going to struggle to search on that
Eduardo FuerteDeveloper and Analyst

Author

Commented:
Hi Chris

I had a look at \Providers\AppServiceProvider.php and didn't find any reference to this validation rules.

I had done a complete search on code before with no clearings about.

Next days I'm going to better check this with the other programers.
Eduardo FuerteDeveloper and Analyst

Author

Commented:

Thank you for the guidance!