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); }
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(); }