public async Task <Response <UsuarioEscritorio> > Handle(CriarUsuarioInicialCommand request, CancellationToken cancellationToken)
        {
            var result = Response <UsuarioEscritorio> .WithResult(null);

            var existsUserWithSameUsername = await _context.UsuariosEscritorio.AnyAsync(u => u.Username == request.Usuario.Email);

            if (existsUserWithSameUsername)
            {
                result.AddError("Já existe um usuário com o mesmo e-mail, logue-se ou utilize outro e-mail");
                return(result);
            }

            var resultadoCriacaoEscritorio = await CriarEscritorio(request.CriarEscritorioCommand());

            if (resultadoCriacaoEscritorio.IsFailure)
            {
                result.AddErrors(resultadoCriacaoEscritorio.Errors);
            }

            if (result.IsFailure)
            {
                return(result);
            }

            CredenciaisAdvogado credenciais = new CredenciaisAdvogado();
            Oab oabSaida = new Oab();

            if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0)
            {
                credenciais = new CredenciaisAdvogado(
                    request.Usuario.NumeroOAB,
                    EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado),
                    null
                    );
            }

            UsuarioEscritorio user = new UsuarioEscritorio(
                resultadoCriacaoEscritorio.Result,
                request.Usuario.Email,
                _hashService.Hash(request.Usuario.Senha),
                new InformacoesPessoais(request.Usuario.Nome, request.Usuario.Sobrenome),
                new List <Permissao>()
            {
                new Permissao("EhAdministrador", "true")
            },
                credenciais
                );

            if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0)
            {
                oabSaida = new Oab(user.Codigo, request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado).UF, $"{request.Usuario.Nome} {request.Usuario.Sobrenome}");
                // CriarUsuarioInicialCommandMessage.Publish(oabSaida);
                await _oabContext.Oab.AddAsync(oabSaida);

                await _oabContext.SaveChangesAsync();
            }

            await _context.UsuariosEscritorio.AddAsync(user);

            await _context.SaveChangesAsync();

            return(Response <UsuarioEscritorio> .WithResult(user));
        }
示例#2
0
        public async Task <Response <UsuarioEscritorio> > Handle(CriarUsuarioNovoCommand request, CancellationToken cancellationToken)
        {
            var result = Response <UsuarioEscritorio> .WithResult(null);

            var existsUserWithSameUsername = await _context.UsuariosEscritorio.AnyAsync(u => u.Username == request.Usuario.Email);

            var escritorioAtual = await _context.Escritorios.FirstOrDefaultAsync(o => o.Informacoes.NomeFantasia == request.Escritorio.NomeFantasia);

            string ehAdministrador = "false";

            if (request.Usuario.ehAdministrador != null && !request.Usuario.ehAdministrador.Equals(""))
            {
                ehAdministrador = request.Usuario.ehAdministrador;
            }

            if (escritorioAtual == null)
            {
                result.AddError("Escritorio não encontrado.");
                return(result);
            }

            if (existsUserWithSameUsername)
            {
                result.AddError("Já existe um usuário com o mesmo e-mail, logue-se ou utilize outro e-mail");
                return(result);
            }

            CredenciaisAdvogado credenciais = new CredenciaisAdvogado();
            Oab oabSaida = new Oab();

            if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0)
            {
                credenciais = new CredenciaisAdvogado(
                    request.Usuario.NumeroOAB,
                    EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado),
                    null
                    );
            }

            UsuarioEscritorio user = new UsuarioEscritorio(
                escritorioAtual.Codigo,
                request.Usuario.Email,
                _hashService.Hash(request.Usuario.Senha),
                new InformacoesPessoais(request.Usuario.Nome, request.Usuario.Sobrenome),
                new List <Permissao>()
            {
                new Permissao("EhAdministrador", ehAdministrador)
            },
                credenciais
                );

            if (request.Usuario.NumeroOAB != null && request.Usuario.Estado != 0)
            {
                oabSaida = new Oab(user.Codigo, request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado).UF, $"{request.Usuario.Nome} {request.Usuario.Sobrenome}");
                //CriarUsuarioInicialCommandMessage.Publish(oabSaida);
                await _oabContext.Oab.AddAsync(oabSaida);

                await _oabContext.SaveChangesAsync();
            }
            ;

            await _context.UsuariosEscritorio.AddAsync(user);

            await _context.SaveChangesAsync();

            return(Response <UsuarioEscritorio> .WithResult(user));
        }