public async Task <bool> CreateAsync(ProductPicturesModifyRequest request) { var index = 0; foreach (var picture in request.Pictures) { var binaryPicture = ImageUtil.EncodeJavascriptBase64(picture.Base64Data); var pictureData = Convert.FromBase64String(binaryPicture); var pictureId = await _pictureRepository.AddWithInt64EntityAsync(new Picture() { CreatedById = request.UpdatedById, CreatedDate = request.CreatedDate, FileName = picture.FileName, MimeType = picture.ContentType, UpdatedById = request.UpdatedById, UpdatedDate = request.UpdatedDate, BinaryData = pictureData, StatusId = PictureStatus.Pending.GetCode() }); var productPictureTypeId = index == 0 ? (int)ProductPictureType.Thumbnail : (int)ProductPictureType.Secondary; await _productPictureRepository.AddAsync(new ProductPicture() { ProductId = request.ProductId, PictureId = pictureId, PictureTypeId = productPictureTypeId }); index += 1; } return(true); }
public async Task <bool> UpdateStatusByProductIdAsync(ProductPicturesModifyRequest request, PictureStatus pictureStatus) { await(from productPicture in _productPictureRepository.Get(x => x.ProductId == request.ProductId) join picture in _pictureRepository.Table on productPicture.PictureId equals picture.Id select picture) .Set(x => x.StatusId, pictureStatus.GetCode()) .Set(x => x.UpdatedById, request.UpdatedById) .Set(x => x.UpdatedDate, DateTimeOffset.UtcNow) .UpdateAsync(); return(true); }
public async Task <bool> UpdateAsync(ProductPicturesModifyRequest request) { var pictureIds = request.Pictures.Select(x => x.Id); var deleteProductPictures = _productPictureRepository .Get(x => x.ProductId == request.ProductId && x.PictureId.NotIn(pictureIds)); // Delete old images var deletePictureIds = deleteProductPictures.Select(x => x.PictureId).ToList(); if (deletePictureIds.Any()) { await deleteProductPictures.DeleteAsync(); await _pictureRepository.Get(x => x.Id.In(deletePictureIds)).DeleteAsync(); } var pictureTypeId = (int)ProductPictureType.Thumbnail; var shouldAddPicture = true; var hasPicture = _productPictureRepository.Get(x => x.ProductId == request.ProductId && x.PictureTypeId == pictureTypeId).Any(); if (hasPicture) { shouldAddPicture = false; } // Add new images foreach (var picture in request.Pictures) { if (!string.IsNullOrEmpty(picture.Base64Data)) { var base64Data = ImageUtil.EncodeJavascriptBase64(picture.Base64Data); var pictureData = Convert.FromBase64String(base64Data); var pictureId = _pictureRepository.AddWithInt64Entity(new Picture() { CreatedById = request.UpdatedById, CreatedDate = request.CreatedDate, FileName = picture.FileName, MimeType = picture.ContentType, UpdatedById = request.UpdatedById, UpdatedDate = request.UpdatedDate, BinaryData = pictureData, StatusId = PictureStatus.Pending.GetCode() }); var productPictureTypeId = shouldAddPicture ? pictureTypeId : (int)ProductPictureType.Secondary; _productPictureRepository.Add(new ProductPicture() { ProductId = request.ProductId, PictureId = pictureId, PictureTypeId = productPictureTypeId }); shouldAddPicture = false; } } var firstRestPicture = await _productPictureRepository.FirstOrDefaultAsync(x => x.ProductId == request.ProductId && x.PictureTypeId != pictureTypeId); if (firstRestPicture != null) { firstRestPicture.PictureTypeId = pictureTypeId; await _productPictureRepository.UpdateAsync(firstRestPicture); } return(true); }