Exemple #1
0
        public async Task <IActionResult> UploadFiles(Guid galleryId, int FamilyImageId, List <IFormFile> files)
        {
            try
            {
                var cancellationToken = GetCancellationToken();

                var gallery = await _readModel.Load(galleryId, cancellationToken);

                if (gallery == null)
                {
                    return(BadRequest("Ïnvalid Gallery Id"));
                }

                foreach (var formFile in files)
                {
                    var checkextension = Path.GetExtension(formFile.FileName).ToLower();

                    if (!_AllowedExtensions.Contains(checkextension))
                    {
                        return(BadRequest($"Invalid file format {checkextension} on file {formFile.FileName}"));
                    }

                    var img = new ImageReferenceModel()
                    {
                        MimeType         = formFile.ContentType,
                        FileName         = formFile.FileName,
                        Id               = Guid.NewGuid(),
                        GalleryReference = galleryId,
                        PersonId         = FamilyImageId
                    };

                    if (formFile.Length > 0)
                    {
                        using (var stream = new MemoryStream())
                        {
                            await formFile.CopyToAsync(stream);

                            var rotatedImage = RotateImage(stream);
                            using (var rotatedStream = new MemoryStream())
                            {
                                rotatedImage.Save(rotatedStream, GetRawFormat(formFile.FileName));
                                await _fileService.SaveFile(img.Id, galleryId.ToString(), rotatedStream, formFile.FileName, formFile.ContentType, cancellationToken);

                                rotatedStream.Position = 0;
                                var resized = FileResizer.GetFileResized(ReadFully(rotatedStream), 150);
                                await _fileService.SaveFile(img.Id, $"{galleryId}/thumbnail", resized, formFile.FileName, formFile.ContentType, cancellationToken);

                                await _imageReferenceWriteModel.Save(img.MapToEntity(), cancellationToken);
                            }
                        }
                    }
                }
                return(await Task.FromResult(RedirectToAction("EditGalleryImages", new { id = gallery.ID }).WithSuccess("Image/s saved")));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to upload the image/s");
                return(RedirectToAction("EditGalleryImages", new { id = galleryId }).WithError("Sorry - there has been an error saving the files. The error has been logged"));
            }
        }
Exemple #2
0
        public async Task <IActionResult> EditImage(Guid galleryId, Guid imageId)
        {
            var cancellationToken = GetCancellationToken();
            var imgReference      = await _imageReferenceReadRepository.Load(galleryId, imageId, cancellationToken);

            return(View(ImageReferenceModel.Map(imgReference)));
        }
Exemple #3
0
        public async Task <IActionResult> EditImage(ImageReferenceModel imageReferenceModel)
        {
            var cancellationToken = GetCancellationToken();
            var imgReference      = await _imageReferenceReadRepository.Load(imageReferenceModel.GalleryReference, imageReferenceModel.Id, cancellationToken);


            var imgRefToSave = new ImageReference
            {
                DefaultGalleryImage = imageReferenceModel.DefaultGalleryImage,
                Description         = imageReferenceModel.Description,
                FileName            = string.IsNullOrEmpty(imgReference.FileName) ? imgReference.Title : imgReference.FileName,
                //GalleryId = imageReferenceModel.GalleryReference,
                ID            = imgReference.ID,
                ImageID       = imgReference.ImageID,
                ImageLocation = imgReference.ImageLocation,
                MimeType      = imgReference.MimeType,
                PersonId      = imageReferenceModel.PersonId,
                Title         = imageReferenceModel.Title
            };


            await _imageReferenceWriteModel.Save(imgRefToSave, cancellationToken);

            return(RedirectToAction("Detail", new { id = imgRefToSave.ID }));
        }
Exemple #4
0
/// <summary>
/// 更新信息
/// </summary>
        public int UpdateInfo(SqlTransaction trans, ImageReferenceModel imaModel, long SN)
        {
            string key = "Cache_ImageReference_Model_" + SN;

            CacheHelper.RemoveCache(key);
            return(imaDAL.UpdateInfo(trans, imaModel, SN));
        }
            public static ArticleModel MapToDataModel(Domain.ArticleAggregate.Article domainModel, ArticleModel target = null)
            {
                if (target == null)
                {
                    target = new ArticleModel();
                }

                target.Id          = domainModel.Id;
                target.Title       = domainModel.Title;
                target.Content     = domainModel.Content;
                target.PublishTime = domainModel.PublishTime;
                target.Thumbnail   = ImageReferenceModel.FromDomainModel(domainModel.Thumbnail);
                target.IsPublished = domainModel.IsPublished;

                target.ArticleTags.Clear();
                foreach (int tagId in domainModel.TagIds)
                {
                    target.ArticleTags.Add(new ArticleTagModel
                    {
                        Article   = target,
                        ArticleId = target.Id,
                        TagId     = tagId
                    });
                }

                return(target);
            }
Exemple #6
0
/// <summary>
/// 从缓存读取信息
/// </summary>
        public ImageReferenceModel GetCacheInfo(SqlTransaction trans, long SN)
        {
            string key   = "Cache_ImageReference_Model_" + SN;
            object value = CacheHelper.GetCache(key);

            if (value != null)
            {
                return((ImageReferenceModel)value);
            }
            else
            {
                ImageReferenceModel imaModel = imaDAL.GetInfo(trans, SN);
                CacheHelper.AddCache(key, imaModel, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(20), CacheItemPriority.Normal, null);
                return(imaModel);
            }
        }
Exemple #7
0
        public async Task <IActionResult> EventImage(FamilyEventImage imageWriteModel)
        {
            var cancellationToken = GetCancellationToken();
            var gallery           = await _galleryReadRepository.FindAllByFamilyEvent(imageWriteModel.FamilyEventId, GetCancellationToken());

            if (!(gallery.Any() || gallery.Any(t => t.DefaultFamilyEventGallery)))
            {
                // is there an imagegallery for this event?
                var eventGallery = new Repo.Core.Model.Gallery()
                {
                    ID          = imageWriteModel.FamilyEventGalleryId,
                    DateCreated = DateTime.Now,
                    FamilyEvent = imageWriteModel.FamilyEventId,
                    DefaultFamilyEventGallery = true,
                    Name  = string.Empty,
                    Owner = _contextService.LoggedInPerson.Id
                };
                await _galleryWriteRepository.Save(eventGallery, cancellationToken);

                imageWriteModel.FamilyEventGalleryId = eventGallery.ID;
            }
            else
            {
                imageWriteModel.FamilyEventGalleryId = gallery.First(g => g.DefaultFamilyEventGallery).ID;
                var imageReferences = await _imageReferenceReadRepository.LoadByGallery(imageWriteModel.FamilyEventGalleryId, cancellationToken);

                var currentDefaultImage = imageReferences.FirstOrDefault(t => t.DefaultGalleryImage);
                if (currentDefaultImage != null)
                {
                    currentDefaultImage.DefaultGalleryImage = false;
                    await _imageReferenceWriteModel.Save(currentDefaultImage, cancellationToken);
                }
            }

            var allowedExtensions = new[] { ".png", ".gif", ".jpg" };

            var checkextension = Path.GetExtension(imageWriteModel.DefaultImage.FileName).ToLower();

            if (!allowedExtensions.Contains(checkextension))
            {
                return(BadRequest($"Invalid file format {checkextension} on file {imageWriteModel.DefaultImage.FileName}"));
            }

            var img = new ImageReferenceModel()
            {
                MimeType            = imageWriteModel.DefaultImage.ContentType,
                Title               = imageWriteModel.DefaultImage.FileName,
                Id                  = Guid.NewGuid(),
                GalleryReference    = imageWriteModel.FamilyEventGalleryId,
                DefaultGalleryImage = true
            };

            if (imageWriteModel.DefaultImage.Length > 0)
            {
                using (var stream = new MemoryStream())
                {
                    await imageWriteModel.DefaultImage.CopyToAsync(stream);

                    stream.Position = 0;
                    var resized = FileResizer.GetFileResized(ReadFully(stream), 150);
                    await _fileService.SaveFile(img.Id, $"{imageWriteModel.FamilyEventGalleryId}/thumbnail", resized, imageWriteModel.DefaultImage.FileName, imageWriteModel.DefaultImage.ContentType, cancellationToken);

                    await _imageReferenceWriteModel.Save(img.MapToEntity(), cancellationToken);
                }
            }

            return(Json(new { path = img.Id + "/thumbnail/" + img.Title, id = img.Id }));
        }
Exemple #8
0
/// <summary>
/// 插入信息
/// </summary>
        public int InsertInfo(SqlTransaction trans, ImageReferenceModel imaModel)
        {
            return(imaDAL.InsertInfo(trans, imaModel));
        }
 public static ImageReference ToBusinessModel(this ImageReferenceModel model)
 {
     return(new(model.Id, model.Info.ToBusinessModel(), model.QualityScore));
 }