Exemplo n.º 1
0
        public async Task <IActionResult> FamilyGallery(FamilyGalleryCreateModel newGallery)
        {
            var gallery = new Repo.Core.Model.Gallery()
            {
                ID          = Guid.NewGuid(),
                DateCreated = DateTime.Now,
                Name        = newGallery.Name,
                Summary     = newGallery.Description,
                FamilyId    = newGallery.FamilyId,
                FamilyEvent = newGallery.EventId.HasValue ? newGallery.EventId.Value : Guid.Empty,
                Owner       = _contextService.LoggedInPerson.Id,
                GalleryDate = newGallery.GalleryDate
            };

            await _writeModel.Save(gallery, new CancellationToken());

            return(RedirectToAction("Index").WithSuccess("Gallery saved"));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> EventGallery(EventGalleryCreateModel newGallery)
        {
            var gallery = new Repo.Core.Model.Gallery()
            {
                ID          = Guid.NewGuid(),
                DateCreated = DateTime.Now,
                Name        = newGallery.Name,
                Summary     = newGallery.Description,
                FamilyEvent = newGallery.FamilyEventId,
                Owner       = _contextService.LoggedInPerson.Id
            };

            var cancellationToken = CancellationToken.None;

            await _writeModel.Save(gallery, cancellationToken);

            var events = (await _familyEventReadRepository.GetAllEvents(cancellationToken)).Select(Models.FamilyEvent.Map);

            return(View(new EventGalleryCreateModel(events)).WithSuccess("Gallery saved"));
        }
Exemplo n.º 3
0
        public static async Task <GalleryIndex> Map(Repo.Core.Model.Gallery sourceGallery, ClanAndPeopleService clanAndFamilyService, IFamilyEventReadRepository familyEventReadModel, CancellationToken cancellationToken)
        {
            var familyName = sourceGallery.FamilyId.HasValue ?
                             $"{clanAndFamilyService.Clans.FirstOrDefault(c => c.Id == sourceGallery.FamilyId)?.FamilyName}, {clanAndFamilyService.Clans.FirstOrDefault(c => c.Id == sourceGallery.FamilyId)?.Family}"
                                : string.Empty;

            return(await Task.FromResult(new GalleryIndex()
            {
                Title = sourceGallery.Name,
                FamilyEvent = FamilyEvent.Map(await familyEventReadModel.Load(sourceGallery.FamilyEvent, cancellationToken)),
                Owner = sourceGallery.Owner.ToString(),
                OwnerId = sourceGallery.Owner,
                Summary = sourceGallery.Summary,
                Id = sourceGallery.ID,
                DateCreated = sourceGallery.DateCreated,
                Family = familyName,
                DefaultFamilyEventGallery = sourceGallery.DefaultFamilyEventGallery,
                GalleryDate = sourceGallery.GalleryDate,
                Clan = clanAndFamilyService.Clans.FirstOrDefault(t => t.Id == sourceGallery.FamilyId)
            }
                                         ));
        }
Exemplo n.º 4
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 }));
        }