示例#1
0
        public string BuscarTelefoneHelper(int idEmpresa)
        {
            var cliente = _clienteAplicacao.BuscarPorId(idEmpresa);

            if (cliente?.Pessoa?.Contatos == null || !cliente.Pessoa.Contatos.Any(x => !string.IsNullOrEmpty(x?.Contato?.Numero)))
            {
                return("");
            }

            return(cliente.Pessoa.Contatos
                   .Where(x => !string.IsNullOrEmpty(x.Contato.Numero))
                   .FirstOrDefault()
                   .Contato.Numero);
        }
        public void Salvar(VagaCortesiaViewModel model)
        {
            var entity = BuscarPorId(model.Id) ?? model.ToEntity();

            entity.Cliente = _clienteAplicacao.BuscarPorId(model.Cliente.Id);

            var listaDocumentosRemover = new List <int>();

            listaDocumentosRemover = entity.VagaCortesiaVigencia?.Where(x => !model?.VagaCortesiaVigencia?.Any(p => p.Id == x.Id) ?? false)?.Select(x => x.Id)?.ToList() ?? new List <int>();

            entity.VagaCortesiaVigencia = model.VagaCortesiaVigencia.Select(x => x.ToEntity()).ToList() ?? new List <VagaCortesiaVigencia>();

            foreach (var item in entity.VagaCortesiaVigencia)
            {
                item.VagaCortesia = entity;
            }

            Salvar(entity);

            listaDocumentosRemover.ForEach(x => _vagaCortesiaVigenciaServico.ExcluirPorId(x));
        }
示例#3
0
        public HttpResponseMessage MonthlyPayments([FromBody] PagamentoMensalidadeSoftparkViewModel pagamentoMensalidadeVM)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.ErrorMessage));

                    if (string.IsNullOrEmpty(JsonResult.Message))
                    {
                        JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.Exception.Message));
                    }

                    return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, JsonResult));
                }

                var cliente = pagamentoMensalidadeVM.Condutor.ERPId.HasValue ? _clienteAplicacao.BuscarPorId(pagamentoMensalidadeVM.Condutor.ERPId.Value) : null;
                if (cliente == null)
                {
                    cliente = pagamentoMensalidadeVM.Condutor.ToCliente(null);
                }

                if (cliente.Id == 0)
                {
                    cliente = _clienteAplicacao.SalvarComRetorno(cliente);
                }

                var unidade = _unidadeAplicacao.BuscarPorId(pagamentoMensalidadeVM.Estacionamento.Id);

                var mensagemDeErro = Validar(pagamentoMensalidadeVM, cliente, unidade);
                if (mensagemDeErro != null)
                {
                    return(mensagemDeErro);
                }

                var lancamentoCobranca = _lancamentoCobrancaAplicacao
                                         .PrimeiroPor(x => x.Cliente.Id == cliente.Id &&
                                                      x.DataVencimento > SqlDateTime.MinValue.Value && x.DataVencimento.Date == pagamentoMensalidadeVM.DataValidade.Date);

                if (lancamentoCobranca == null)
                {
                    lancamentoCobranca = new LancamentoCobranca
                    {
                        Unidade        = unidade,
                        Cliente        = cliente,
                        TipoServico    = TipoServico.Mensalista,
                        DataGeracao    = DateTime.Now,
                        DataVencimento = pagamentoMensalidadeVM.DataValidade,
                        ValorContrato  = pagamentoMensalidadeVM.Valor
                    };
                }

                if (lancamentoCobranca.Recebimento == null)
                {
                    lancamentoCobranca.Recebimento = new Recebimento();
                }
                if (lancamentoCobranca.Recebimento.Pagamentos == null)
                {
                    lancamentoCobranca.Recebimento.Pagamentos = new List <Pagamento>();
                }

                if (lancamentoCobranca.Recebimento.Pagamentos
                    .Any(x => x.PagamentoMensalistaId == pagamentoMensalidadeVM.Id &&
                         x.Unidade.Id == pagamentoMensalidadeVM.Estacionamento.Id))
                {
                    JsonResult.Message = "Já existe um pagamento com esse Id para esta Unidade";
                    return(Request.CreateResponse(HttpStatusCode.InternalServerError, JsonResult));
                }

                lancamentoCobranca.StatusLancamentoCobranca = StatusLancamentoCobranca.Pago;
                lancamentoCobranca.DataBaixa = pagamentoMensalidadeVM.DataPagamento;

                var pagamento = pagamentoMensalidadeVM.ToPagamento(lancamentoCobranca.Recebimento);
                pagamento.Unidade = unidade;

                lancamentoCobranca.Recebimento.Pagamentos.Add(pagamento);

                lancamentoCobranca.StatusLancamentoCobranca = StatusLancamentoCobranca.Pago;
                lancamentoCobranca.DataBaixa = pagamento.DataPagamento;

                _lancamentoCobrancaAplicacao.Salvar(lancamentoCobranca);

                return(Request.CreateResponse(HttpStatusCode.Created, JsonResult.Message = "Pagamento Cadastrado!"));
            }
            catch (Exception ex)
            {
                JsonResult.Status  = false;
                JsonResult.Message = ex.Message;
                return(Request.CreateResponse(HttpStatusCode.BadRequest, JsonResult));
            }
        }
示例#4
0
 public IList <UnidadeViewModel> ListaUnidadesPorCliente(int idCliente)
 {
     return(AutoMapper.Mapper.Map <List <Unidade>, List <UnidadeViewModel> >(_clienteAplicacao.BuscarPorId(idCliente)?.Unidades?.Select(x => x?.Unidade)?.ToList()));
 }
        public HttpResponseMessage Movements([FromBody] MovimentacaoSoftparkViewModel movimentacaoVM)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.ErrorMessage));

                    if (string.IsNullOrEmpty(JsonResult.Message))
                    {
                        JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.Exception.Message));
                    }

                    return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, JsonResult));
                }

                var unidade = _unidadeAplicacao.BuscarPorId(movimentacaoVM.Estacionamento.Id);
                var cliente = _clienteAplicacao.BuscarPorId(movimentacaoVM.ClienteId);
                var usuario = _usuarioServico.BuscarPorId(movimentacaoVM.Operador.Id);

                var validado = Validar(movimentacaoVM.Id, unidade, usuario);
                if (validado != null)
                {
                    return(validado);
                }

                var movimentacao = movimentacaoVM.ToEntity();
                movimentacao.Unidade = unidade;
                movimentacao.Usuario = usuario;
                movimentacao.Cliente = cliente;

                var movimentacaoExistenteComIdSoftpark = movimentacao.IdSoftpark.HasValue ? _movimentacaoAplicacao
                                                         .PrimeiroPor(x => x.IdSoftpark.HasValue &&
                                                                      x.IdSoftpark.Value == movimentacao.IdSoftpark.Value &&
                                                                      x.Unidade != null && movimentacao.Unidade != null &&
                                                                      x.Unidade.Id == movimentacao.Unidade.Id) : null;

                if (movimentacaoExistenteComIdSoftpark != null)
                {
                    movimentacao.Id = movimentacaoExistenteComIdSoftpark.Id;
                }

                if (movimentacao.Usuario != null)
                {
                    movimentacao.Usuario.Unidade        = movimentacao.Unidade;
                    movimentacao.Usuario.TemAcessoAoPDV = true;
                }

                if (movimentacao.MovimentacaoSelo != null && movimentacao.MovimentacaoSelo.Any())
                {
                    RegistrarSelo(movimentacao);
                }

                JsonResult.Status = true;
                _movimentacaoAplicacao.Salvar(movimentacao);
                return(Request.CreateResponse(HttpStatusCode.Created, JsonResult.Message = "Movimentação Cadastrada!"));
            }
            catch (Exception ex)
            {
                JsonResult.Status  = false;
                JsonResult.Message = ex.Message;
                return(Request.CreateResponse(HttpStatusCode.BadRequest, JsonResult));
            }
        }
        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));
            }
        }