public async Task <IHttpActionResult> PostMark(Mark item) { item.UserId = LoggedUserId; Mark current = await InsertAsync(item); // Add a UserMarkExperience between the mark and it's creator to avoid notifying the user about it await context.InsertUserMarkExperience(LoggedUserId, current.Id); return(CreatedAtRoute("Tables", new { id = current.Id }, current)); }
// GET api/ClosestMark public async Task <Mark> Get(double?latitude, double?longitude) { Mark closestMark = null; if (latitude != null && longitude != null) { m_UserLatitude = latitude.Value; m_UserLongitude = longitude.Value; } try { int relevantCategoriesCode = context.GetUserRelevantCateogiresCode(LoggedUserId); IEnumerable <string> seenMarksIds = from userMarkExperiences in context.UserMarkExperiences where userMarkExperiences.UserId == LoggedUserId select userMarkExperiences.MarkId; IEnumerable <Mark> unseenRelevantMarks = from mark in context.Marks where (relevantCategoriesCode & mark.CategoriesCode) != 0 && !seenMarksIds.Contains(mark.Id) select mark; if (unseenRelevantMarks.Count() != 0) { closestMark = unseenRelevantMarks.OrderByDescending((mark) => distanceFromUserKm(mark)).Last(); double distanceFromClosestMark = distanceFromUserKm(closestMark); if (distanceFromClosestMark > 0.04) { // Closest mark is too far closestMark = null; } else { // Insert a UserMarkExperience to avoid notifying this user about this mark again await context.InsertUserMarkExperience(LoggedUserId, closestMark.Id); } } } catch (Exception e) { LogTools.LogException(e); } return(closestMark); }
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); }
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); }