public HttpResponseMessage AtualizarPF(HttpRequestMessage request, MembroPFViewModel membroViewModel)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response;

                //Remove essa propridades para não fazera validação pois
                //na atualização do membro nao atualizao usuario do mesmo
                ModelState.Remove("membroViewModel.Usuario.Senha");
                ModelState.Remove("membroViewModel.Usuario.ConfirmSenha");

                if (!ModelState.IsValid)
                {
                    response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                      ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                      .Select(m => m.ErrorMessage).ToArray());
                }
                else
                {
                    var membro = _membroRep.GetSingle(membroViewModel.Id);

                    var usuario = _usuarioRep.GetSingle(1);
                    membro.AtualizarMembroPf(membroViewModel, usuario);

                    _unitOfWork.Commit();



                    membro.Pessoa.Enderecos.ForEach(x => { x.LocalizacaoGoogle(); });

                    _unitOfWork.Commit();

                    // Update view model
                    membroViewModel = Mapper.Map <Membro, MembroPFViewModel>(membro);
                    response = request.CreateResponse(HttpStatusCode.OK, membroViewModel);
                }

                return response;
            }));
        }
        public static void AtualizarMembroPf(this Membro membro, MembroPFViewModel membroVm, Usuario usuario)
        {
            membro.UsuarioAlteracao        = usuario;
            membro.Pessoa.UsuarioAlteracao = usuario;
            membro.Pessoa.PessoaFisica.UsuarioAlteracao = usuario;
            membro.Ativo        = membroVm.Ativo;
            membro.Pessoa.Ativo = membroVm.Ativo;
            membro.Pessoa.PessoaFisica.Ativo = membroVm.Ativo;
            membro.Comprador = membroVm.Comprador;
            membro.Pessoa.PessoaFisica.Nome  = membroVm.Nome;
            membro.Pessoa.PessoaFisica.Sexo  = (Sexo)membroVm.Sexo;
            membro.Pessoa.PessoaFisica.Cpf   = membroVm.Cpf;
            membro.Pessoa.PessoaFisica.Rg    = membroVm.Rg;
            membro.Pessoa.PessoaFisica.Cro   = membroVm.Cro;
            membro.Pessoa.PessoaFisica.Email = membroVm.Email;

            membro.Vip      = membroVm.Vip;
            membro.DddTel   = membroVm.DddTelComl;
            membro.Telefone = membroVm.TelefoneComl;
            membro.DddCel   = membroVm.DddCel;
            membro.Celular  = membroVm.Celular;
            membro.Contato  = membroVm.Contato;
            membro.DataFimPeriodoGratuito = membroVm.DataFimPeriodoGratuito;
        }
        public HttpResponseMessage InserirPf(HttpRequestMessage request, MembroPFViewModel membroPFViewModel)
        {
            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 (_membroRep.CpfExistente(membroPFViewModel.Cpf) > 0)
                    {
                        ModelState.AddModelError("CPF Existente", "CPF:" + membroPFViewModel.Cpf + " já existe .");
                        response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                          ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                          .Select(m => m.ErrorMessage).ToArray());
                    }
                    else if (_membroRep.CroExistente(membroPFViewModel.Cro) > 0)
                    {
                        ModelState.AddModelError("CRO Existente", "CRO:" + membroPFViewModel.Cro + " já existe .");
                        response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                          ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                          .Select(m => m.ErrorMessage).ToArray());
                    }
                    else
                    {
                        var usuario = _usuarioRep.GetSingle(1);

                        var pessoa = new Pessoa
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            TipoPessoa = TipoPessoa.PessoaFisica,
                            Ativo = membroPFViewModel.Ativo,
                        };

                        var pessoaFisica = new PessoaFisica
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            Pessoa = pessoa,
                            Nome = membroPFViewModel.Nome,
                            Cpf = membroPFViewModel.Cpf,
                            Rg = membroPFViewModel.Rg,
                            Cro = membroPFViewModel.Cro,
                            DtNascimento = membroPFViewModel.DtNascimento,
                            Email = membroPFViewModel.Email,
                            Sexo = (Sexo)membroPFViewModel.Sexo,
                            Ativo = membroPFViewModel.Ativo
                        };

                        _pessoaFisicaRep.Add(pessoaFisica);
                        _unitOfWork.Commit();



                        pessoa.PessoaFisica = pessoaFisica;
                        _pessoaRep.Edit(pessoa);
                        _unitOfWork.Commit();

                        var novoMembro = new Membro
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            Pessoa = pessoa,
                            Comprador = membroPFViewModel.Comprador,
                            Ativo = membroPFViewModel.Ativo,
                            Vip = membroPFViewModel.Vip,
                            DddTel = membroPFViewModel.DddTelComl,
                            Telefone = membroPFViewModel.TelefoneComl,
                            DddCel = membroPFViewModel.DddCel,
                            Celular = membroPFViewModel.Celular,
                            Contato = membroPFViewModel.Contato,
                            DataFimPeriodoGratuito = DateTime.Now.AddDays(30)
                        };
                        _membroRep.Add(novoMembro);

                        _unitOfWork.Commit();


                        var email = new Emails
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            AssuntoEmail = "Novo Membro Cliente PF",
                            EmailDestinatario = "*****@*****.**",
                            CorpoEmail = "NOVO CLIENTE",
                            Status = Status.NaoEnviado,
                            Origem = 0,
                            Ativo = true
                        };
                        _emailsRep.Add(email);
                        _unitOfWork.Commit();
                        // Update view model
                        membroPFViewModel = Mapper.Map <Membro, MembroPFViewModel>(novoMembro);
                        response = request.CreateResponse(HttpStatusCode.Created, membroPFViewModel);
                    }
                }
                return response;
            }));
        }