Beispiel #1
0
        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()));
            }
        }