public Mensagem AtualizarPaciente(PacienteListarEditarViewModel pacienteListarEditarViewModel)
        {
            Paciente pacienteRetorno = null;

            if (!Regex.IsMatch(pacienteListarEditarViewModel.Cpf, cpfComMascara))
            {
                if (Regex.IsMatch(pacienteListarEditarViewModel.Cpf, cpfSemMascara))
                {
                    pacienteListarEditarViewModel.Cpf = pacienteListarEditarViewModel.Cpf.Substring(0, 3) + "." + pacienteListarEditarViewModel.Cpf.Substring(3, 3) + "." + pacienteListarEditarViewModel.Cpf.Substring(6, 3) + "-" + pacienteListarEditarViewModel.Cpf.Substring(9, 2);
                }
                else
                {
                    return(new Mensagem(0, "CPF não possui o formato correto!"));
                }
            }

            if (!Regex.IsMatch(pacienteListarEditarViewModel.Rg, rgComMascara))
            {
                if (Regex.IsMatch(pacienteListarEditarViewModel.Rg, rgSemMascara))
                {
                    pacienteListarEditarViewModel.Rg = pacienteListarEditarViewModel.Rg.Substring(0, 2) + "." + pacienteListarEditarViewModel.Rg.Substring(2, 3) + "." + pacienteListarEditarViewModel.Rg.Substring(5, 3) + "-" + pacienteListarEditarViewModel.Rg.Substring(8);
                }
                else
                {
                    return(new Mensagem(0, "RG não possui o formato correto!"));
                }
            }

            if (!Regex.IsMatch(pacienteListarEditarViewModel.Telefone, celularComMascara))
            {
                if (Regex.IsMatch(pacienteListarEditarViewModel.Telefone, celularSemMascara))
                {
                    pacienteListarEditarViewModel.Telefone = "(" + pacienteListarEditarViewModel.Telefone.Substring(0, 2) + ")" + pacienteListarEditarViewModel.Telefone.Substring(2, 5) + "-" + pacienteListarEditarViewModel.Telefone.Substring(7);
                }
                else
                {
                    return(new Mensagem(0, "Telefone não possui o formato correto!"));
                }
            }

            if (!Regex.IsMatch(pacienteListarEditarViewModel.Endereco.Cep, cepComMascara))
            {
                if (Regex.IsMatch(pacienteListarEditarViewModel.Endereco.Cep, cepSemMascara))
                {
                    pacienteListarEditarViewModel.Endereco.Cep = pacienteListarEditarViewModel.Endereco.Cep.Substring(0, 5) + "-" + pacienteListarEditarViewModel.Endereco.Cep.Substring(5);
                }
                else
                {
                    return(new Mensagem(0, "CEP não possui o formato correto!"));
                }
            }

            pacienteRetorno = this.pacienteRepository.BuscarPacientePorCpf(pacienteListarEditarViewModel.Cpf);
            if (pacienteRetorno != null && !pacienteRetorno.IdPaciente.ToString().Equals(pacienteListarEditarViewModel.Id))
            {
                return(new Mensagem(0, "Já existe um paciente cadastrado com este CPF!"));
            }

            pacienteRetorno = this.pacienteRepository.BuscarPacientePorRg(pacienteListarEditarViewModel.Rg);
            if (pacienteRetorno != null && !pacienteRetorno.IdPaciente.ToString().Equals(pacienteListarEditarViewModel.Id))
            {
                return(new Mensagem(0, "Já existe um paciente cadastrado com esse RG!"));
            }

            if (!(pacienteListarEditarViewModel.DataNascimento <= DateTime.Now))
            {
                return(new Mensagem(0, "A data de nascimento não pode ser uma data que ainda não ocorreu!"));
            }

            bool     resultado = true;
            Endereco endereco  = new Endereco(pacienteListarEditarViewModel.Endereco.Cep, pacienteListarEditarViewModel.Endereco.Logradouro, pacienteListarEditarViewModel.Endereco.Numero, pacienteListarEditarViewModel.Endereco.Complemento, pacienteListarEditarViewModel.Endereco.Bairro, pacienteListarEditarViewModel.Endereco.Localidade, pacienteListarEditarViewModel.Endereco.Uf);
            Guid     id        = this.enderecoRepository.BuscaIdEndereco(endereco);

            if (id == Guid.Empty)
            {
                // Se não existe este endereço cadastrado, verifica se alguma entidade depende do endereço atual do paciente. Caso positivo, um novo endereço é cadastrado.
                // Caso contrário, o endereço novo é atualizado sobre o endereço antigo

                int quantidade = this.enderecoRepository.QuantidadeReferenciasEndereco(new Guid(pacienteListarEditarViewModel.Endereco.Id));

                if (quantidade > 1)
                {
                    resultado = this.enderecoRepository.CadastrarEndereco(endereco);
                    id        = this.enderecoRepository.BuscaIdEndereco(endereco);
                }
                else
                {
                    endereco.IdEndereco = new Guid(pacienteListarEditarViewModel.Endereco.Id);
                    resultado           = this.enderecoRepository.AtualizarEndereco(endereco);
                    id = endereco.IdEndereco;
                }
            }

            if (!resultado)
            {
                return(new Mensagem(0, "Falha ao atualizar paciente!"));
            }

            Paciente paciente = new Paciente(new Guid(pacienteListarEditarViewModel.Id), pacienteListarEditarViewModel.Nome, pacienteListarEditarViewModel.NomeSocial, pacienteListarEditarViewModel.DataNascimento, pacienteListarEditarViewModel.Sexo, pacienteListarEditarViewModel.Cpf, pacienteListarEditarViewModel.Rg, pacienteListarEditarViewModel.Telefone, pacienteListarEditarViewModel.Email, id);

            resultado = this.pacienteRepository.AtualizarPaciente(paciente);

            if (!resultado)
            {
                return(new Mensagem(0, "Falha ao atualizar paciente!"));
            }

            return(new Mensagem(1, "Paciente atualizado com sucesso!"));
        }
예제 #2
0
 public Mensagem AtualizarPaciente([FromBody] PacienteListarEditarViewModel pacienteListarEditarViewModel)
 {
     return(this.pacienteService.AtualizarPaciente(pacienteListarEditarViewModel));
 }