public static IQueryable<Livro> GetBaseQuery(SBSCEntities db, LivroSearchModel searchModel) { IQueryable<Livro> query = db.Livro; if (!string.IsNullOrEmpty(searchModel.Search)) { var term = searchModel.Search.Trim(); query = from q in query where q.Codigo.Contains(term) || q.Titulo.Contains(term) || q.Genero.Contains(term) || q.Autor.Contains(term) || q.Editora.Contains(term) || q.Local.Contains(term) select q; } return query; }
private List<WidgetListaViewModel> GetWidgetNumerosLivros() { var searchModel = new LivroSearchModel(); var livros = LivrosModel.GetBaseQuery(db, searchModel); var currentYear = Genericos.GetDateTimeFromBrazil().Year; var lastYear = currentYear - 1; var lista = new List<WidgetListaViewModel>(); lista.Add(new WidgetListaViewModel() { Description = "Total de livros", Total = livros.Count() }); lista.Add(new WidgetListaViewModel() { Description = "Livros emprestados até hoje", Total = livros.Count(c => c.ItensEmprestimo.Any(a => a.Emprestimo.Status == (int)Enumerations.Emprestimo.StatusEmprestimo.Emprestado)) }); lista.Add(new WidgetListaViewModel() { Description = string.Format("Livros emprestados este ano ({0})", currentYear), Total = livros.Count(c => c.ItensEmprestimo.Any(a => a.Emprestimo.Status == (int)Enumerations.Emprestimo.StatusEmprestimo.Emprestado && a.Emprestimo.DtEmprestimo.Year == currentYear)) }); lista.Add(new WidgetListaViewModel() { Description = string.Format("Livros emprestados ano passado ({0})", lastYear), Total = livros.Count(c => c.ItensEmprestimo.Any(a => a.Emprestimo.Status == (int)Enumerations.Emprestimo.StatusEmprestimo.Emprestado && a.Emprestimo.DtEmprestimo.Year == lastYear)) }); lista.Add(new WidgetListaViewModel() { Description = "Livros devolvidos", Total = livros.Count(c => c.ItensEmprestimo.Any(a => a.Emprestimo.Status == (int)Enumerations.Emprestimo.StatusEmprestimo.Devolvido)) }); lista.Add(new WidgetListaViewModel() { Description = "Livros reservados até hoje", Total = livros.Count(c => c.Reservas.Any(a => a.Status == (int)Enumerations.Reserva.StatusReserva.Atendido)) }); lista.Add(new WidgetListaViewModel() { Description = string.Format("Livros reservados este ano ({0})", currentYear), Total = livros.Count(c => c.Reservas.Any(a => a.Status == (int)Enumerations.Reserva.StatusReserva.Atendido && a.DtPrevisaoEmprestimo.Value.Year == currentYear)) }); lista.Add(new WidgetListaViewModel() { Description = string.Format("Livros reservados ano passado ({0})", lastYear), Total = livros.Count(c => c.Reservas.Any(a => a.Status == (int)Enumerations.Reserva.StatusReserva.Atendido && a.DtPrevisaoEmprestimo.Value.Year == lastYear)) }); return lista; }
public ActionResult Search(LivroSearchModel searchModel) { if (!TemPermissao(Enumerations.Generico.TipoAcao.Consultar, permissoesAdministrador, permissoesBibliotecario, permissoesAluno)) return RedirectToAction("Index", "Home"); if (searchModel == null) searchModel = new LivroSearchModel(); var query = LivrosModel.GetBaseQuery(db, searchModel).OrderBy(q => q.Titulo); var queryResult = SearchHelper.ApplyPaging(query, query.Count(), ConstantesModel.GridPageSize, searchModel.Page); searchModel.Page = (searchModel.Page ?? 1); searchModel.CurrentPage = searchModel.Page.Value; searchModel.PageSize = ConstantesModel.GridPageSize; searchModel.TotalPages = Math.Ceiling((double)query.Count() / ConstantesModel.GridPageSize); var model = new LivroSearchViewModel { SearchModel = searchModel, Termo = searchModel.Search, FoundObjects = query.Count(), Objetos = (from objeto in queryResult.ToList() let status = LivrosModel.GetStatus(objeto) let totalVinculos = LivrosModel.GetTotalByItemLinkedRecords(db, objeto.Id) select new LivroViewModel { Id = objeto.Id, Codigo = objeto.Codigo, StatusId = (int)status, StatusText = EnumsHelper.GetText(typeof(Enumerations.Livro.StatusLivro), (int)status), Titulo = objeto.Titulo, Autor = objeto.Autor, Genero = objeto.Genero, Editora = objeto.Editora, EstadoConservacaoId = (int)objeto.EstadoConservacao, EstadoConservacaoText = EnumsHelper.GetText(typeof(Enumerations.Livro.EstadoConservacaoLivro), (int)objeto.EstadoConservacao), BaixadoId = objeto.IsBaixado ? (int)Enumerations.Generico.SimOuNao.Sim : (int)Enumerations.Generico.SimOuNao.Nao, BaixadoText = objeto.IsBaixado ? EnumsHelper.GetText(Enumerations.Generico.SimOuNao.Sim) : EnumsHelper.GetText(Enumerations.Generico.SimOuNao.Nao), DtBaixa = objeto.DtBaixa, DtBaixaText = objeto.DtBaixa.HasValue ? objeto.DtBaixa.Value.ToShortDateString() : string.Empty, DtCadastro = objeto.DtHrCadastro, DtCadastroText = objeto.DtHrCadastro.ToShortDateString(), DtEdicao = objeto.DtHrEdicao, DtEdicaoText = objeto.DtHrEdicao.HasValue ? objeto.DtHrEdicao.Value.ToShortDateString() : string.Empty, TotalReservas = totalVinculos.Item1, TotalEmprestimos = totalVinculos.Item2 }).OrderBy(ob => ob.Titulo).ToList() }; ViewBag.PodeCadastrar = TemPermissao(Enumerations.Generico.TipoAcao.Cadastrar, permissoesAdministrador, permissoesBibliotecario, permissoesAluno); ViewBag.PodeEditar = TemPermissao(Enumerations.Generico.TipoAcao.Editar, permissoesAdministrador, permissoesBibliotecario, permissoesAluno); ViewBag.PodeExcluir = TemPermissao(Enumerations.Generico.TipoAcao.Excluir, permissoesAdministrador, permissoesBibliotecario, permissoesAluno); ViewBag.SearchWaterMark = "Pesquisar pelos campos: código, título, gênero, autores, editora, local"; ViewBag.Title = GetModuleNamePlural(); ViewBag.Subtitle = string.Format("Pesquisa de {0}", GetModuleNamePlural()); return View(model); }
public ActionResult EmitirReportLivros(LivroSearchModel searchModel) { var query = LivrosModel.GetBaseQuery(db, searchModel).OrderBy(q => q.Titulo); var model = new LivroSearchViewModel { SearchModel = searchModel, Termo = searchModel.Search, FoundObjects = query.Count(), Objetos = (from objeto in query.ToList() let status = LivrosModel.GetStatus(objeto) let totalVinculos = LivrosModel.GetTotalByItemLinkedRecords(db, objeto.Id) select new LivroViewModel { Id = objeto.Id, Codigo = objeto.Codigo, StatusId = (int)status, StatusText = EnumsHelper.GetText(typeof(Enumerations.Livro.StatusLivro), (int)status), Titulo = objeto.Titulo, Autor = objeto.Autor, Genero = objeto.Genero, Editora = objeto.Editora, EstadoConservacaoId = (int)objeto.EstadoConservacao, EstadoConservacaoText = EnumsHelper.GetText(typeof(Enumerations.Livro.EstadoConservacaoLivro), (int)objeto.EstadoConservacao), BaixadoId = objeto.IsBaixado ? (int)Enumerations.Generico.SimOuNao.Sim : (int)Enumerations.Generico.SimOuNao.Nao, BaixadoText = objeto.IsBaixado ? EnumsHelper.GetText(Enumerations.Generico.SimOuNao.Sim) : EnumsHelper.GetText(Enumerations.Generico.SimOuNao.Nao), DtBaixa = objeto.DtBaixa, DtBaixaText = objeto.DtBaixa.HasValue ? objeto.DtBaixa.Value.ToShortDateString() : string.Empty, DtCadastro = objeto.DtHrCadastro, DtCadastroText = objeto.DtHrCadastro.ToShortDateString(), DtEdicao = objeto.DtHrEdicao, DtEdicaoText = objeto.DtHrEdicao.HasValue ? objeto.DtHrEdicao.Value.ToShortDateString() : string.Empty, TotalReservas = totalVinculos.Item1, TotalEmprestimos = totalVinculos.Item2 }).OrderBy(ob => ob.Titulo).ToList() }; ViewBag.Title = string.Format("Relatório de {0}", "livros"); ViewBag.Subtitle = string.Format(Constantes.GeradoEm_, Genericos.GetDateTimeFromBrazil()); return new ViewAsPdf("LivroSearchResultList", model) { FileName = "RelatorioLivros.pdf", PageSize = Size.A4, PageOrientation = Orientation.Landscape, PageMargins = { Top = 1, Left = 1, Right = 1, Bottom = 1 } }; }