Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 6
0
        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));
            }
        }