Exemplo n.º 1
0
        private void SetEventImage(IEnumerable <ImageViewModel> incomingImages, Event eventItem)
        {
            //images in Db
            List <EventImage> storedImages = _unitOfWork.EventImageRepository.Read().Where(i => i.EventId == eventItem.Id).ToList();

            //new images user set
            List <ImageViewModel> incomeNewImages = incomingImages.Select(i => i).Where(i => !String.IsNullOrEmpty(i.Base64Data)).ToList();

            if (incomeNewImages.Any(i => i.IsMain))
            {
                storedImages.ForEach(i => i.IsMain = false);
            }

            //in case when only main image was changed
            storedImages.ForEach(si => si.IsMain = incomingImages.
                                                   Select(i => i).
                                                   Where(i => i.Id == si.Id).
                                                   FirstOrDefault()
                                                   ?.IsMain ?? si.IsMain);

            //old images stored in Db
            var incomeOldImages      = incomingImages.Select(i => i).Where(i => String.IsNullOrEmpty(i.Base64Data));
            var incomeOldImagesModel = incomeOldImages.Select(i => new EventImage()
            {
                Id       = i.Id,
                IsMain   = i.IsMain,
                ImageUrl = i.ImageUrl
            });

            //old images which we have removed from offerItem.Images
            var uslesImages = storedImages.Where(l2 => incomeOldImagesModel.Select(i2 => AzureStorageConfiguration.GetImageNameFromUrl(i2.ImageUrl)).Contains(l2.ImageUrl) == false).ToList();

            foreach (var stuff in uslesImages)
            {
                _unitOfWork.EventImageRepository.Delete(stuff.Id);
                storedImages.Remove(stuff);
                _imgService.DeleteImageAsync(AzureStorageConfiguration.GetImageNameFromUrl(stuff.ImageUrl));
            }

            //save new images
            var newImages = UploadImagesToStorage(incomeNewImages);

            //InsertImagesInDataBase(newImages, eventItem.Id);
            foreach (var picture in newImages)
            {
                var newImg = _unitOfWork.EventImageRepository.Create(new EventImage()
                {
                    Id       = picture.Id,
                    IsMain   = picture.IsMain,
                    ImageUrl = picture.ImageUrl,
                    EventId  = eventItem.Id
                });
                storedImages.Add(newImg);
            }

            eventItem.EventImages = storedImages;
        }
Exemplo n.º 2
0
 /// <summary>
 /// Convert OfferedItemImageViewModele To OfferedItemImage
 /// </summary>
 /// <param name="offeredItemImages"></param>
 /// <returns></returns>
 private OfferedItemImage ConvertFromOfferedItemImageViewModelToModel(OfferedItemImageViewModel offeredItemImages)
 {
     return(new OfferedItemImage()
     {
         Id = offeredItemImages.Id,
         IsMain = offeredItemImages.IsMain,
         OfferedItemId = offeredItemImages.OfferedItemId,
         ImageUrl = AzureStorageConfiguration.GetImageNameFromUrl(offeredItemImages.ImageUrl)
     });
 }
Exemplo n.º 3
0
 private RequestedItemImage ConvertToRequestedItemImage(RequestedImageViewModel requestedImageVM)
 {
     return(new RequestedItemImage()
     {
         Id = requestedImageVM.Id,
         IsMain = requestedImageVM.IsMain,
         RequestedItemId = requestedImageVM.RequestedItemId,
         ImageUrl = AzureStorageConfiguration.GetImageNameFromUrl(requestedImageVM.ImageUrl)
     });
 }
Exemplo n.º 4
0
        /// <summary>
        /// Set pictures, received as param for specified offered item id
        /// </summary>
        /// <param name="incomingImages">IEnumerable of offered item image view models</param>
        /// <param name="offerItem">offered item entity</param>
        /// <returns>Offered Item Image View models</returns>
        public void SetOfferedItemPictures(IEnumerable <OfferedItemImageViewModel> incomingImages, OfferedItem offerItem)
        {
            //images in Db
            List <OfferedItemImage> storedImages = offerItem.OfferedItemImages.ToList();

            //new images user set
            List <OfferedItemImageViewModel> incomeNewImages = incomingImages.Select(i => i).Where(i => !String.IsNullOrEmpty(i.Base64Data)).ToList();

            if (incomeNewImages.Any(i => i.IsMain))
            {
                storedImages.ForEach(i => i.IsMain = false);
            }

            //in case when only main image was changed
            storedImages.ForEach(si => si.IsMain = incomingImages.
                                                   Select(i => i).
                                                   Where(i => i.Id == si.Id).
                                                   FirstOrDefault()
                                                   ?.IsMain ?? si.IsMain);

            //old images stored in Db
            var incomeOldImages      = incomingImages.Select(i => i).Where(i => String.IsNullOrEmpty(i.Base64Data));
            var incomeOldImagesModel = ConvertOfferedItemImagesVmToModels(incomeOldImages);

            //old images which we have removed from offerItem.Images
            var uslesImages = storedImages.Where(l2 => !incomeOldImagesModel.Any(l1 => l1.ImageUrl == l2.ImageUrl)).ToList();

            foreach (var stuff in uslesImages)
            {
                _unitOfWork.OfferImagesRepository.Delete(stuff.Id);
                storedImages.Remove(stuff);
                _imgService.DeleteImageAsync(AzureStorageConfiguration.GetImageNameFromUrl(stuff.ImageUrl));
            }

            //save new images
            var newImages = UploadImagesToStorage(incomeNewImages, offerItem.Id);

            foreach (var picture in newImages)
            {
                var newImg = _unitOfWork.OfferImagesRepository.Create(picture);
                storedImages.Add(newImg);
            }

            offerItem.OfferedItemImages = storedImages;
        }