public async Task<HttpResponseMessage> Compatible([FromUri] int userID) { var context = new RoomMeWebserviceContext(); User user = await context.Users.FindAsync(userID); if(user == null) { return Request.CreateResponse(HttpStatusCode.Forbidden, false); } Status correspondingStatus = Status.NeedsRoommateOnly; switch(user.Status) { case Status.NeedsRoommateOnly: correspondingStatus = Status.NeedsRoommateOnly; break; case Status.HasVacancy: correspondingStatus = Status.NeedsHousingAndRoommate; break; case Status.NeedsHousingAndRoommate: correspondingStatus = Status.HasVacancy; break; case Status.Inactive: correspondingStatus = Status.Inactive; break; } List<User> logicalUsers = new List<User>(); if(correspondingStatus != Status.Inactive) { logicalUsers = context.Users.Where(x => x.Status == correspondingStatus).ToList(); } else { logicalUsers = context.Users.Where(x => x.Status != Status.Inactive).ToList(); } logicalUsers.Remove(user); MatchService ms = new MatchService(); List<int> matchScores = new List<int>(); List<APIUser> logicalMinUsers = new List<APIUser>(); foreach(var u in logicalUsers) { logicalMinUsers.Add(u.ToAPIModel()); matchScores.Add(ms.GenerateMatchScoreByStatus(user, u)); } var response = new List<object> { logicalMinUsers, matchScores}; return Request.CreateResponse(HttpStatusCode.OK, response); }
// GET: api/Match/5 public async Task<HttpResponseMessage> Match([FromUri] int idA, [FromUri] int idB) { var context = new RoomMeWebserviceContext(); MatchService ms = new MatchService(); User a = context.Users.Find(idA); User b = context.Users.Find(idB); int score = ms.GenerateMatchScoreOfPreferences(a, b); return Request.CreateResponse(HttpStatusCode.OK, score); }