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 })); } }
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())); } }
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(_)); }
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)); } }
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 })); } }
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)); } }
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); }
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)); } }