public HttpResponseMessage Inserir(HttpRequestMessage request, MembroViewModel membroViewModel)
        {
            membroViewModel.Cnpj = membroViewModel.Cnpj.Replace('.', ' ').Replace('/', ' ').Replace('-', ' ');
            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.CnpjExistente(membroViewModel.Cnpj) > 0)
                    {
                        ModelState.AddModelError("CNPJ Existente", "CNPJ:" + membroViewModel.Cnpj + " 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.PessoaJuridica,
                            Ativo = membroViewModel.Ativo,
                        };

                        var pessoaJuridica = new PessoaJuridica
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            Pessoa = pessoa,
                            NomeFantasia = membroViewModel.NomeFantasia,
                            Cnpj = membroViewModel.Cnpj,
                            RazaoSocial = membroViewModel.RazaoSocial,
                            DtFundacao = membroViewModel.DtFundacao,
                            Email = membroViewModel.Email,
                            InscEstadual = membroViewModel.InscEstadual,
                            Ativo = membroViewModel.Ativo
                        };

                        _pessoaJuridicaRep.Add(pessoaJuridica);
                        _unitOfWork.Commit();



                        pessoa.PessoaJuridica = pessoaJuridica;
                        _pessoaRep.Edit(pessoa);
                        _unitOfWork.Commit();

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

                        _unitOfWork.Commit();


                        var email = new Emails
                        {
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                            AssuntoEmail = "Novo Membro Cliente PJ",
                            EmailDestinatario = "*****@*****.**",
                            CorpoEmail = "NOVO CLIENTE",
                            Status = Status.NaoEnviado,
                            Origem = 0,
                            Ativo = true
                        };
                        _emailsRep.Add(email);
                        _unitOfWork.Commit();

                        // Update view model
                        membroViewModel = Mapper.Map <Membro, MembroViewModel>(novoMembro);
                        response = request.CreateResponse(HttpStatusCode.Created, membroViewModel);
                    }
                }

                return response;
            }));
        }