Ejemplo n.º 1
0
        public static IQueryable<Emprestimo> GetBaseQuery(SBSCEntities db, DevolucaoSearchModel searchModel)
        {
            IQueryable<Emprestimo> query = db.Emprestimo.Where(q => q.Status == (int)Enumerations.Emprestimo.StatusEmprestimo.Emprestado);

            if (!string.IsNullOrEmpty(searchModel.Search))
            {
                var term = searchModel.Search.Trim();

                query = from q in query
                        where term.Contains(q.Id.ToString())
                            // Itens do emprestimo
                            || q.ItensEmprestimo.Any(ie => ie.Livro.Titulo.Contains(term))
                            || q.ItensEmprestimo.Any(ie => ie.Livro.Genero.Contains(term))
                            || q.ItensEmprestimo.Any(ie => ie.Livro.Autor.Contains(term))
                            || q.ItensEmprestimo.Any(ie => ie.Livro.Editora.Contains(term))
                            || q.ItensEmprestimo.Any(ie => ie.Livro.Local.Contains(term))
                            // Pessoa
                            || q.Pessoa.Nome.Contains(term)
                            || q.Pessoa.Login.Contains(term)
                        select q;
            }

            return query;
        }
Ejemplo n.º 2
0
        public ActionResult Search(DevolucaoSearchModel searchModel)
        {
            if (searchModel == null)
                searchModel = new DevolucaoSearchModel();

            var query = DevolucoesModel.GetBaseQuery(db, searchModel).OrderByDescending(q => q.DtEmprestimo);

            var queryResult = SearchHelper.ApplyPaging(query, query.Count(), Constantes.GridPageSize, searchModel.Page);

            searchModel.Page = (searchModel.Page ?? 1);
            searchModel.CurrentPage = searchModel.Page.Value;
            searchModel.PageSize = Constantes.GridPageSize;
            searchModel.TotalPages = Math.Ceiling((double)query.Count() / Constantes.GridPageSize);

            var currentDate = Genericos.GetDateTimeFromBrazil().Date;

            var model = new DevolucaoSearchViewModel
            {
                SearchModel = searchModel,
                Termo = searchModel.Search,
                FoundObjects = query.Count(),
                Objetos = (from objeto in queryResult.ToList()
                           let pessoa = objeto.Pessoa
                           let livros = objeto.ItensEmprestimo.ToList()
                           let dtDevolucao = objeto.ItensEmprestimo.Select(s => s.DtDevolucao).FirstOrDefault()
                           let situacao = (objeto.Status == (int)Enumerations.Emprestimo.StatusEmprestimo.Emprestado
                           && objeto.DtPrevisaoDevolucao < currentDate ? (int)Enumerations.Devolucao.SituacaoDevolucao.Atrasado :
                           (int)Enumerations.Devolucao.SituacaoDevolucao.NoPrazo)
                           select new DevolucaoViewModel
                           {
                               Id = objeto.Id,
                               PessoaId = pessoa.Id,
                               PessoaText = pessoa.Nome,
                               LivrosText = string.Join("; ", livros.Select(x => x.Livro.Titulo).ToList()),
                               StatusId = (int)objeto.Status,
                               StatusText = EnumsHelper.GetText(typeof(Enumerations.Emprestimo.StatusEmprestimo), (int)objeto.Status),
                               SituacaoId = situacao,
                               SituacaoText = EnumsHelper.GetText(typeof(Enumerations.Devolucao.SituacaoDevolucao), situacao),
                               DtEmprestimo = objeto.DtEmprestimo,
                               DtEmprestimoText = objeto.DtEmprestimo.ToShortDateString(),
                               DtPrevisaoDevolucao = objeto.DtPrevisaoDevolucao,
                               DtPrevisaoDevolucaoText = objeto.DtPrevisaoDevolucao.HasValue ? objeto.DtPrevisaoDevolucao.Value.ToShortDateString() : string.Empty,
                               DtDevolucao = dtDevolucao,
                               DtDevolucaoText = dtDevolucao.ToShortDateString(),
                               DtCadastro = objeto.DtHrCadastro,
                               DtCadastroText = objeto.DtHrCadastro.ToShortDateString(),
                           }).OrderByDescending(ob => ob.SituacaoId).ThenBy(ob => ob.DtPrevisaoDevolucao).ToList()
            };

            ViewBag.SearchWaterMark = "Pesquisar pelos campos: código do empréstimo, nome da pessoa, código do livro, título, gênero, autores, editora, local";
            ViewBag.Title = GetModuleNamePlural();
            ViewBag.Subtitle = string.Format("Pesquisa de {0}", GetModuleNamePlural());

            return View(model);
        }
Ejemplo n.º 3
0
        public ActionResult EmitirReportEmprestimosAtrasados(DevolucaoSearchModel searchModel)
        {
            var currentDate = Genericos.GetDateTimeFromBrazil().Date;

            var query = DevolucoesModel.GetBaseQuery(db, searchModel).OrderByDescending(q => q.DtEmprestimo);

            var model = new DevolucaoSearchViewModel
            {
                SearchModel = searchModel,
                Termo = searchModel.Search,
                FoundObjects = query.Count(),
                Objetos = (from objeto in query.ToList()
                           let pessoa = objeto.Pessoa
                           let livros = objeto.ItensEmprestimo.ToList()
                           let dtDevolucao = objeto.ItensEmprestimo.Select(s => s.DtDevolucao).FirstOrDefault()
                           let situacao = (objeto.Status == (int)Enumerations.Emprestimo.StatusEmprestimo.Emprestado
                           && objeto.DtPrevisaoDevolucao < currentDate ? (int)Enumerations.Devolucao.SituacaoDevolucao.Atrasado :
                           (int)Enumerations.Devolucao.SituacaoDevolucao.NoPrazo)
                           select new DevolucaoViewModel
                           {
                               Id = objeto.Id,
                               PessoaId = pessoa.Id,
                               PessoaText = pessoa.Nome,
                               LivrosText = string.Join("; ", livros.Select(x => x.Livro.Titulo).ToList()),
                               StatusId = (int)objeto.Status,
                               StatusText = EnumsHelper.GetText(typeof(Enumerations.Emprestimo.StatusEmprestimo), (int)objeto.Status),
                               SituacaoId = situacao,
                               SituacaoText = EnumsHelper.GetText(typeof(Enumerations.Devolucao.SituacaoDevolucao), situacao),
                               DtEmprestimo = objeto.DtEmprestimo,
                               DtEmprestimoText = objeto.DtEmprestimo.ToShortDateString(),
                               DtPrevisaoDevolucao = objeto.DtPrevisaoDevolucao,
                               DtPrevisaoDevolucaoText = objeto.DtPrevisaoDevolucao.HasValue ? objeto.DtPrevisaoDevolucao.Value.ToShortDateString() : string.Empty,
                               DtDevolucao = dtDevolucao,
                               DtDevolucaoText = dtDevolucao.ToShortDateString(),
                               DtCadastro = objeto.DtHrCadastro,
                               DtCadastroText = objeto.DtHrCadastro.ToShortDateString(),
                           })
                           .Where(q => q.SituacaoId == (int)Enumerations.Devolucao.SituacaoDevolucao.Atrasado)
                           .OrderByDescending(ob => ob.SituacaoId)
                           .ThenBy(ob => ob.DtPrevisaoDevolucao).ToList()
            };

            ViewBag.Title = string.Format("Relatório de {0}", "Empréstimos atrasados");
            ViewBag.Subtitle = string.Format(Constantes.GeradoEm_, Genericos.GetDateTimeFromBrazil());

            return new ViewAsPdf("EmprestimoAtrasadoSearchResultList", model)
            {
                FileName = "RelatorioEmprestimosAtrasados.pdf",
                PageSize = Size.A4,
                PageOrientation = Orientation.Landscape,
                PageMargins = { Top = 1, Left = 1, Right = 1, Bottom = 1 }
            };
        }