public async Task <IActionResult> ModifyPoetSuggestedPhotosAsync([FromBody] GanjoorPoetSuggestedPictureViewModel photo) { var res = await _poetPhotosService.ModifyPoetSuggestedPhotoAsync(photo); if (!string.IsNullOrEmpty(res.ExceptionString)) { return(BadRequest(res.ExceptionString)); } return(Ok(res.Result)); }
/// <summary> /// modify a suggested photo for poets /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <RServiceResult <bool> > ModifyPoetSuggestedPhotoAsync(GanjoorPoetSuggestedPictureViewModel model) { try { var dbModel = await _context.GanjoorPoetSuggestedPictures.Include(p => p.Picture).Where(s => s.Id == model.Id).SingleAsync(); bool publishIsChanged = model.Published != dbModel.Published; bool newlyChosenOne = model.ChosenOne && !dbModel.ChosenOne; if (newlyChosenOne) { dbModel.PicOrder = 1; } else { dbModel.PicOrder = model.PicOrder; } dbModel.Picture.Title = model.Title; dbModel.Picture.Description = model.Description; dbModel.ChosenOne = model.ChosenOne; dbModel.Published = model.Published; _context.Update(dbModel); if (newlyChosenOne) { var oldChosenOnes = await _context.GanjoorPoetSuggestedPictures.Where(p => p.Id != model.Id && p.PoetId == model.PoetId && p.ChosenOne == true).ToListAsync(); foreach (var photo in oldChosenOnes) { photo.ChosenOne = false; } _context.UpdateRange(oldChosenOnes); } await _context.SaveChangesAsync(); if (newlyChosenOne) { var others = await _context.GanjoorPoetSuggestedPictures.Where(p => p.Id != model.Id && p.PoetId == model.PoetId).ToListAsync(); foreach (var photo in others) { photo.PicOrder = photo.PicOrder + 1; } if (others.Count > 0) { _context.UpdateRange(others); await _context.SaveChangesAsync(); } } if (publishIsChanged && model.Published && dbModel.SuggestedById != null) { var userRes = await _appUserService.GetUserInformation((Guid)dbModel.SuggestedById); var poet = await _context.GanjoorPoets.AsNoTracking().Where(p => p.Id == dbModel.PoetId).SingleAsync(); await _notificationService.PushNotification((Guid)dbModel.SuggestedById, $"انتشار تصویر پیشنهادی شما برای {poet.Nickname}", $"با سپاس! پیشنهاد شما برای تصویر {poet.Nickname} در فهرست تصاویر قابل انتخاب برای شاعر قابل مشاهده است." ); } if (newlyChosenOne && dbModel.SuggestedById != null) { var userRes = await _appUserService.GetUserInformation((Guid)dbModel.SuggestedById); var poet = await _context.GanjoorPoets.AsNoTracking().Where(p => p.Id == dbModel.PoetId).SingleAsync(); await _notificationService.PushNotification((Guid)dbModel.SuggestedById, $"انتخاب تصویر پیشنهادی شما برای {poet.Nickname} به عنوان تصویر اصلی در گنجور", $"با سپاس! پیشنهاد شما برای تصویر {poet.Nickname} هماکنون تصویر اصلی او در گنجور است." ); } return(new RServiceResult <bool>(true)); } catch (Exception exp) { return(new RServiceResult <bool>(false, exp.ToString())); } }