예제 #1
0
        public async Task <Mensagem> AddUnique(Reserva objeto)
        {
            using (var data = new ContextBase(_OptionsBuilder))
            {
                Mensagem mensagem = new Mensagem();
                bool     livre    = false;

                var reserva = data.Reservas.Where(x => x.Ativo == true && x.IdLivro == objeto.IdLivro).ToArray().LastOrDefault();

                // uma reserva dura 1 día
                if (reserva == null)
                {
                    livre = true;
                }
                else
                {
                    if (reserva.Ativo == true && DateTime.Now < reserva.Data.AddDays(1))
                    {
                        livre         = true;
                        reserva.Ativo = false;

                        data.Update(reserva);
                        await data.SaveChangesAsync();
                    }
                    else
                    {
                        livre = false;
                    }
                }


                var emprestimos = data.Emprestimos.Where(x => x.IdLivro == objeto.IdLivro && x.DFIm == null).Count();

                if (livre && emprestimos == 0)
                {
                    await data.AddAsync(objeto);

                    await data.SaveChangesAsync();

                    mensagem.Titulo = "Info";
                    mensagem.Corpo  = "O cadastro foi efectuado com sucesso !!!";
                }
                else
                {
                    mensagem.Titulo = "";
                    mensagem.Corpo  = "Erro, o livro não esta dísponivel. !!!";
                }

                return(mensagem);
            }
        }
 public async Task Delete(T objeto)
 {
     using (var data = new ContextBase(_OptionsBuilder))
     {
         data.Set <T>().Remove(objeto);
         await data.SaveChangesAsync();
     }
 }
        public async Task Add(T objeto)
        {
            using (var data = new ContextBase(_OptionsBuilder))
            {
                await data.Set <T>().AddAsync(objeto);

                await data.SaveChangesAsync();
            }
        }
        public async Task <Mensagem> Update_msg(Emprestimo objeto)
        {
            using (var db = new ContextBase(_OptionsBuilder))
            {
                Mensagem mensagem = new Mensagem();

                try
                {
                    db.Update(objeto);
                    await db.SaveChangesAsync();

                    mensagem.Titulo = "Info";
                    mensagem.Corpo  = "O cadastro foi efectuado com sucesso !!!";
                }
                catch (Exception)
                {
                    mensagem.Titulo = "";
                    mensagem.Corpo  = "Erro, o cadastro não foi efectuado com sucesso !!!";
                }

                return(mensagem);
            }
        }
        public async Task <Mensagem> AddWithControl(Emprestimo objeto)
        {
            using (var db = new ContextBase(_OptionsBuilder))
            {
                Mensagem mensagem = new Mensagem();
                bool     atraso   = false;

                try
                {
                    var cant = db.Emprestimos.Where(x => x.IdLeitor == objeto.IdLeitor && x.DFIm == null);

                    var ultimo = db.Emprestimos.Where(x => x.IdLeitor == objeto.IdLeitor).ToArray().LastOrDefault();

                    if (ultimo == null)
                    {
                        atraso = false;
                    }
                    else
                    {
                        DateTime date = (DateTime)ultimo.DFIm;

                        if (ultimo.DInicio.AddDays(30) < date)
                        {
                            atraso = false;
                        }
                        else
                        {
                            atraso = true;
                        }
                    }



                    if (cant.Count() < 2)
                    {
                        DateTime entrega = (DateTime)ultimo.DFIm;
                        if (atraso && entrega.AddDays(30) < DateTime.Now)
                        {
                            mensagem.Titulo = "";
                            mensagem.Corpo  = "O leitor esta  impossibilitado, tem que esperar até o " + entrega.AddDays(30).ToString();
                        }

                        else
                        {
                            await db.Emprestimos.AddAsync(objeto);

                            await db.SaveChangesAsync();

                            mensagem.Titulo = "Info";
                            mensagem.Corpo  = "O cadastro foi efectuado com sucesso !!!";
                        }
                    }
                    else
                    {
                        mensagem.Titulo = "";
                        mensagem.Corpo  = "Erro, limite excedido, o leitor registrou 2 livros em sua posse.";
                    }

                    return(mensagem);
                }
                catch (Exception)
                {
                    mensagem.Titulo = "";
                    mensagem.Corpo  = "Erro, no BD";
                    return(mensagem);
                }
            }
        }