public override IQuestHandler.QuestState GetState()
        {
            ListSessionsRequest listSessionsRequest = new ListSessionsRequest();

            listSessionsRequest.StartTime = Quest.CreationDate.ToString();
            listSessionsRequest.EndTime   = Quest.ExpirationDate.ToString();
            ListSessionstResponse listSessionstResponse = GoogleFitService.ListSessions(_user, listSessionsRequest).GetAwaiter().GetResult();

            if (Quest.IsClaimed)
            {
                return(IQuestHandler.QuestState.Claimed);
            }
            else if (listSessionstResponse.Sessions.Count >= Quest.ProgressCount)
            {
                return(IQuestHandler.QuestState.Finished);
            }
            else if (Quest.ExpirationDate > DateTime.Now)
            {
                return(IQuestHandler.QuestState.InProgress);
            }
            else
            {
                return(IQuestHandler.QuestState.Failed);
            }
        }
Beispiel #2
0
        protected override void ExecuteRequest(HttpContext context)
        {
            (bool isOk, User user) = CheckClaimsForUser(Request, context, _userRepository);
            if (!isOk || user == null)
            {
                return;
            }

            ListSessionsRequest   listSessionsRequest   = new ListSessionsRequest();
            ListSessionstResponse listSessionstResponse = GoogleFitService.ListSessions(user, listSessionsRequest).GetAwaiter().GetResult();

            List <Session> sessions = listSessionstResponse.Sessions;


            List <GetSleepEntriesDTOResponse.SessionDTOResponse> sessionsReponseDTO = sessions.Select(
                session => new GetSleepEntriesDTOResponse.SessionDTOResponse(
                    session.Id,
                    session.Name,
                    session.Description,
                    session.StartTimeMillis,
                    session.EndTimeMillis,
                    session.ModifiedTimeMillis,
                    new GetSleepEntriesDTOResponse.SessionDTOResponse.AppliactionDTOResponse(
                        session.Application.PackageName,
                        session.Application.Version,
                        session.Application.DetailUrl,
                        session.Application.Name
                        ),
                    ((ActivityType)session.ActivityType).ToString(),
                    session.ActiveTimeMillis
                    )).ToList();

            GetSleepEntriesDTOResponse responseDTO = new GetSleepEntriesDTOResponse(sessionsReponseDTO);

            string questsJson = JsonSerializer.Serialize(responseDTO.Sessions);

            context.Response.StatusCode = StatusCodes.Status200OK;
            context.Response.WriteAsync(questsJson).GetAwaiter().GetResult();
        }