Esempio n. 1
0
 private void validateOwner(UserMarkExperience userMarkRating)
 {
     if (userMarkRating.UserId != LoggedUserId)
     {
         throw new HttpResponseException(HttpStatusCode.Unauthorized);
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }