public ICommandResult Handle(RegistrarUsuarioCommand command) { //Fail Fast Validation command.Validate(); if (command.Invalid) { return(new GenericCommandResult(false, _msgError, command.Notifications)); } //Verifica se o e-mail do usuário já existe var usuario = _usuario_repository.ObterPorEmail(command.Email); if (usuario != null) { return(new GenericCommandResult(false, "O e-mail informado já está em uso no Sistema", command.Notifications)); } //Busca o estabelecimento provisório var estabelecimento = _estabelecimento_repository.ObterPorCNPJ(command.CnpjEstabelecimento); //Criar o Usuario var novo_usuario = new Usuario(estabelecimento, command.IdFirebase, command.Email, command.Nome); //Salvar o Usuario _usuario_repository.Criar(novo_usuario); //Busca a Claim Visitante var claimVisitante = _claims_repository.ObterPorNomeValor("PerfilAcesso", "Visitante"); //Vincular a claim ao usuario _usuario_claims_repository.Criar(new UsuarioClaims { UsuarioId = novo_usuario.Id, ClaimId = claimVisitante.Id }); //Retorna o resultado return(new GenericCommandResult(true, "Usuario Registrado com Sucesso!", _mapper.Map <UsuarioResponse>(novo_usuario))); }