Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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));
            }
        }
Ejemplo n.º 5
0
        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));
            }
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
 public async Task <IActionResult> FavDorehamiRemove(IdStringWrapper idString)
 {
     return(await ExecuteAsync(
                () => service.FavDorehamiRemove(idString, User),
                () => General.CheckIsLong(idString.IdString)));
 }
Ejemplo n.º 9
0
 public async Task <IActionResult> GetDetail([FromBody] IdStringWrapper wrapper)
 {
     return(await ExecuteAsync(
                () => service.GetDetail(wrapper, User),
                () => General.CheckIsLong(wrapper.IdString)));
 }