示例#1
0
        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)));
        }