Example #1
0
        public IHttpActionResult Post(int idLivro)
        {
            if (RequestContext.Principal?.Identity == null)
            {
                return(StatusCode(HttpStatusCode.Unauthorized));
            }

            using (var db = new TccSettings())
            {
                if (db.tblReserva.Count(r => r.IDProduto == idLivro && DbFunctions.AddDays(r.DataReserva, 7) > DateTime.Now) > 1)
                {
                    return(Json(new {
                        Code = 400,
                        Message = "Reserva indisponível"
                    }));
                }

                db.tblReserva.Add(new tblReserva()
                {
                    IDLeitor    = (RequestContext.Principal.Identity as LeitorIdentity).IDLeitor,
                    DataReserva = DateTime.Now,
                    IDProduto   = idLivro
                });
                db.SaveChanges();
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
 public IHttpActionResult Get(int id)
 {
     using (var db = new TccSettings())
     {
         var leitor = db.tblLeitor
                      .Include("tbReserva")
                      .Include("tblFavoritos")
                      .Select(l => new
         {
             l.IDLeitor,
             l.RG,
             l.CPF,
             l.DataCadastro,
             l.DataNasc,
             l.Email,
             l.Endereco,
             l.ImagemLeitor,
             l.tblTipoLeitor.TipoLeitor,
             l.Nome,
             l.Telefone,
             Reservas = l.tblReserva.Select(r => new
             {
                 r.IDReserva,
                 r.IDProduto
             }).ToList(),
             Favoritos = l.tblFavoritos.Select(f => f.IDProduto).ToList()
         }).First(l => l.IDLeitor == id);
         return(Json(leitor));
     }
 }
        public IHttpActionResult Put(int id, int[] favs)
        {
            using (var db = new TccSettings())
            {
                try
                {
                    var livros = (from l in db.tblProduto
                                  where favs.Contains(l.IDProduto)
                                  select l).ToList();

                    var amiguinho = (from l in db.tblLeitor
                                     where l.IDLeitor == id
                                     select l).First();

                    amiguinho.tblFavoritos = livros.Select(l => new tblFavoritos()
                    {
                        IDProduto = l.IDProduto
                    }).ToList();

                    db.SaveChanges();

                    return(Ok());
                }
                catch (Exception e)
                {
                    return(Json(new
                    {
                        Code = 404,
                        e.Message
                    }));
                }
            }
        }
 public IHttpActionResult Put(int id, tblLeitor leitor)
 {
     using (var db = new TccSettings())
         try
         {
             tblLeitor _leitor = db.tblLeitor.Include("tblEmprestimo").Include("tblFavoritos").First(l => l.IDLeitor == id);
             _leitor.Nome         = leitor.Nome ?? _leitor.Nome;
             _leitor.CPF          = leitor.CPF ?? _leitor.CPF;
             _leitor.RG           = leitor.RG ?? _leitor.RG;
             _leitor.DataNasc     = leitor.DataNasc ?? _leitor.DataNasc;
             _leitor.IDTipoLeitor = leitor.IDTipoLeitor ?? _leitor.IDTipoLeitor;
             _leitor.Email        = leitor.Email ?? _leitor.Email;
             _leitor.Telefone     = leitor.Telefone ?? _leitor.Telefone;
             _leitor.Endereco     = leitor.Endereco ?? _leitor.Endereco;
             _leitor.ImagemLeitor = leitor.ImagemLeitor ?? _leitor.ImagemLeitor;
             db.SaveChanges();
             return(Ok());
         }
         catch (Exception e)
         {
             return(Json(new
             {
                 Code = 404,
                 e.Message
             }));
         }
 }
Example #5
0
 public JsonResult <object> Post(LoginByEmail value)
 {
     //if(User.Identity == null)
     //    return Json(new
     //    {
     //        Code = 403,
     //        Message = "Não autorizado"
     //    } as object);
     //if (((FuncionarioIdentity)User.Identity).PermissionLevel > 1)
     //    return Json(new
     //    {
     //        Code = 403,
     //        Message = "Não autorizado"
     //    } as object);
     using (var db = new TccSettings())
         if (Authentication.RegisterUser(db.tblLeitor.FirstOrDefault(l => l.Email == value.Email), value.Senha))
         {
             return(Json(new
             {
                 Code = 200,
                 Message = "Usuário registrado com sucesso"
             } as object));
         }
         else
         {
             return(Json(new
             {
                 Code = 500,
                 Message = "Ocorreu um erro ao registrar o usuário."
             } as object));
         }
 }
 public IHttpActionResult Get([FromUri] string isbn)
 {
     using (var db = new TccSettings())
     {
         var count = db.tblProduto.Count(p => p.ISBN == isbn);
         return(Json(count));
     }
 }
 public IHttpActionResult Delete(int id)
 {
     using (var db = new TccSettings())
     {
         db.tblLeitor.Remove(db.tblLeitor.First(l => l.IDLeitor == id));
         return(StatusCode(HttpStatusCode.NoContent));
     }
 }
        public IHttpActionResult Get([FromUri] string isbn, string reservas)
        {
            using (var db = new TccSettings())
            {
                var count =
                    from p in db.tblProduto
                    where p.ISBN == isbn
                    select p.tblReserva.Count;

                return(Json(count.Sum()));
            }
        }
Example #9
0
        protected async override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var _ = (request, cancellationToken);

            var authHeader = request.Headers.Authorization;

            if (authHeader == null)
            {
                return(Next(_));
            }

            if (authHeader.Scheme != "Bearer")
            {
                return(Next(_));
            }

            if (string.IsNullOrWhiteSpace(authHeader.Parameter))
            {
                return(Next(_));
            }

            var tokenHandler = new JwtSecurityTokenHandler();

            if (!tokenHandler.CanReadToken(authHeader.Parameter))
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, "Malformed Token"));
            }

            var claimsIdentity = tokenHandler.ValidateToken(authHeader.Parameter, new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
            {
                ValidateAudience      = false,
                ValidateIssuer        = false,
                RequireExpirationTime = false,
                IssuerSigningKey      = new SymmetricSecurityKey(Convert.FromBase64String(WebApiApplication.JWTSecret))
            }, out var token).Identity as ClaimsIdentity;

            if (claimsIdentity == null)
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, "Empty Claims"));
            }

            var userId = int.Parse(claimsIdentity.FindFirst("UserId").Value);

            using (var db = new TccSettings())
                SetPrincipal(new UserPrincipal(db.tblLeitor.Include("tblTipoLeitor").First(l => l.IDLeitor == userId)));


            return(Next(_));
        }
Example #10
0
        public IHttpActionResult Post(dynamic _leitor)
        {
            var leitor = (_leitor as Newtonsoft.Json.Linq.JObject).ToObject <tblLeitor>();

            using (var db = new TccSettings())
            {
                leitor.IDLeitor     = (db.tblLeitor.OrderByDescending(l => l.IDLeitor).FirstOrDefault()?.IDLeitor ?? 0) + 1;
                leitor.Senha        = "";
                leitor.Salt         = "";
                leitor.DataCadastro = DateTime.Now;
                var addedLeitor = db.tblLeitor.Add(leitor);
                db.SaveChanges();
                return(Json(addedLeitor));
            }
        }
Example #11
0
        public IHttpActionResult Get(int page = 1, int results = 20)
        {
            using (var db = new TccSettings())
            {
                var leitoresCount = db.tblLeitor.Count();
                if ((page - 1) * results > leitoresCount)
                {
                    return(Json(new
                    {
                        total_count = leitoresCount,
                        count = 0,
                        leitores = new object[] { }
                    }));
                }

                var leitores = db.tblLeitor
                               .Include("tbReserva")
                               .Include("tblFavoritos").OrderBy(l => l.IDLeitor).Skip((page - 1) * results).Take(results)
                               .Select(l => new
                {
                    l.IDLeitor,
                    l.RG,
                    l.CPF,
                    l.DataCadastro,
                    l.DataNasc,
                    l.Email,
                    l.Endereco,
                    l.ImagemLeitor,
                    l.tblTipoLeitor.TipoLeitor,
                    l.Nome,
                    l.Telefone,
                    Reservas = l.tblReserva.Select(r => new
                    {
                        r.IDReserva,
                        r.IDProduto
                    }).ToList(),
                    Favoritos = l.tblFavoritos.Select(f => f.IDProduto).ToList()
                })
                               .ToList();

                return(Json(new
                {
                    total_count = leitoresCount,
                    count = leitores.Count(),
                    leitores
                }));
            }
        }
Example #12
0
 public JsonResult <object> PostUser([FromBody] LoginData login)
 {
     using (var db = new TccSettings()) {
         /*Leitor currentLeitor = Leitor.GetLeitor(login.Email);*/
         var leitor = db.tblLeitor.FirstOrDefault(l => l.Email == login.Email);
         if (Authentication.LogUserIn(leitor, login.Senha))
         {
             return(Json(new
             {
                 Code = 200,
                 Token = Authorization.GenerateJWT(leitor)
             } as object));
         }
         return(Json(new
         {
             Code = 402
         } as object));
     }
 }
Example #13
0
        public static bool LogUserIn(tblLeitor user, string plaintextPassword)
        {
            Rfc2898DeriveBytes hash;

            (string digestedSalt, string digestedHash) = ("", "");

            using (var db = new TccSettings())
            {
                dynamic credentials = new {};
                try
                {
                    credentials = db.tblLeitor.Where(l => l.IDLeitor == user.IDLeitor)
                                  .Select(l => new { l.Salt, l.Senha }).First();
                }
                catch (Exception)
                {
                    return(false);
                }

                digestedHash = credentials.Senha;
                digestedSalt = credentials.Salt;
            }

            var saltBytes = StringToByteArray(digestedSalt);

            hash = new Rfc2898DeriveBytes(plaintextPassword, saltBytes, ITERATIONS);

            var digestedHashedPassword = BitConverter.ToString(hash.GetBytes(16)).Replace("-", "").ToLower();

            hash.Dispose();
            if (digestedHashedPassword != digestedHash)
            {
                return(false);
            }


            return(true);
        }
Example #14
0
        public static bool RegisterUser(tblLeitor user, string plaintextPassword)
        {
            Rfc2898DeriveBytes hash;
            var generatedSaltBytes = new byte[16];

            rng.GetBytes(generatedSaltBytes);

            hash = new Rfc2898DeriveBytes(plaintextPassword, generatedSaltBytes, ITERATIONS);

            var digestedHashedPassword = BitConverter.ToString(hash.GetBytes(16)).Replace("-", "").ToLower();

            hash.Dispose();

            using (var db = new TccSettings())
            {
                var leitor = db.tblLeitor.First(l => l.IDLeitor == user.IDLeitor);
                leitor.Salt  = BitConverter.ToString(generatedSaltBytes).Replace("-", "").ToLower();
                leitor.Senha = digestedHashedPassword;

                db.SaveChanges();
            }

            return(true);
        }
        public JsonResult <object> Get(int page = 1, int results = 20)
        {
            using (var db = new TccSettings())
            {
                int prodCount = db.tblProduto.Count();
                if ((page - 1) * results > prodCount)
                {
                    return(Json(new
                    {
                        total_count = prodCount,
                        count = 0,
                        produtos = new object[] { }
                    } as object));
                }

                var SeteDiasAtrás = DateTime.Now.AddDays(-7);

                var produtos = db.tblProduto
                               .Include("tblGeneroProduto")
                               .Include("tblReserva")
                               .Include("tblLeitor")
                               .Include("tblGenero")
                               .OrderByDescending(p => p.IDProduto)
                               .Skip((page - 1) * results)
                               .Take(results)
                               .Select(p => new
                {
                    p.AnoEdicao,
                    p.AutoresLivro,
                    p.DescricaoProd,
                    p.Editora,
                    p.Fileira,
                    p.IDProduto,
                    p.ISBN,
                    p.ImagemProd,
                    p.NomeLivro,
                    p.Prateleira,
                    p.Setor,
                    Generos = p.tblGeneroProduto
                              .Select(gp => gp.tblGenero.NomeGenero)
                              .ToList(),

                    Reservas = p.tblReserva
                               .Where(r => r.DataReserva > SeteDiasAtrás)
                               .OrderByDescending(r => r.IDReserva)
                               .Select(
                        r => new
                    {
                        r.IDReserva,
                        r.DataReserva,
                    }).ToList(),
                    p.TipoAcervo,
                    p.TipoProduto,
                })
                               .ToList();

                return(Json(new
                {
                    total_count = prodCount,
                    count = produtos.Count,
                    produtos,
                } as object));
            }
        }