private void validateOwner(UserMarkExperience userMarkRating) { if (userMarkRating.UserId != LoggedUserId) { throw new HttpResponseException(HttpStatusCode.Unauthorized); } }
public async static Task <bool> InsertUserMarkExperience(this MobileServiceContext context, string userId, string markId) { bool updateWasSuccessful = false; using (DbContextTransaction transaction = context.Database.BeginTransaction()) { try { UserMarkExperience userMarkExperience = context.UserMarkExperiences.Create(); userMarkExperience.UserId = userId; userMarkExperience.MarkId = markId; userMarkExperience.HasUserRated = false; userMarkExperience.LastSeen = DateTime.Now; context.UserMarkExperiences.Add(userMarkExperience); await context.SaveChangesAsync(); transaction.Commit(); updateWasSuccessful = true; } catch (Exception ex) { LogTools.LogException(ex); transaction.Rollback(); throw ex; } } return(updateWasSuccessful); }
private async Task <bool> updateLastSeenTime(string markId) { bool updateWasSuccessful = false; using (DbContextTransaction transaction = context.Database.BeginTransaction()) { try { UserMarkExperience userMarkExperience = await context.UserMarkExperiences.FindAsync(LoggedUserId, markId); validateOwner(userMarkExperience); userMarkExperience.LastSeen = DateTime.Now; await context.SaveChangesAsync(); transaction.Commit(); updateWasSuccessful = true; } catch (Exception ex) { LogTools.LogException(ex); transaction.Rollback(); throw ex; } } return(updateWasSuccessful); }
public double?Get(string markId) { // Check parameters validity if (markId == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } UserMarkExperience userMarkExperience = context.UserMarkExperiences.Find(LoggedUserId, markId); if (userMarkExperience == null) { return(null); } else { return(userMarkExperience.UserRating); } }
public async Task <bool> Post(string markId, float?rating) { bool updateWasSuccessful = false; // Check parameters if (markId == null || rating == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } UserMarkExperience userMarkExperience = await context.UserMarkExperiences.FindAsync(LoggedUserId, markId); if (userMarkExperience == null) { await context.InsertUserMarkExperience(LoggedUserId, markId); } updateWasSuccessful = await updateMarkRating(markId, rating); return(updateWasSuccessful); }
private async Task <bool> updateMarkRating(string markId, float?rating) { bool updateWasSuccessful = false; using (DbContextTransaction transaction = context.Database.BeginTransaction()) { try { UserMarkExperience userMarkExperience = await context.UserMarkExperiences.FindAsync(LoggedUserId, markId); validateOwner(userMarkExperience); userMarkExperience.Mark.RatingsSum -= userMarkExperience.UserRating; userMarkExperience.Mark.RatingsSum += rating.Value; userMarkExperience.UserRating = rating.Value; userMarkExperience.LastSeen = DateTime.Now; if (!userMarkExperience.HasUserRated) { userMarkExperience.Mark.RatingsCount++; userMarkExperience.HasUserRated = true; } userMarkExperience.Mark.UpdateRating(); await context.SaveChangesAsync(); transaction.Commit(); updateWasSuccessful = true; } catch (Exception ex) { LogTools.LogException(ex); transaction.Rollback(); throw ex; } } return(updateWasSuccessful); }
public async Task <bool> Post(string markId) { bool updateWasSuccessful = false; if (markId == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } UserMarkExperience userMarkExperience = await context.UserMarkExperiences.FindAsync(LoggedUserId, markId); if (userMarkExperience == null) { updateWasSuccessful = await context.InsertUserMarkExperience(LoggedUserId, markId); } else { updateWasSuccessful = await updateLastSeenTime(markId); } return(updateWasSuccessful); }