public HttpResponseMessage InserirCadastro(HttpRequestMessage request, EnderecoViewModel enderecoViewModel)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;

                if (enderecoViewModel.BairroDescNew != null ||
                    enderecoViewModel.BairroDescNew != "")
                {
                    //remove a validação do bairro quase não tenha achado, pois nesse caso vamos cadastro o digitado manualmente
                    ModelState.Remove("enderecoViewModel.BairroId");
                }

                if (!ModelState.IsValid)
                {
                    response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                      ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                      .Select(m => m.ErrorMessage).ToArray());
                }
                else
                {
                    if (_enderecoRep.VerificaEnderecoJaCadastrado(enderecoViewModel.Cep, enderecoViewModel.PessoaId) > 0)
                    {
                        ModelState.AddModelError("CEP Existente", "CEP:" + enderecoViewModel.Cep + " já existe.");
                        response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                          ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                          .Select(m => m.ErrorMessage).ToArray());
                    }
                    else
                    {
                        Usuario usuario = _usuarioRep.GetSingle(1);

                        if (!string.IsNullOrEmpty(enderecoViewModel.BairroDescNew))
                        {
                            //var cit = _cidadeRep.GetSingle(fornecedorViewModel.Endereco.CidadeId);
                            Bairro bairroCad = new Bairro()
                            {
                                DescBairro = enderecoViewModel.BairroDescNew,
                                CidadeId = enderecoViewModel.CidadeId,
                                DtCriacao = DateTime.Now,
                                UsuarioCriacao = usuario
                            };

                            _bairroRep.Add(bairroCad);
                            _unitOfWork.Commit();

                            enderecoViewModel.BairroId = bairroCad.Id;
                        }

                        if (_enderecoRep.GetAll().Count(x => x.Pessoa.Id == enderecoViewModel.PessoaId) == 0)
                        {
                            enderecoViewModel.EnderecoPadrao = true;
                        }

                        Endereco novoEndereco = new Endereco()
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            PessoaId = enderecoViewModel.PessoaId,
                            EstadoId = enderecoViewModel.EstadoId,
                            CidadeId = enderecoViewModel.CidadeId,
                            BairroId = enderecoViewModel.BairroId,
                            LogradouroId = enderecoViewModel.LogradouroId,
                            Numero = enderecoViewModel.NumEndereco,
                            Complemento = enderecoViewModel.Complemento,
                            DescEndereco = enderecoViewModel.Endereco.Trim(),
                            Cep = enderecoViewModel.Cep,
                            Ativo = enderecoViewModel.Ativo,
                            EnderecoPadrao = enderecoViewModel.EnderecoPadrao,
                            Referencia = enderecoViewModel.Referencia
                        };

                        novoEndereco.LocalizacaoGoogle();

                        _enderecoRep.Add(novoEndereco);

                        _unitOfWork.Commit();

                        Membro membroAtual = _membroRep.FindBy(p => p.PessoaId == enderecoViewModel.PessoaId).FirstOrDefault();

                        // Update view model
                        enderecoViewModel = Mapper.Map <Endereco, EnderecoViewModel>(novoEndereco);
                        response = request.CreateResponse(HttpStatusCode.Created, enderecoViewModel);
                    }
                }

                return response;
            }));
        }
Beispiel #2
0
        public HttpResponseMessage Inserir(HttpRequestMessage request, EnderecoViewModel enderecoViewModel)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;

                if (!ModelState.IsValid)
                {
                    response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                      ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                      .Select(m => m.ErrorMessage).ToArray());
                }
                else
                {
                    if (_enderecoRep.VerificaEnderecoJaCadastrado(enderecoViewModel.Cep, enderecoViewModel.PessoaId) > 0)
                    {
                        ModelState.AddModelError("CEP Existente", "CEP:" + enderecoViewModel.Cep + " já existe.");
                        response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                          ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                          .Select(m => m.ErrorMessage).ToArray());
                    }
                    else
                    {
                        Usuario usuario = _usuarioRep.GetSingle(int.Parse(HttpContext.Current.User.Identity.GetUserId()));

                        enderecoViewModel.PessoaId = usuario.PessoaId;

                        Endereco novoEndereco = new Endereco()
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            PessoaId = enderecoViewModel.PessoaId,
                            EstadoId = enderecoViewModel.EstadoId,
                            CidadeId = enderecoViewModel.CidadeId,
                            BairroId = enderecoViewModel.BairroId,
                            LogradouroId = enderecoViewModel.LogradouroId,
                            Numero = enderecoViewModel.NumEndereco,
                            Complemento = enderecoViewModel.Complemento ?? string.Empty,
                            DescEndereco = enderecoViewModel.Endereco,
                            Cep = enderecoViewModel.Cep,
                            Ativo = enderecoViewModel.Ativo,
                            EnderecoPadrao = enderecoViewModel.EnderecoPadrao,
                            Referencia = enderecoViewModel.Referencia ?? string.Empty
                        };

                        _enderecoRep.Add(novoEndereco);
                        _unitOfWork.Commit();

                        foreach (var itemPeriodo in enderecoViewModel.PeriodoEntrega)
                        {
                            HorasEntregaMembro horarioEntrega = new HorasEntregaMembro()
                            {
                                UsuarioCriacao = usuario,
                                DtCriacao = DateTime.Now,
                                PeriodoId = itemPeriodo.Id,
                                EnderecoId = novoEndereco.Id,
                                DescHorarioEntrega = enderecoViewModel.DescHorarioEntrega
                            };

                            _horarioEntregaMembroRep.Add(horarioEntrega);
                        }


                        _unitOfWork.Commit();

                        // Update view model
                        enderecoViewModel = Mapper.Map <Endereco, EnderecoViewModel>(novoEndereco);
                        response = request.CreateResponse(HttpStatusCode.Created, enderecoViewModel);
                    }
                }

                return response;
            }));
        }