예제 #1
0
        public ServiceResult <string> EditNews(NewsEditDto model)
        {
            var serviceResult = new ServiceResult <string>(true);

            var entity = _context.News.FirstOrDefault(c => c.Id == model.Id);

            if (entity == null)
            {
                serviceResult.AddError("خبری با شناسه ارسالی یافت نشد");
            }

            #region validation
            if (string.IsNullOrEmpty(model.Title))
            {
                serviceResult.AddError("عنوان خبر نمی تواند فاقد مقدار باشد");
            }
            if (!string.IsNullOrEmpty(model.Title) && model.Title.Length > 128)
            {
                serviceResult.AddError("تعداد کاراکترهای عنوان خبر نمی تواند بیش از 128 کاراکتر باشد".ToPersianNumbers());
            }
            if (!model.Type.HasValue)
            {
                serviceResult.AddError("نوع خبر نمی تواند فاقد مقدار باشد");
            }
            #endregion

            if (serviceResult.IsSuccess)
            {
                entity.Title = model.Title;
                entity.Type  = model.Type.Value;

                if (!string.IsNullOrEmpty(model.PrimaryPicture))
                {
                    serviceResult.Data    = entity.PrimaryPicture;
                    entity.PrimaryPicture = model.PrimaryPicture;
                }


                entity.Description = model.Description;

                _context.Entry(entity).State = EntityState.Modified;
                if (_context.SaveChanges() == 0)
                {
                    serviceResult.AddError("در انجام عملیات خطایی رخ داد");
                }
            }

            return(serviceResult);
        }
예제 #2
0
        public async Task UpdateNews(int id, NewsEditDto newsDto)
        {
            var newsToUpdate = await _unitOfWork.Repository <News>().GetAll()
                               .Include(e => e.UploadedContentImages)
                               .SingleOrDefaultAsync(n => n.Id == id);

            if (newsToUpdate == null)
            {
                throw new NotFoundException($"News with id {id} not found!");
            }

            var user = await _authenticateService.GetAuthUser();

            newsToUpdate.UpdatedById = user.Id;
            newsToUpdate.Title       = newsDto.Title;
            newsToUpdate.Text        = newsDto.Text;

            //update main image if need
            if (newsDto.NewMainImage != null)
            {
                //await DeleteImageFile(newsToUpdate.MainImageUrl);
                newsToUpdate.MainImageUrl = (await UploadImage(newsDto.NewMainImage)).Url;
            }

            //delete doesn't used images
            foreach (var uploadedImage in newsToUpdate.UploadedContentImages)
            {
                if (!newsDto.NotDeletedContentImageUrls.Contains(uploadedImage.Url))
                {
                    await DeleteImage(uploadedImage);
                }
            }

            //upload new images
            foreach (var image in newsDto.AddedContentImages)
            {
                newsToUpdate.UploadedContentImages.Add(await UploadImage(image));
            }

            _unitOfWork.Repository <News>().Update(newsToUpdate);
            await _unitOfWork.SaveChangesAsync();
        }