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;
            }));
        }