Beispiel #1
0
        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);
        }
Beispiel #2
0
        // 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);
        }