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); })); }
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); })); }
public AlbumReviewContract PostReview(int id, AlbumReviewContract reviewContract) { return(queries.AddReview(id, reviewContract)); }
public AlbumReviewContract PostReview(int id, AlbumReviewContract reviewContract) => _queries.AddReview(id, reviewContract);