public ActionResult Reservar(int livroId)
        {

            using (var bd = new BibliotecaDatabase())
            {
                var livro = bd.Livros.Find(livroId);

                //Busca o usuário logado na base
                var usuario = (from u in bd.Usuarios
                              where u.Login.Equals(User.Identity.Name) 
                              select u).FirstOrDefault();
                
                if(usuario == null)
                {
                    ErroReserva erro = new ErroReserva();
                    erro.mensagem = "Não foi possível encontrar o usuário '" + User.Identity.Name + "'. É possível que a base de usuários e o controle de login estejam desincronizados.";
                    return View("Erro", erro);                    
                }

                ReservaLivro reserva = new ReservaLivro();
                reserva.LivroRelacionado = livro;
                reserva.UsuarioDeb = usuario;
                reserva.Situacao = true;
                reserva.DtReserva = DateTime.Today;

                bd.Reservas.Add(reserva);
                bd.SaveChanges();
            }

            return View("ReservaEfetuadaComSucesso");
        }
예제 #2
0
        public void Devolver(int idEmprestimo)
        {
            using (var bd = new BibliotecaDatabase())
            {
                try
                {
                    var emprestimo = CarregarEmprestimo(idEmprestimo);

                    emprestimo.DevolvidoEm = DateTime.Now;
                    bd.Entry(emprestimo).State = EntityState.Modified;

                    var diasAtraso = CalcularDiasAtraso(emprestimo.DevolverAte, emprestimo.DevolvidoEm.Value);
                    //var diasAtraso = CalcularDiasAtrasoAlternativo(emprestimo.DevolverAte, emprestimo.DevolvidoEm);

                    if (diasAtraso > 0)
                    {
                        var debito = new Debito
                                            {
                                                DebitoAtivo = true,
                                                Emprestimo = emprestimo,
                                                UsuarioDeb = emprestimo.UsuarioEmprestimo,
                                                DiasAtraso = diasAtraso
                                            };

                        bd.Debitos.Add(debito);
                    }
                    bd.SaveChanges();
                }
                catch (Exception ex)
                {

                    throw ex;
                }
            }
        }
        public ActionResult EfetuarPgto(Debito PgtoDebito)
        {
            if (ModelState.IsValid)
            {
                using (var bd = new BibliotecaDatabase())
                {
                    if (PgtoDebito.DebitoId <= 0)
                    {
                        throw new Exception("Não é possível efetuar o pagamento deste empréstimo. Id desconhecido.");
                    }
                    else
                    {
                        var pgtoAux = RetornaInfoDebito(PgtoDebito.DebitoId);
                        PgtoDebito = pgtoAux;
                        PgtoDebito.DebitoAtivo = false;
                        bd.Entry(PgtoDebito).State = EntityState.Modified;
                    }

                    bd.SaveChanges();

                    return RedirectToAction("index");
                }
            }
            return RedirectToAction("index");
        }
        //
        // GET: /Reserva/

        

        public static ReservaLivro getReserva(int livroId) 
        {
            ReservaLivro result = null;
            

            using (var bd = new BibliotecaDatabase())
            {


                result = (from r in bd.Reservas.Include("LivroRelacionado").Include("UsuarioDeb")                                
                                where r.LivroRelacionado.LivroId.Equals(livroId) && r.Situacao.Equals(true)
                                select r).FirstOrDefault();
                       
                if (result == null)
                {
                    result = new ReservaLivro();
                    result.ReservaLivroId = 0;
                    var livro = bd.Livros.Find(livroId); /*Já engatinha na View o livro sendo reservado*/
                    result.LivroRelacionado = livro;
                }
            }

            
           
            return result;
        }
 public ActionResult CategorizadosPorAutor()
 {
     using (var bd = new BibliotecaDatabase())
     {
         var cat = new Categorizador(bd);
         return View(cat.LivrosPorAutor());
     }            
 }
 private IEnumerable<Livro> ObterLivros()
 {
     using (var bd = new BibliotecaDatabase())
     {
         var query = (from l in bd.Livros
                      select l).Distinct().ToList();
         return query.ToList();
     }
 }
 public IEnumerable<Usuario> ObterUsuarios()
 {
     using (var bd = new BibliotecaDatabase())
     {
         var query = (from u in bd.Usuarios
                      select u).Distinct().ToList();
         return query.ToList();
     }
 }
 private void AdicionaLivro(Livro livro)
 {
     using (var ld = new BibliotecaDatabase())
     {
         Debug.WriteLine(ld.Database.Connection.ConnectionString);
         ld.Livros.Add(livro);
         ld.SaveChanges();
     }
 }
        //
        // GET: /Usuario/

        public ActionResult Index()
        {
            using (var bd = new BibliotecaDatabase())
            {
                var usuarios = bd.Usuarios.ToList();
                var usu = usuarios.Select(usuario => new UsuarioViewModel(usuario));
                return View(usu);
            }            
        }
 public IEnumerable<Livro> ObterLivrosEmprestados()
 {
     using (var bd = new BibliotecaDatabase())
     {
         var query = (from e in bd.Emprestimos.Include("LivroEmprestimo")
                      where !e.DevolvidoEm.HasValue
                      select e.LivroEmprestimo).Distinct().ToList();
         return query.ToList();
     }
 }
		//Novo metodos para retorna lista de Emprestimo por livro
		 public IEnumerable<Emprestimo> ListEmprestimosDoLivro(int livroId)
        {
            using (var bd = new BibliotecaDatabase())
            {
                var query = (from e in bd.Emprestimos
                             where e.LivroEmprestimo.LivroId == livroId && !e.DevolvidoEm.HasValue
                             select e).Distinct().ToList();
                return query.ToList();
            }
        }
 private Emprestimo ObterEmprestimoDoLivro(int livroId)
 {
     using (var bd = new BibliotecaDatabase())
     {
         var query = (from e in bd.Emprestimos
                      where e.LivroEmprestimo.LivroId == livroId && !e.DevolvidoEm.HasValue
                      select e).FirstOrDefault();
         return query;
     }
 }
예제 #13
0
        //public ActionResult Popular()
        //{
        //    var meuUser = new Usuario { Login = "******", Nome = "Luiz Angelo Heinzen", Senha = "segredo", StatusAtivacao = StatusAtivacao.Ativo, TipoUsuario = TipoUsuario.Funcionario };
        //    var proto = new Usuario { Login = "******", Nome = "Proto(u)suario", Senha = "segredo", StatusAtivacao = StatusAtivacao.Ativo, TipoUsuario = TipoUsuario.Aluno };
        //    var tioBill = new Usuario { Login = "******", Nome = "Bill Gates", Senha = "segredo", StatusAtivacao = StatusAtivacao.Ativo, TipoUsuario = TipoUsuario.Professor};
        //    var guerraDosTronos = new Livro { Ano = 2000, Autor = "George R.R. Martin", Preco = 40m, Titulo = "A Guerra dos Tronos" };
        //    var carrie = new Livro { Ano = 1979, Autor = "Stepen King", Preco = 15m, Titulo = "Carrie, a estranha" };
        //    var arteGuerra = new Livro { Ano = 1600, Autor = "Sun-Tzu", Preco = 5m, Titulo = "A arte da Guerra" };
        //    var jogosVorazes = new Livro { Ano = 2003, Autor = "Stephanie Meyer", Preco = 25m, Titulo = "Jogos Vorazes" };
        //    var demian = new Livro { Ano = 1985, Autor = "Herman Hesse", Preco = 8m, Titulo = "Demian" };

        //    var hoje = DateTime.Now.Date;
        //    var ontem = hoje.AddDays(-1);
        //    var anteOntem = hoje.AddDays(-2);
        //    var semanaPassada = hoje.AddDays(-7);
        //    var amanha = hoje.AddDays(1);
        //    var depoisDeAmanha = hoje.AddDays(2);
        //    var proximaSemana = hoje.AddDays(7);

        //    using(var bd = new BibliotecaDatabase())
        //    {
        //        bd.Usuarios.Add(meuUser);
        //        bd.Usuarios.Add(proto);
        //        bd.Usuarios.Add(tioBill);
        //        bd.Livros.Add(guerraDosTronos);
        //        bd.Livros.Add(carrie);
        //        bd.Livros.Add(arteGuerra);
        //        bd.Livros.Add(jogosVorazes);
        //        bd.Livros.Add(demian);

        //        bd.Emprestimos.Add(new Emprestimo { LivroEmprestimo = jogosVorazes, UsuarioEmprestimo = meuUser, RetiradoEm = semanaPassada, DevolverAte = hoje });
        //        bd.Emprestimos.Add(new Emprestimo { LivroEmprestimo = carrie, UsuarioEmprestimo = meuUser, RetiradoEm = semanaPassada, DevolverAte = ontem });
        //        bd.Emprestimos.Add(new Emprestimo { LivroEmprestimo = guerraDosTronos, UsuarioEmprestimo = meuUser, RetiradoEm = ontem, DevolverAte = proximaSemana });
        //        bd.Emprestimos.Add(new Emprestimo { LivroEmprestimo = arteGuerra, UsuarioEmprestimo = tioBill, RetiradoEm = semanaPassada, DevolverAte = proximaSemana });
        //        bd.SaveChanges();
        //    }

        //    //Depois os Emprestimos para testar


        //    return RedirectToAction("Index", new DevolucaoViewModel());
        //}

        #endregion

        public IEnumerable<Usuario> ObterUsuariosComEmprestimo()
        {
            using (var bd = new BibliotecaDatabase())
            {
                var query = (from p in bd.Emprestimos
                             where p.DevolvidoEm == null
                             select p.UsuarioEmprestimo).Distinct().ToList();
                return query.ToList();
            }
        }
 private IEnumerable<Emprestimo> ObterEmprestimosDoUsuario(int usuarioId)
 {
     using (var bd = new BibliotecaDatabase())
     {
         var query = (from e in bd.Emprestimos
                      where e.UsuarioEmprestimo.UsuarioId == usuarioId && !e.DevolvidoEm.HasValue
                      select e).Distinct().ToList();
         return query.ToList();
     }
 }
		 public ActionResult ListarHistoricoLivroUsuario(int idUsuario, int idLivro)
        {
            using (var bd = new BibliotecaDatabase())
            {
                var query = (from e in bd.Emprestimos.Include(j => j.LivroEmprestimo)
                             where e.LivroEmprestimo.LivroId == idLivro && e.UsuarioEmprestimo.UsuarioId == idUsuario
                             select e ).ToList();

                return Json(query.ToList(), JsonRequestBehavior.AllowGet);
            }
        }
 public ActionResult DescricaoLivro(long livroId)
 {
     using (var bd = new BibliotecaDatabase())
     {
         var livro = bd.Livros.Find(livroId);
         if (Request.IsAjaxRequest())
             return PartialView(livro);
         else
             return View(livro);
     }
 }
        public ActionResult Index(long livroId)
        {
            using (var bd = new BibliotecaDatabase())
            {
                var livro = (from l in bd.Livros.Include(c => c.Comentarios)
                            where l.LivroId == livroId
                            select l).SingleOrDefault();

                return View(livro);
            }
            
        }
       public void TesteComJoin()
       {
           using (var bd = new BibliotecaDatabase())
           {
               var q = from l in bd.Livros
                       join r in bd.Reservas
                       on l equals r.LivroRelacionado
                       where r.UsuarioDeb.UsuarioId == 1
                       select l;

               var livro = q.ToList();
               livro.ForEach( l => Console.WriteLine(l.Titulo));
           }
       }
        private static IEnumerable<Livro> ObterLivros(string q)
        {
            q = q.ToLower();
            
            using (var bd = new BibliotecaDatabase())
            {
                var livros = from livro in bd.Livros
                             select livro;
                
                if (!string.IsNullOrEmpty(q))
                    livros = livros = livros.Where(l => l.Titulo.ToLower().IndexOf(q) >= 0);

                return livros.ToList();
            }
        }
        /// <summary>
        /// Método que retorna a lista de acordo 
        /// </summary>
        private static IEnumerable<Debito> ObterDebitos(string NomeUsuario)
        {
            NomeUsuario = NomeUsuario.ToLower();

            using (var bd = new BibliotecaDatabase())
            {
                IQueryable<Debito> debitos = from debito in bd.Debitos.Include("Emprestimo").Include("Emprestimo.LivroEmprestimo").Include("UsuarioDeb")
                                             where debito.DebitoAtivo
                                             orderby debito.Emprestimo.DevolvidoEm descending
                                             select debito;

                if (!string.IsNullOrEmpty(NomeUsuario))
                    debitos = debitos.Where(deb => deb.UsuarioDeb.Nome.ToLower().IndexOf(NomeUsuario) >= 0);

                return debitos.ToList();
            }
        }
예제 #21
0
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var valor = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);

            if (valor == null || string.IsNullOrEmpty(valor.AttemptedValue))
                return base.BindModel(controllerContext, bindingContext);

            int livroId;

            if (!int.TryParse(valor.AttemptedValue, out livroId))
                return base.BindModel(controllerContext, bindingContext);

            using (var bd = new BibliotecaDatabase())
            {
                var livro = bd.Livros.Find(livroId);
                return livro;
            }
        }
        public ActionResult Novo(UsuarioViewModel usuario)
        {
            if (ModelState.IsValid)
            {
                using (var bd = new BibliotecaDatabase())
                {

                    if (usuario.UsuarioId > 0)
                    {
                        bd.Entry(usuario.ParaEntidade()).State = EntityState.Modified;
                    }
                    else
                    {

                        if (!WebSecurity.UserExists(usuario.Login))
                        {
                            bd.Usuarios.Add(usuario.ParaEntidade());
                            WebSecurity.CreateUserAndAccount(usuario.Login, usuario.Senha);
                            if (usuario.TipoUsuario == TipoUsuario.Operador)
                            {
                                Roles.AddUserToRole(usuario.Login, "PodeAdicionarLivro");
                                Roles.AddUserToRole(usuario.Login, "PodeEmprestar");
                            }


                            Roles.AddUserToRole(usuario.Login, "PodeComentar");
                            Roles.AddUserToRole(usuario.Login, "PodeReservar");

                        }
                        else
                        {
                            return View("Erro");
                        }
                        
                    }
                       
                    bd.SaveChanges();
                    
                    return RedirectToAction("index");
                } 
            }
            return View(usuario);
        }
        public ActionResult AdicionarComentario(long livroId, string comentario)
        {
            using (var bd = new BibliotecaDatabase())
            {
                var livro = (from l in bd.Livros.Include(c => c.Comentarios)
                             where l.LivroId == livroId
                             select l).SingleOrDefault();

                livro.Comentarios.Add(new ComentarioLivro { Comentario = comentario });
                bd.SaveChanges();
               
                if (Request.IsAjaxRequest())
                {
                    ViewBag.Comentario = comentario;
                    return PartialView();
                }
                return RedirectToAction("Index");
            }

        }
예제 #24
0
        private Emprestimo CarregarEmprestimo(int idEmprestimo)
        {
            using (var bd = new BibliotecaDatabase())
            {
                var query = (from e in bd.Emprestimos.Include(j => j.LivroEmprestimo).Include(j => j.UsuarioEmprestimo)
                             where e.EmprestimoId == idEmprestimo
                             select e).FirstOrDefault();

                return query;
            }
        }
예제 #25
0
        public int CarregarEmprestimo(int idUsuario, int idLivro)
        {
            using (var bd = new BibliotecaDatabase())
            {
                var query = (from e in bd.Emprestimos.Include(j => j.LivroEmprestimo)
                             where e.LivroEmprestimo.LivroId == idLivro && e.UsuarioEmprestimo.UsuarioId == idUsuario
                             && !e.DevolvidoEm.HasValue
                             select e.EmprestimoId).FirstOrDefault();

                return (int)query;
            }
        }
예제 #26
0
        public IEnumerable<Livro> ListarLivrosDoUsuario(int idEmprestimo)
        {
            using (var bd = new BibliotecaDatabase())
            {
                var emprestimo = (from e in bd.Emprestimos.Include(j => j.LivroEmprestimo)
                                  where e.UsuarioEmprestimo.UsuarioId == idEmprestimo && !e.DevolvidoEm.HasValue
                                  select e.LivroEmprestimo).ToList();

                return emprestimo;
            }
        }
 public ActionResult Excluir(long usuarioId)
 {
     using (var bd = new BibliotecaDatabase())
     {
         var usuario = bd.Usuarios.Find(usuarioId);
         bd.Entry(usuario).State = EntityState.Deleted;
         bd.SaveChanges();
         return RedirectToAction("index");
     }
 }
        public ActionResult Emprestar(int livroId, int usuarioId)
        {
            DateTime hoje = DateTime.Now;
            string msg = ("");
            bool reservado = false;

            try
            {
                // Se ocorrer qualquer erro, exibe a mensagem ao usuário, na tela de empréstimos.
                using (var bd = new BibliotecaDatabase())
                {
                    var livro = bd.Livros.Find(livroId);
                    if (livro == null)
                    {
                        msg = ("Não foi possível encontrar o livro: " + livroId);
                        throw new Exception(msg);
                    }

                    // Verifica se o livro está emprestado                    
                    if (ObterEmprestimoDoLivro(livroId) != null)
                    {
                        msg = ("O livro " + livro.Titulo + ", com código " + livroId +  ", já está emprestado");
                        throw new Exception(msg);
                    }

                    // Verifica se o livro está reservado
                    //Márcio Koch: Ajustada a verificação da reserva do livro.
                    ReservaLivro reserva = ReservaController.getReserva(livroId);
                    reservado = reserva != null && reserva.ReservaLivroId > 0;
                    if (reservado && !reserva.UsuarioDeb.UsuarioId.Equals(usuarioId))
                    {
                        msg = ("O livro " + livro.Titulo + " está reservado para outro usuário.");
                        throw new Exception(msg);
                    }                    

                    // Verifica se o usuário existe
                    var usuario = bd.Usuarios.Find(usuarioId);
                    if (usuario == null)
                    {
                        msg = ("Não foi possível encontrar o usuário: " + usuarioId);
                        throw new Exception(msg);
                    }

                    // Verifica a quantidade de livros emprestados para o Usuário e o tipo do usuário.
                    IEnumerable<Emprestimo> emprestimosAtivos = ObterEmprestimosDoUsuario(usuarioId);
                    int quantidadeEmprestada = emprestimosAtivos.Count();

                    if (PodeEmprestar(usuario, quantidadeEmprestada))
                    {
                        DateTime prazo = GetPrazo(usuario.TipoUsuario);
                        Emprestimo emprestimo = new Emprestimo { LivroEmprestimo = livro, UsuarioEmprestimo = usuario, RetiradoEm = hoje, DevolverAte = prazo };
                        bd.Emprestimos.Add(emprestimo);

                        //Márcio Koch - Libera a reserva do livro, caso ele esteja reservado.
                        if (reservado)
                        {                            
                            reserva = bd.Reservas.Find(reserva.ReservaLivroId);
                            reserva.Situacao = false;//Libera a reserva                            
                        }

                        bd.SaveChanges();
                        msg = ("Livro emprestado com sucesso, com prazo até " + prazo + " " + msg);
                    }
                    else
                    {
                        // Exibe mensagem de erro ao usuário.
                        msg = ("O empréstimo não foi efetuado, foi excedido o número de livros emprestados ao usuário. " + msg);
                        throw new Exception(msg);
                    }
                }
            }
            catch
            {
                ViewBag.Mensagem = msg;
                return View("Index", new EmprestimoViewModel());
            }
            ViewBag.Mensagem = msg;
            return View("Index", new EmprestimoViewModel() );
        }
 public Categorizador(BibliotecaDatabase bd)
 {
     this.bd = bd;
 }
예제 #30
0
        public IEnumerable<Emprestimo> ObterLivrosDevolvidos()
        {
            using (var bd = new BibliotecaDatabase())
            {
                var livrosDevolvidos = (from e in bd.Emprestimos.Include(j => j.LivroEmprestimo)
                                        where e.DevolvidoEm != null
                                        select e).ToList();

                return livrosDevolvidos;
            }
        }