public HttpResponseMessage PostCliente(Enderecos item)
        {
            item = repositorio.Add(item);
            var response = Request.CreateResponse <Enderecos>(HttpStatusCode.Created, item);

            string uri = Url.Link("DefaultApi", new { IdCliente = item.IdCliente });

            response.Headers.Location = new Uri(uri);
            return(response);
        }
        public async Task <NovoClienteResponseDto> CadastrarCliente(NovoClienteRequestDto novoCliente)
        {
            var validacao = Validacoes.ValidarObjeto(new NovoClienteRequestDtoValidador().Validate(novoCliente));

            if (!validacao.objetoValido)
            {
                return new NovoClienteResponseDto
                       {
                           ClienteId = Guid.Empty,
                           Sucesso   = false,
                           Mensagem  = validacao.erros
                       }
            }
            ;

            var clienteExistente = await _clienteRepositorio.Search(c => c.CPF == novoCliente.CPF.RemoverDigitosNaoNumericos() || c.Identidade == novoCliente.Identidade.RemoverDigitosNaoNumericos());

            if (!clienteExistente.Any())
            {
                var numeroDeClientes = (await _clienteRepositorio.GetAll()).Count();

                var cliente = new Cliente
                {
                    Nome = novoCliente.Nome,
                    NumeroDeMatricula = Convert.ToInt64(Constantes.CODIGO_DA_UNIDADE + numeroDeClientes.ToString()),
                    CPF                   = novoCliente.CPF.RemoverDigitosNaoNumericos(),
                    Identidade            = novoCliente.Identidade.RemoverDigitosNaoNumericos(),
                    PlanoDePagamento      = PlanoDePagamento.Mensal,
                    UltimaAvaliacaoFisica = DateTime.Now.Date,
                    VencimentoPagamento   = DateTime.Now.AddMonths(1).Date
                };

                await _clienteRepositorio.Add(cliente);

                var endereco = new Endereco
                {
                    ClienteId   = cliente.Id,
                    Rua         = novoCliente.Rua,
                    Bairro      = novoCliente.Bairro,
                    Numero      = novoCliente.Numero,
                    Complemento = novoCliente.Complemento
                };

                await _enderecoRepositorio.Add(endereco);

                cliente.EnderecoId = endereco.Id;

                await _clienteRepositorio.Update(cliente);

                return(new NovoClienteResponseDto
                {
                    ClienteId = cliente.Id,
                    Sucesso = true,
                    Mensagem = ClienteMensagens.CLIENTE_CADASTRADO
                });
            }

            return(new NovoClienteResponseDto
            {
                ClienteId = Guid.Empty,
                Sucesso = false,
                Mensagem = ClienteMensagens.DOCUMENTO_JA_CADASTRADO
            });
        }
 public long Add(Endereco obj)
 {
     return(_enderecoRepositorio.Add(obj).ID);
 }