예제 #1
0
        public async Task <ActionResult <IEnumerable <PhotoModel> > > Create([FromForm] UpdatePhotosModel photosModel)
        {
            var count = photosModel.Names?.Count ?? 0;

            if (count == 0 ||
                photosModel.Images.Count != count ||
                photosModel.Thumbnails.Count != count ||
                photosModel.Images.Concat(photosModel.Thumbnails).Any(p => p == null || p.Length == 0))
            {
                return(BadRequest());
            }

            var result = new List <PhotoModel>(count);

            for (var i = 0; i < count; i++)
            {
                var image     = photosModel.Images[i];
                var thumbnail = photosModel.Thumbnails[i];

                var photo = new Photo
                {
                    Name = photosModel.Names[i],
                };

                using (var ms = new MemoryStream())
                {
                    image.CopyTo(ms);
                    photo.Image = ms.ToArray();
                }

                using (var ms = new MemoryStream())
                {
                    thumbnail.CopyTo(ms);
                    photo.Thumbnail = ms.ToArray();
                }

                _dbContext.Photos.Add(photo);
                await _dbContext.SaveChangesAsync();

                result.Add(new PhotoModel {
                    Id = photo.Id, Name = photo.Name
                });
            }

            return(Ok(result));
        }
예제 #2
0
        public async Task <ActionResult> Update([FromForm] UpdatePhotosModel photosModel)
        {
            var count = photosModel.Names?.Count ?? 0;

            if (count == 0 ||
                photosModel.Ids.Count != count ||
                photosModel.Images.Count != count ||
                photosModel.Thumbnails.Count != count ||
                photosModel.Images.Concat(photosModel.Thumbnails).Any(p => p == null || p.Length == 0))
            {
                return(BadRequest());
            }

            for (var i = 0; i < count; i++)
            {
                var image     = photosModel.Images[i];
                var thumbnail = photosModel.Thumbnails[i];

                var photo = new Photo
                {
                    Id   = photosModel.Ids[i],
                    Name = photosModel.Names[i],
                };

                using (var ms = new MemoryStream())
                {
                    image.CopyTo(ms);
                    photo.Image = ms.ToArray();
                }

                using (var ms = new MemoryStream())
                {
                    thumbnail.CopyTo(ms);
                    photo.Thumbnail = ms.ToArray();
                }

                _dbContext.Photos.Attach(photo);
                await _dbContext.SaveChangesAsync();
            }

            return(Ok());
        }