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