public async Task <long> CreateAsync(ArticlePictureModifyRequest request)
        {
            var base64Data  = ImageUtil.EncodeJavascriptBase64(request.Picture.Base64Data);
            var pictureData = Convert.FromBase64String(base64Data);
            var pictureId   = await _pictureRepository.AddWithInt64EntityAsync(new Picture
            {
                CreatedById = request.UpdatedById,
                CreatedDate = request.CreatedDate,
                FileName    = request.Picture.FileName,
                MimeType    = request.Picture.ContentType,
                UpdatedById = request.UpdatedById,
                UpdatedDate = request.UpdatedDate,
                BinaryData  = pictureData,
                StatusId    = PictureStatus.Pending.GetCode()
            });

            var id = await _articlePictureRepository.AddWithInt64EntityAsync(new ArticlePicture()
            {
                ArticleId     = request.ArticleId,
                PictureId     = pictureId,
                PictureTypeId = (int)ArticlePictureType.Thumbnail
            });

            return(id);
        }
        public async Task <bool> UpdateStatusByArticleIdAsync(ArticlePictureModifyRequest request, PictureStatus pictureStatus)
        {
            await(from articlePicture in _articlePictureRepository.Get(x => x.ArticleId == request.ArticleId)
                  join picture in _pictureRepository.Table
                  on articlePicture.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(ArticlePictureModifyRequest request)
        {
            var pictureTypeId       = (int)ArticlePictureType.Thumbnail;
            var shouldRemovePicture = request.Picture.Id == 0 && string.IsNullOrEmpty(request.Picture.Base64Data);
            var shouldUpdatePicture = request.Picture.Id == 0 && !string.IsNullOrEmpty(request.Picture.Base64Data);

            // Remove Old thumbnail
            if (shouldRemovePicture || shouldUpdatePicture)
            {
                var articlePictures = _articlePictureRepository
                                      .Get(x => x.ArticleId == request.ArticleId && x.PictureTypeId == pictureTypeId);
                if (articlePictures.Any())
                {
                    var pictureIds = articlePictures.Select(x => x.PictureId).ToList();
                    await articlePictures.DeleteAsync();

                    await _pictureRepository.Get(x => x.Id.In(pictureIds))
                    .DeleteAsync();
                }
            }

            if (shouldUpdatePicture)
            {
                var base64Data  = ImageUtil.EncodeJavascriptBase64(request.Picture.Base64Data);
                var pictureData = Convert.FromBase64String(base64Data);
                var pictureId   = _pictureRepository.AddWithInt64Entity(new Picture()
                {
                    CreatedById = request.UpdatedById,
                    CreatedDate = request.CreatedDate,
                    FileName    = request.Picture.FileName,
                    MimeType    = request.Picture.ContentType,
                    UpdatedById = request.UpdatedById,
                    UpdatedDate = request.UpdatedDate,
                    BinaryData  = pictureData
                });

                _articlePictureRepository.Add(new ArticlePicture()
                {
                    ArticleId     = request.ArticleId,
                    PictureId     = pictureId,
                    PictureTypeId = pictureTypeId
                });
            }

            return(true);
        }