public CondutorSoftparkViewModel ConverterClienteParaCondutor(Cliente cliente) { var contratosMensalistas = _contratoMensalistaServico.BuscarPor(x => x.Cliente.Id == cliente.Id); var clienteCondomino = _condominoServico.BuscarPor(x => x.Cliente.Id == cliente.Id); var condutor = new CondutorSoftparkViewModel(cliente, clienteCondomino, contratosMensalistas); return(condutor); }
public void SalvarCondutorSoftPark(ContratoMensalista item) { var contratoMensalista = _contratoMensalistaServico.BuscarPorId(item.Id); if (contratoMensalista == null) { new ContratoMensalista(); } var contratosCondomino = _condominoServico.BuscarPor(x => x.Cliente.Id == contratoMensalista.Cliente.Id); var contratos = _contratoMensalistaServico.BuscarPor(x => x.Cliente.Id == item.Cliente.Id); var condutor = new CondutorSoftparkViewModel(contratoMensalista.Cliente, contratosCondomino, contratos); _condutorSoftparkAplicacao.Salvar(condutor); }
public HttpResponseMessage GetAll() { try { JsonResult.Status = true; var clientes = _clienteAplicacao.Buscar().ToList(); var clienteIds = clientes.Select(x => x.Id).ToList(); var clienteCpfs = clientes.Select(x => x.Pessoa.DocumentoCpf).ToList(); var contratosMensalistas = _contratoMensalistaAplicacao .BuscarPor(x => clienteIds.Contains(x.Cliente.Id)); var condominos = _condominoAplicacao.BuscarPor(x => clienteIds.Contains(x.Cliente.Id)); var condutores = new List <CondutorSoftparkViewModel>(); foreach (var cliente in clientes) { var cpf = cliente.Pessoa.DocumentoCpf; var clienteUnidadeIds = cliente.Unidades.Select(x => x.Unidade.Id).ToList(); var contratosMensalistasDoCliente = contratosMensalistas .Where(x => x.Cliente.Id == cliente.Id); var contratosCondominoDoCliente = condominos .Where(x => x.Cliente.Id == cliente.Id); var condutor = new CondutorSoftparkViewModel(cliente, contratosCondominoDoCliente.ToList(), contratosMensalistasDoCliente.ToList()); condutores.Add(condutor); } JsonResult.Object = condutores; if (clientes.Count > 0) { JsonResult.Message = "Foram encontrados " + clientes.Count.ToString() + " clientes. "; } else { JsonResult.Message = "Não foram encontrados clientes."; }; return(Request.CreateResponse(HttpStatusCode.OK, JsonResult)); } catch (Exception ex) { JsonResult.Status = false; JsonResult.Message = ex.Message; return(Request.CreateResponse(HttpStatusCode.BadRequest, JsonResult)); } }
public void Salvar(ContratoMensalista item, bool validar, bool salvarCondutorSoftpark = true) { _contratoMensalistaServico.Salvar(item, validar); if (!salvarCondutorSoftpark) { return; } var contratoMensalista = _contratoMensalistaServico.BuscarPorId(item.Id); if (contratoMensalista == null) { new ContratoMensalista(); } var contratosCondomino = _condominoServico.BuscarPor(x => x.Cliente.Id == contratoMensalista.Cliente.Id); var contratos = _contratoMensalistaServico.BuscarPor(x => x.Cliente.Id == item.Cliente.Id); var condutor = new CondutorSoftparkViewModel(contratoMensalista.Cliente, contratosCondomino, contratos); _condutorSoftparkAplicacao.Salvar(condutor); }
public new void Salvar(ClienteCondomino entity) { if (entity.Cliente == null || entity.Cliente.Id == 0) { throw new BusinessRuleException("Informe um Cliente!"); } if (entity.Unidade == null || entity.Unidade.Id == 0) { throw new BusinessRuleException("Informe uma Unidade!"); } if (entity.NumeroVagas <= 0) { throw new BusinessRuleException("Informe um numero válido de vagas!"); } var unidadeCondomino = _unidadeCondominoAplicacao.BuscarPor(x => x.Unidade.Id == entity.Unidade.Id).FirstOrDefault(); var clienteCondomino = BuscarPorId(entity.Id) ?? entity; if (entity.Id == 0) { var objVerificaReincidencia = BuscarPor(x => x.Cliente.Id == entity.Cliente.Id && x.Unidade.Id == entity.Unidade.Id); if (objVerificaReincidencia.Any()) { throw new BusinessRuleException($"Este Cliente já possui quantidade de vagas cadastradas para esta Unidade !"); } if (unidadeCondomino == null || entity.NumeroVagas > unidadeCondomino.NumeroVagasRestantes) { throw new BusinessRuleException($"A Unidade possui apenas {unidadeCondomino.NumeroVagasRestantes} vagas restantes para Condômino !"); } unidadeCondomino.NumeroVagasRestantes = unidadeCondomino.NumeroVagasRestantes - entity.NumeroVagas; } else { unidadeCondomino.NumeroVagasRestantes = unidadeCondomino.NumeroVagasRestantes + clienteCondomino.NumeroVagas; if (entity.NumeroVagas > unidadeCondomino.NumeroVagasRestantes) { throw new BusinessRuleException($"A Unidade possui apenas {unidadeCondomino.NumeroVagasRestantes} vagas restantes para Condômino !"); } unidadeCondomino.NumeroVagasRestantes = unidadeCondomino.NumeroVagasRestantes - entity.NumeroVagas; } clienteCondomino.Id = entity.Id; clienteCondomino.Cliente = _clienteAplicacao.BuscarPorId(entity.Cliente.Id); clienteCondomino.Unidade = unidadeCondomino; clienteCondomino.NumeroVagas = entity.NumeroVagas; clienteCondomino.DataInsercao = entity.DataInsercao; clienteCondomino.CondominoVeiculos = entity.CondominoVeiculos; clienteCondomino.Frota = entity.Frota; Servico.Salvar(clienteCondomino); var contratosCondomino = Servico.BuscarPor(x => x.Cliente.Id == clienteCondomino.Cliente.Id); var contratosMensalista = _contratoMensalistaServico.BuscarPor(x => x.Cliente.Id == clienteCondomino.Cliente.Id); var condutor = new CondutorSoftparkViewModel(clienteCondomino.Cliente, contratosCondomino, contratosMensalista); _condutorSoftparkAplicacao.Salvar(condutor); }
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)); } }