public async Task FavDorehamiRemove(IdStringWrapper idString, ClaimsPrincipal actingUser) { var user = await Helper.GetUserByClaim(dbContext, actingUser, true); var dId = long.Parse(idString.IdString); var dorehami = await dbContext.Dorehamies .AsNoTracking() .Where(r => r.Id == dId) .FirstOrDefaultAsync(); if (dorehami == null) { throw new RecordNotFoundException(nameof(Dorehami)); } var joinRecord = await dbContext.FavUserDorehamies .AsTracking() .Where(r => r.UserId == user.Id && r.DorehamiId == dorehami.Id) .FirstOrDefaultAsync(); if (joinRecord == null) { throw new DorehamiNotFavoritedException(); } dbContext.FavUserDorehamies.Remove(joinRecord); await dbContext.SaveChangesAsync(); }
public async Task <Stream> DownloadThumbnail(IdStringWrapper wrapper) { var id = long.Parse(wrapper.IdString); var image = await dbContext.Images .Where(r => r.Id == id) .FirstOrDefaultAsync(); if (image == null) { throw new RecordNotFoundException(nameof(Entity.Models.Image)); } var dir = $"{Directory.GetCurrentDirectory()}/" + $"{Settings.Services.Images.Directory}/" + $"{image.Id / Settings.Services.FileFactor}/"; var filePath = $"{dir}{image.Id}.thumb.jpg"; var memStream = new MemoryStream(); try { using var file = new FileStream(filePath, FileMode.Open); await file.CopyToAsync(memStream); } catch (FileNotFoundException e) { throw; } catch (IOException e) { throw; } return(memStream); }
public async Task <ObjectDorehamiDetails> GetDetail(IdStringWrapper wrapper, ClaimsPrincipal actingUser) { var user = await Helper.GetUserByClaim(dbContext, actingUser); var id = long.Parse(wrapper.IdString); var q0 = await dbContext.Dorehamies .AsNoTracking() .Where(r => r.Id == id) .Select(Helper.DetailFromDorehami(user.Id)) .FirstOrDefaultAsync(); return(q0); }
public async Task <IActionResult> DownloadThumbnail([FromBody] IdStringWrapper wrapper) { try { General.CheckIsLong(wrapper.IdString); var stream = await service.DownloadThumbnail(wrapper); stream.Position = 0; return(File(stream, MediaTypeNames.Image.Jpeg)); } catch (Exception e) { return(HandleException(e)); } }
public async Task <IActionResult> DownloadImage([FromBody] IdStringWrapper wrapper) { try { General.CheckIsLong(wrapper.IdString); var stream = await service.DownloadImage(wrapper); stream.Position = 0; return(File(stream, "image/png")); } catch (Exception e) { return(HandleException(e)); } }
public async Task DeleteDorehami(IdStringWrapper wrapper, ClaimsPrincipal actingUser) { var user = await Helper.GetUserByClaim(dbContext, actingUser); var dorId = long.Parse(wrapper.IdString); var dor = await dbContext.Dorehamies .Where(r => r.Id == dorId) .FirstOrDefaultAsync(); if (dor.CreatorId != user.Id) { //todo new exception throw new InvalidRequestException("user does not own the dorehami"); } else { await deleteService.Dorehami(dor.Id); } }
public async Task JoinDorehamiAdd(IdStringWrapper idString, ClaimsPrincipal actingUser) { var user = await Helper.GetUserByClaim(dbContext, actingUser, true); var dId = long.Parse(idString.IdString); var dorehami = await dbContext.Dorehamies .AsNoTracking() .Where(r => r.Id == dId) .FirstOrDefaultAsync(); if (dorehami == null) { throw new RecordNotFoundException(nameof(Dorehami)); } var joinRecord = await dbContext.JoinUserDorehamies .AsNoTracking() .Where(r => r.UserId == user.Id && r.DorehamiId == dorehami.Id) .FirstOrDefaultAsync(); if (joinRecord != null) { throw new DorehamiAlreadyJoinedException(); } JoinUserDorehami newJoin = new JoinUserDorehami { DorehamiId = dorehami.Id, UserId = user.Id, }; user.JoinedDorehamies.Add(newJoin); dbContext.JoinUserDorehamies.Add(newJoin); await dbContext.SaveChangesAsync(); }
public async Task <IActionResult> FavDorehamiRemove(IdStringWrapper idString) { return(await ExecuteAsync( () => service.FavDorehamiRemove(idString, User), () => General.CheckIsLong(idString.IdString))); }
public async Task <IActionResult> GetDetail([FromBody] IdStringWrapper wrapper) { return(await ExecuteAsync( () => service.GetDetail(wrapper, User), () => General.CheckIsLong(wrapper.IdString))); }