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; }
/// <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) }); }
private RequestedItemImage ConvertToRequestedItemImage(RequestedImageViewModel requestedImageVM) { return(new RequestedItemImage() { Id = requestedImageVM.Id, IsMain = requestedImageVM.IsMain, RequestedItemId = requestedImageVM.RequestedItemId, ImageUrl = AzureStorageConfiguration.GetImageNameFromUrl(requestedImageVM.ImageUrl) }); }
/// <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; }