示例#1
0
文件: Livros.cs 项目: anzolin/SBSC
        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;
        }
示例#2
0
        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;
        }
示例#3
0
        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);
        }
示例#4
0
        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 }
            };
        }