Пример #1
0
        public AlbumReviewContract AddReview(int albumId, AlbumReviewContract contract)
        {
            PermissionContext.VerifyPermission(PermissionToken.CreateComments);

            return(HandleTransaction(ctx =>
            {
                AlbumReview review = null;

                if (contract.Id != 0)
                {
                    review = ctx.Load <AlbumReview>(contract.Id);
                    if (!review.Author.Equals(PermissionContext.LoggedUser))
                    {
                        PermissionContext.VerifyPermission(PermissionToken.DeleteComments);
                    }
                }
                else
                {
                    review = ctx.Query <AlbumReview>().FirstOrDefault(r => r.EntryForComment.Id == albumId && r.Author.Id == PermissionContext.LoggedUserId && r.LanguageCode == contract.LanguageCode);
                }

                // Create
                if (review == null || review.Deleted)
                {
                    var album = ctx.Load <Album>(albumId);
                    var agentLoginData = ctx.CreateAgentLoginData(PermissionContext);
                    review = new AlbumReview(album, contract.Text, agentLoginData, contract.Title, contract.LanguageCode);
                    album.AllReviews.Add(review);
                    ctx.Save(review);
                }
                else
                {                 // Update
                    review.LanguageCode = contract.LanguageCode;
                    review.Message = contract.Text;
                    review.Title = contract.Title;
                    ctx.Update(review);
                }

                ctx.AuditLogger.AuditLog($"submitted review for {_entryLinkFactory.CreateEntryLink(review.EntryForComment)}");

                return new AlbumReviewContract(review, _userIconFactory);
            }));
        }
Пример #2
0
        public AlbumReviewContract AddReview(int albumId, AlbumReviewContract contract)
        {
            PermissionContext.VerifyPermission(PermissionToken.CreateComments);

            return(HandleTransaction(ctx => {
                AlbumReview review = null;

                if (contract.Id != 0)
                {
                    review = ctx.Load <AlbumReview>(contract.Id);
                    if (!review.User.Equals(PermissionContext.LoggedUser))
                    {
                        PermissionContext.VerifyPermission(PermissionToken.DeleteComments);
                    }
                }
                else
                {
                    review = ctx.Query <AlbumReview>().FirstOrDefault(r => r.Album.Id == albumId && r.User.Id == PermissionContext.LoggedUserId && r.LanguageCode == contract.LanguageCode);
                }

                // Create
                if (review == null)
                {
                    var album = ctx.Load <Album>(albumId);
                    review = new AlbumReview(album, ctx.OfType <User>().GetLoggedUser(PermissionContext), contract.Title, contract.Text, contract.LanguageCode);
                    album.Reviews.Add(review);
                    ctx.Save(review);
                }
                else                     // Update
                {
                    review.LanguageCode = contract.LanguageCode;
                    review.Text = contract.Text;
                    review.Title = contract.Title;
                    ctx.Update(review);
                }

                ctx.AuditLogger.AuditLog(string.Format("submitted review for {0}", entryLinkFactory.CreateEntryLink(review.Album)));

                return new AlbumReviewContract(review, userIconFactory);
            }));
        }
Пример #3
0
 public AlbumReviewContract PostReview(int id, AlbumReviewContract reviewContract)
 {
     return(queries.AddReview(id, reviewContract));
 }
Пример #4
0
 public AlbumReviewContract PostReview(int id, AlbumReviewContract reviewContract) => _queries.AddReview(id, reviewContract);