Ejemplo n.º 1
0
        /// <summary>
        ///     Gets the attached mission sets.
        /// </summary>
        /// <param name="userId">The user id.</param>
        /// <returns>Task{IEnumerable{UserMissionSet}}.</returns>
        public async Task <IEnumerable <UserMissionSet> > GetActiveMissionSets(string userId)
        {
            var user = await _userRepository.GetUser(userId);

            if (!user.ActiveMissionSetIds.AnyValues())
            {
                return(null);
            }

            var activeSets =
                (await
                 _missionSetRepository.GetMissionSets(
                     new QueryOptions <MissionSet>
            {
                Filter =
                    ExpressionHelper.Expr((MissionSet x) => x.Id)
                    .In(user.ActiveMissionSetIds),
                Expand = new List <string> {
                    "Missions"
                }
            }));

            var setsMissions    = activeSets.SelectMany(attachedSet => attachedSet.Missions).Select(m => m.Mission).ToIList();
            var missionRequests =
                (await
                 _missionRequestRepository.GetMissionRequests(
                     new QueryOptions <MissionRequest> {
                Filter = mr => mr.UserId == userId
            })).Where(
                    missionRequest => setsMissions.Select(m => m.Id).Contains(missionRequest.MissionId)).ToIList();

            var activeUserSets = new List <UserMissionSet>();

            foreach (var missionSet in activeSets)
            {
                var userSet = new UserMissionSet {
                    Id = missionSet.Id, Name = missionSet.Name
                };
                var missions = new List <UserMission>();

                foreach (var mission in missionSet.Missions.OrderBy(m => m.Order).Select(m => m.Mission))
                {
                    var convertedMission = ConvertToUserMission(mission, user);
                    missions.Add(convertedMission);
                }
                userSet.Missions = missions;
                activeUserSets.Add(userSet);
            }

            SetDisplayStatuses(activeUserSets, user, missionRequests, setsMissions);

            return(activeUserSets.OrderBy(set => user.MissionSetIds.First(setId => setId.MissionSetId == set.Id).Order));
        }
Ejemplo n.º 2
0
        public async Task AssignMissionSetLine(User user)
        {
            var currrentAge    = DateTime.UtcNow.Year - user.DateOfBirth.Value.Year;// DateOfBirth should not be null
            var allMissionSets = (await _missionSetRepository.GetMissionSets(new QueryOptions <MissionSet>
            {
                Expand = new List <string> {
                    "PersonQualities", ""
                }
            })).Where(missionSet =>
                      (missionSet.AgeFrom <= currrentAge) &&
                      (missionSet.AgeTo >= currrentAge)).ToIList();                                                         //TODO move inside parent filter

            var missionSets =
                allMissionSets.Where(
                    missionSet =>
                    (missionSet.Id != GameConstants.MissionSet.FirstSetId) &&
                    (missionSet.Id != GameConstants.MissionSet.SecondSetId) &&
                    (missionSet.Id != GameConstants.MissionSet.ThirdSetId) &&
                    (missionSet.Id != GameConstants.MissionSet.LastSetId)).ToIList();

            var easySets    = missionSets.Where(set => GetEasySetCondition(set.PersonQualities, user)).Select(set => set.Id);
            var hardSets    = missionSets.Where(set => GetHardSetCondition(set.PersonQualities, user)).Select(set => set.Id);
            var neutralSets = missionSets.Where(set => !easySets.Contains(set.Id) && !hardSets.Contains(set.Id)).Select(set => set.Id);
            var tempList    = new List <string>();

            tempList.AddRange(easySets);
            tempList.AddRange(neutralSets);
            tempList.AddRange(hardSets);
            var finalList = GetSetIdsAfterDependenciesCheck(tempList, allMissionSets);

            var list = new List <MissionSetIdWithOrder>();

            for (var i = 0; i < finalList.Count; i++)
            {
                list.Add(new MissionSetIdWithOrder {
                    MissionSetId = finalList[i], Order = i
                });
            }

            user.MissionSetIds = list;
        }
Ejemplo n.º 3
0
 /// <summary>
 ///     Gets the MissionSets.
 /// </summary>
 /// <param name="options">The options.</param>
 /// <returns>Task{IEnumerable{MissionSet}}.</returns>
 public Task <List <MissionSet> > GetMissionSets(QueryOptions <MissionSet> options = null)
 {
     return(_missionSetRepository.GetMissionSets(options));
 }