private HttpResponseMessage ValidarDados(ModeloViewModel modelo) { if (!ModelState.IsValid) { JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.ErrorMessage)); return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, JsonResult)); } var modeloDM = _modeloAplicacao.BuscarPor(x => x.Descricao.ToLower() == modelo.Descricao.ToLower()).FirstOrDefault(); if (modeloDM != null) { var modeloVM = AutoMapper.Mapper.Map <Modelo, ModeloViewModel>(modeloDM); JsonResult.Message = "Modelo ja Cadastrado!"; JsonResult.Object = modeloVM; return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, JsonResult)); } var marcaDM = _marcaoAplicacao.BuscarPorId(modelo.Marca.Id); if (marcaDM == null) { JsonResult.Message = "Marca não existe em nosso sistema, inserir Id correto!"; return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, JsonResult)); } return(null); }
public HttpResponseMessage Customers([FromBody] CondutorSoftparkViewModel condutorViewModel) { try { if (!ModelState.IsValid) { JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.ErrorMessage)); return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, JsonResult)); } var clienteId = condutorViewModel.ERPId ?? 0; var clienteJaExitente = _clienteAplicacao.BuscarPorId(clienteId); var unidadesIds = condutorViewModel.Contratos.Select(x => x.Estacionamento).Select(x => x.Id).ToList(); var unidades = _unidadeAplicacao.BuscarPor(x => unidadesIds.Contains(x.Id)).ToList(); var menssagemErro = Validar(unidades, unidadesIds, clienteJaExitente, clienteId); if (menssagemErro != null) { return(menssagemErro); } var cidade = _cidadeAplicacao.PrimeiroPor(x => x.Descricao == condutorViewModel.Cidade); var cliente = condutorViewModel.ToCliente(cidade); cliente.Unidades = condutorViewModel.ToClienteUnidades(unidades); if (clienteJaExitente != null) { cliente.Id = clienteJaExitente.Id; } //Veiculos var placas = cliente.Veiculos?.Select(x => x.Veiculo.Placa).ToList() ?? new List <string>(); var veiculosExistentes = _veiculoAplicacao.BuscarPor(x => placas.Contains(x.Placa)).ToList(); if (cliente.Veiculos != null) { foreach (var clienteVeiculo in cliente.Veiculos) { var existente = veiculosExistentes.FirstOrDefault(x => x.Placa == clienteVeiculo.Veiculo.Placa); if (existente != null) { clienteVeiculo.Veiculo.Id = existente.Id; } if (clienteVeiculo.Veiculo.Modelo != null) { var modelo = _modeloAplicacao.BuscarPor(x => x.Descricao == clienteVeiculo.Veiculo.Modelo.Descricao).FirstOrDefault(); if (modelo == null) { modelo = new Modelo { Descricao = clienteVeiculo.Veiculo.Modelo.Descricao, DataInsercao = DateTime.Now }; clienteVeiculo.Veiculo.Modelo = _modeloAplicacao.SalvarComRetorno(modelo); } else { clienteVeiculo.Veiculo.Modelo = modelo; } } } } //FIM Veiculos _clienteAplicacao.SalvarClienteCondutor(cliente); cliente = _clienteAplicacao.BuscarPorId(cliente.Id); //Contratos var contratos = condutorViewModel.ToContratos(cliente, cliente.Veiculos?.Select(x => x.Veiculo).ToList()); var contratosNumeros = contratos?.Select(x => x.NumeroContrato).ToList() ?? new List <int>();; var contratosExistentes = _contratoMensalistaAplicacao.BuscarPor(x => contratosNumeros.Contains(x.NumeroContrato)).ToList(); if (contratos != null) { foreach (var contrato in contratos) { var existente = contratosExistentes?.FirstOrDefault(x => x.NumeroContrato == contrato.NumeroContrato); if (existente != null) { contrato.Id = existente.Id; } } } //FIM Contratos _contratoMensalistaAplicacao.Salvar(contratos); JsonResult.Status = true; return(Request.CreateResponse(HttpStatusCode.Created, new { ClienteId = cliente.Id, Message = "Cliente Cadastrado!" })); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, JsonResult.Message = ex.InnerException.Message)); } }