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

            var escritorio = await _context.Escritorios.Include(b => b.Endereco)
                             .FirstOrDefaultAsync(u => u.Informacoes.CNPJ == request.CNPJ);

            var enderecoCompleto = $"{request.Endereco.Rua}, {request.Endereco.Numero} - {request.Endereco.Cidade} - {request.Endereco.Estado}";

            var(lat, lon) = await _geocodingService.ObterCoordenadas(enderecoCompleto);

            if (escritorio == null)
            {
                result.AddError("Usuario não encontrado para modificar");
                return(result);
            }

            escritorio.AtualizarInformacoesEscritorio(new InformacoesDoEscritorio(request.NomeFantasia, request.RazaoSocial, request.CNPJ));
            escritorio.Endereco.AtualizarDadosEndereco(
                request.Endereco.CEP,
                request.Endereco.Rua,
                request.Endereco.Numero,
                request.Endereco.Complemento,
                request.Endereco.Bairro,
                request.Endereco.Cidade,
                request.Endereco.Estado,
                lat,
                lon
                );

            _context.Escritorios.Update(escritorio);
            await _context.SaveChangesAsync();

            return(Response <Escritorio> .WithResult(escritorio));
        }
        public async Task <Response <EspecialidadesEscritorio> > Handle(CriarEspecialidadeEscritorioCommand request, CancellationToken cancellationToken)
        {
            var result = Response <EspecialidadesEscritorio> .WithResult(null);

            var escritorioAtual = await _context.Escritorios.FirstOrDefaultAsync(o => o.Codigo == request.CodigoEscritorio);

            var especialidade = await _context.Especialidades.FirstOrDefaultAsync(e => e.Codigo == request.CodigoEspecialidade);

            var existsAlredy = await _context.EspecialidadesEscritorio.AnyAsync(u => u.CodigoEscritorio == escritorioAtual.Codigo && u.CodigoEspecialidade == especialidade.Codigo);

            if (existsAlredy)
            {
                result.AddError("Já existe uma especialidade com o mesmo nome, utilize outro nome.");
                return(result);
            }

            var especialidadesEscritorio = new EspecialidadesEscritorio(especialidade.Codigo, escritorioAtual.Codigo
                                                                        );

            await _context.EspecialidadesEscritorio.AddAsync(especialidadesEscritorio);

            await _context.SaveChangesAsync();

            return(Response <EspecialidadesEscritorio> .WithResult(especialidadesEscritorio));
        }
        public async Task <Response <OabValidada> > Handle(ValidarOabCommand request, CancellationToken cancellationToken)
        {
            OabValidada oab    = new OabValidada(request.CodigoAdvogado, request.Uf, request.NumeroOab, request.CaminhoImagem, request.Ativo, request.Existe);
            var         result = Response <OabValidada> .WithResult(null);

            CredenciaisAdvogado novasCredenciais = new CredenciaisAdvogado();
            var users = _context.UsuariosEscritorio
                        .Where(u => u.Credenciais.NumeroOab == request.NumeroOab).ToList();

            if (users == null)
            {
                result.AddError("Usuario não encontrado para modificar");
                return(result);
            }

            foreach (var user in users)
            {
                novasCredenciais = new CredenciaisAdvogado(request.NumeroOab, EstadoBrasileiro.ObterPorUF(request.Uf), request.CaminhoImagem);
                user.Credenciais = novasCredenciais;
                Permissao permissao       = new Permissao("OabValida", "true");
                bool      existePermissao = user.Permissoes.Any(p => p.Nome == "OabValida");
                if (!existePermissao)
                {
                    user.Permissoes.Add(permissao);
                }

                _context.UsuariosEscritorio.Update(user);
                await _context.SaveChangesAsync();
            }

            return(Response <OabValidada> .WithResult(oab));
        }
        public async Task <Response <UsuarioEscritorio> > Handle(RemoverUsuarioCommand request, CancellationToken cancellationToken)
        {
            var result = Response <UsuarioEscritorio> .WithResult(null);

            var user = await _context.UsuariosEscritorio.FirstOrDefaultAsync(u => u.Codigo == request.CodigoUsuario);

            if (user == null)
            {
                result.AddError("Usuario não encontrado para deleção");
                return(result);
            }


            _context.UsuariosEscritorio.Remove(user);
            await _context.SaveChangesAsync();

            return(Response <UsuarioEscritorio> .WithResult(user));
        }
Esempio n. 5
0
        public async Task <Response <EspecialidadesEscritorio> > Handle(RemoverEspecialidadeEscritorioCommand request, CancellationToken cancellationToken)
        {
            var result = Response <EspecialidadesEscritorio> .WithResult(null);

            var existsAlredy = await _context.EspecialidadesEscritorio.AnyAsync(u => u.Codigo == request.CodigoEspecialidadeEscritorio);

            if (!existsAlredy)
            {
                result.AddError("Não existe uma especialidade com este codigo, utilize outro codigo.");
                return(result);
            }

            var especialidade = await _context.EspecialidadesEscritorio.FirstOrDefaultAsync(u => u.Codigo == request.CodigoEspecialidadeEscritorio);

            _context.EspecialidadesEscritorio.Remove(especialidade);
            await _context.SaveChangesAsync();

            return(Response <EspecialidadesEscritorio> .WithResult(especialidade));
        }
Esempio n. 6
0
        public async Task <Response <UsuarioEscritorio> > Handle(ModificarUsuarioCommand request, CancellationToken cancellationToken)
        {
            var result = Response <UsuarioEscritorio> .WithResult(null);

            CredenciaisAdvogado novasCredenciais = new CredenciaisAdvogado();
            var user = await _context.UsuariosEscritorio
                       .FirstOrDefaultAsync(u => u.Codigo == request.Usuario.CodigoUsuario);

            if (user == null)
            {
                result.AddError("Usuario não encontrado para modificar");
                return(result);
            }

            if (user.Credenciais != null && user.Credenciais.CaminhoFoto != null && !user.Credenciais.CaminhoFoto.Equals(""))
            {
                novasCredenciais = new CredenciaisAdvogado(request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado), user.Credenciais.CaminhoFoto);
            }
            else
            {
                novasCredenciais = new CredenciaisAdvogado(request.Usuario.NumeroOAB, EstadoBrasileiro.ObterPorCodigo(request.Usuario.Estado), "");
            }

            user.Credenciais = novasCredenciais;

            user.AtualizarInformacoesPessoais(new InformacoesPessoais(request.Usuario.Nome, request.Usuario.Sobrenome));

            if (request.Usuario.ehAdministrador == "true" && user.Permissoes.Exists(p => p.Nome == "EhAdministrador"))
            {
                user.Permissoes.Find(p => p.Nome == "EhAdministrador").ConcedePermissao();
            }
            else
            if (user.Permissoes.Exists(p => p.Nome == "EhAdministrador"))
            {
                user.Permissoes.Find(p => p.Nome == "EhAdministrador").RetiraPermissao();
            }


            _context.UsuariosEscritorio.Update(user);
            await _context.SaveChangesAsync();

            return(Response <UsuarioEscritorio> .WithResult(user));
        }
        public async Task <Response <Especialidade> > Handle(ModificarEspecialidadeCommand request, CancellationToken cancellationToken)
        {
            var result = Response <Especialidade> .WithResult(null);

            var especialidade = await _context.Especialidades.FirstOrDefaultAsync(u => u.Codigo == request.CodigoEspecialidade);

            if (especialidade == null)
            {
                result.AddError("Não existe uma especialidade com este mesmo nome, utilize outro nome.");
                return(result);
            }

            especialidade.Nome      = request.Especialidade.Nome;
            especialidade.Descricao = request.Especialidade.Descricao;

            _context.Especialidades.Update(especialidade);
            await _context.SaveChangesAsync();

            return(Response <Especialidade> .WithResult(especialidade));
        }
Esempio n. 8
0
        public async Task <Response <Especialidade> > Handle(CriarEspecialidadeCommand request, CancellationToken cancellationToken)
        {
            var result = Response <Especialidade> .WithResult(null);

            var existsAlredy = await _context.Especialidades.AnyAsync(u => u.Nome == request.Especialidade.Nome);

            if (existsAlredy)
            {
                result.AddError("Já existe uma especialidade com o mesmo nome, utilize outro nome.");
                return(result);
            }

            var especialidade = new Especialidade(request.Especialidade.Nome, request.Especialidade.Descricao);

            await _context.Especialidades.AddAsync(especialidade);

            await _context.SaveChangesAsync();

            return(Response <Especialidade> .WithResult(especialidade));
        }
        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));
        }
Esempio n. 10
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));
        }