public string UpdateUserSleepSegmentsStats(UserSleepSegmentsStatsRecord record) { var userIdParameter = new Parameter(UserIdKey, record.userId); var json = JsonConvert.SerializeObject(record); var dataParameter = new Parameter("data", json); return(CallAzureDatabase("UpdateUserSleepSegmentsStats", userIdParameter, dataParameter)); }
public static void updateSegmentSummaryTableFromDB(UserSleepSegmentsStatsRecord record) { SegmentSummaryTable.userID = record.userId; SegmentSummaryTable.lastUpdated = record.lastUpdated; SegmentSummaryTable.Awake.countTimes = record.awakeCountTimes; SegmentSummaryTable.Awake.totalDuration = record.awakeTotalDuration; SegmentSummaryTable.Awake.timesToAwake = record.awakeToAwakeCount; SegmentSummaryTable.Awake.timesToSnooze = record.awakeToSnoozeCount; SegmentSummaryTable.Awake.timesToDoze = record.awakeToDozeCount; SegmentSummaryTable.Awake.timesToRestlessSleep = record.awakeToRestlessSleepCount; SegmentSummaryTable.Awake.timesToRestfulSleep = record.awakeToRestfulSleepCount; SegmentSummaryTable.Awake.timesToREM = record.awakeToREMCount; SegmentSummaryTable.Snooze.countTimes = record.snoozeCountTimes; SegmentSummaryTable.Snooze.totalDuration = record.snoozeTotalDuration; SegmentSummaryTable.Snooze.timesToAwake = record.snoozeToAwakeCount; SegmentSummaryTable.Snooze.timesToSnooze = record.snoozeToSnoozeCount; SegmentSummaryTable.Snooze.timesToDoze = record.snoozeToDozeCount; SegmentSummaryTable.Snooze.timesToRestlessSleep = record.snoozeToRestlessSleepCount; SegmentSummaryTable.Snooze.timesToRestfulSleep = record.snoozeToRestfulSleepCount; SegmentSummaryTable.Snooze.timesToREM = record.snoozeToREMCount; SegmentSummaryTable.Doze.countTimes = record.dozeCountTimes; SegmentSummaryTable.Doze.totalDuration = record.dozeTotalDuration; SegmentSummaryTable.Doze.timesToAwake = record.dozeToAwakeCount; SegmentSummaryTable.Doze.timesToSnooze = record.dozeToSnoozeCount; SegmentSummaryTable.Doze.timesToDoze = record.dozeToDozeCount; SegmentSummaryTable.Doze.timesToRestlessSleep = record.dozeToRestlessSleepCount; SegmentSummaryTable.Doze.timesToRestfulSleep = record.dozeToRestfulSleepCount; SegmentSummaryTable.Doze.timesToREM = record.dozeToREMCount; SegmentSummaryTable.RestlessSleep.countTimes = record.restlessSleepCountTimes; SegmentSummaryTable.RestlessSleep.totalDuration = record.restlessSleepTotalDuration; SegmentSummaryTable.RestlessSleep.timesToAwake = record.restlessSleepToAwakeCount; SegmentSummaryTable.RestlessSleep.timesToSnooze = record.restlessSleepToSnoozeCount; SegmentSummaryTable.RestlessSleep.timesToDoze = record.restlessSleepToDozeCount; SegmentSummaryTable.RestlessSleep.timesToRestlessSleep = record.restlessSleepToRestlessSleepCount; SegmentSummaryTable.RestlessSleep.timesToRestfulSleep = record.restlessSleepToRestfulSleepCount; SegmentSummaryTable.RestlessSleep.timesToREM = record.restlessSleepToREMCount; SegmentSummaryTable.RestfulSleep.countTimes = record.restfulSleepCountTimes; SegmentSummaryTable.RestfulSleep.totalDuration = record.restfulSleepTotalDuration; SegmentSummaryTable.RestfulSleep.timesToAwake = record.restfulSleepToAwakeCount; SegmentSummaryTable.RestfulSleep.timesToSnooze = record.restfulSleepToSnoozeCount; SegmentSummaryTable.RestfulSleep.timesToDoze = record.restfulSleepToDozeCount; SegmentSummaryTable.RestfulSleep.timesToRestlessSleep = record.restfulSleepToRestlessSleepCount; SegmentSummaryTable.RestfulSleep.timesToRestfulSleep = record.restfulSleepToRestfulSleepCount; SegmentSummaryTable.RestfulSleep.timesToREM = record.restfulSleepToREMCount; SegmentSummaryTable.REMSleep.countTimes = record.REMSleepCountTimes; SegmentSummaryTable.REMSleep.totalDuration = record.REMSleepTotalDuration; SegmentSummaryTable.REMSleep.timesToAwake = record.REMSleepToAwakeCount; SegmentSummaryTable.REMSleep.timesToSnooze = record.REMSleepToSnoozeCount; SegmentSummaryTable.REMSleep.timesToDoze = record.REMSleepToDozeCount; SegmentSummaryTable.REMSleep.timesToRestlessSleep = record.REMSleepToRestlessSleepCount; SegmentSummaryTable.REMSleep.timesToRestfulSleep = record.REMSleepToRestfulSleepCount; SegmentSummaryTable.REMSleep.timesToREM = record.REMSleepToREMCount; }
public List <int> GetUserSleepSegmentsStatsList(string userId) { var userIdParameter = new Parameter(UserIdKey, userId); var result = CallAzureDatabase("GetUserSleepSegmentsStats", userIdParameter); if (result == null) { return(null); } UserSleepSegmentsStatsRecord record = JsonConvert.DeserializeObject <UserSleepSegmentsStatsRecord>(result); List <int> averages = new List <int>(); averages.Add(record.awakeCountTimes); averages.Add(record.awakeTotalDuration); averages.Add(record.awakeToAwakeCount); averages.Add(record.awakeToSnoozeCount); averages.Add(record.awakeToDozeCount); averages.Add(record.awakeToRestlessSleepCount); averages.Add(record.awakeToRestfulSleepCount); averages.Add(record.awakeToREMCount); averages.Add(record.snoozeCountTimes); averages.Add(record.snoozeTotalDuration); averages.Add(record.snoozeToAwakeCount); averages.Add(record.snoozeToSnoozeCount); averages.Add(record.snoozeToDozeCount); averages.Add(record.snoozeToRestlessSleepCount); averages.Add(record.snoozeToRestfulSleepCount); averages.Add(record.snoozeToREMCount); averages.Add(record.dozeCountTimes); averages.Add(record.dozeTotalDuration); averages.Add(record.dozeToAwakeCount); averages.Add(record.dozeToSnoozeCount); averages.Add(record.dozeToDozeCount); averages.Add(record.dozeToRestlessSleepCount); averages.Add(record.dozeToRestfulSleepCount); averages.Add(record.dozeToREMCount); averages.Add(record.restlessSleepCountTimes); averages.Add(record.restlessSleepTotalDuration); averages.Add(record.restlessSleepToAwakeCount); averages.Add(record.restlessSleepToSnoozeCount); averages.Add(record.restlessSleepToDozeCount); averages.Add(record.restlessSleepToRestlessSleepCount); averages.Add(record.restlessSleepToRestfulSleepCount); averages.Add(record.restlessSleepToREMCount); averages.Add(record.restfulSleepCountTimes); averages.Add(record.restfulSleepTotalDuration); averages.Add(record.restfulSleepToAwakeCount); averages.Add(record.restfulSleepToSnoozeCount); averages.Add(record.restfulSleepToDozeCount); averages.Add(record.restfulSleepToRestlessSleepCount); averages.Add(record.restfulSleepToRestfulSleepCount); averages.Add(record.restfulSleepToREMCount); averages.Add(record.REMSleepCountTimes); averages.Add(record.REMSleepTotalDuration); averages.Add(record.REMSleepToAwakeCount); averages.Add(record.REMSleepToSnoozeCount); averages.Add(record.REMSleepToDozeCount); averages.Add(record.REMSleepToRestlessSleepCount); averages.Add(record.REMSleepToRestfulSleepCount); averages.Add(record.REMSleepToREMCount); return(averages); }
private async Task GettingTokken(object sender, EventArgs e) { await Navigation.PushAsync(new ConnectingPage()); //todo - show connecting gif //create URL to send UriBuilder uri = new UriBuilder("https://login.live.com/oauth20_token.srf"); var query = new StringBuilder(); uri.Query = query.ToString(); //creating POST URL+body in application/x-www-form-urlencoded format var httpClient = new HttpClient(); httpClient.BaseAddress = uri.Uri; String urlParameters = "client_id=" + client_id + "&redirect_uri=" + redirect_uri + "&code=" + response_code + "&grant_type=authorization_code"; StringContent bodyParam = new StringContent(urlParameters, Encoding.UTF8, "application/x-www-form-urlencoded"); //waiting to response var response = await httpClient.PostAsync(uri.Uri, bodyParam); //converting the response to JSON format var stringResponse = response.Content.ReadAsStringAsync().Result; var jsonResponse = JObject.Parse(stringResponse); //reading JSON response and updating credentials LiveIdCredentials.AccessToken = (string)jsonResponse["access_token"]; LiveIdCredentials.ExpiresIn = (long)jsonResponse["expires_in"]; LiveIdCredentials.RefreshToken = (string)jsonResponse["refresh_token"]; Console.WriteLine(LiveIdCredentials.RefreshToken); string error = (string)jsonResponse["error"]; await Utils.GetUserProfile(sender, e); await Utils.GetUserId(sender, e); await Utils.getSleepStatsOfUser(sender, e); /* checking if the userId is already in the ManageUsers table in the database. * If not (in case it's a new user), add the user to 2 tables: * 1. ManageUsers * 2. UserDetails */ UserDetailsRecord userDetails = new UserDetailsRecord(LiveIdCredentials.userId, LiveIdCredentials.firstName, LiveIdCredentials.lastName, LiveIdCredentials.gender, Utils.calculateUserAge(), LiveIdCredentials.height, LiveIdCredentials.weight); bool userInDB = dbUtils.assertUserInDB(LiveIdCredentials.userId); if (!userInDB) { UserRecord user = new UserRecord(LiveIdCredentials.userId, DateTime.Now); dbUtils.addUserToDB(user, userDetails); } else { dbUtils.addUserToUserDetailsTable(userDetails); } /* after each sign in, update the SleepQuality table in the database */ UserSleepQualityRecord userSleepQuality = new UserSleepQualityRecord(LiveIdCredentials.userId, LiveIdCredentials.mean_num_of_wakeups, LiveIdCredentials.mean_sleep_efficience); dbUtils.updateUserSleepQualityDetails(userSleepQuality); /* after each sign in, update the SleepSegmentsStats table in the database */ SegmentSummaryTable.Awake = new SegmentSummary(); SegmentSummaryTable.Doze = new SegmentSummary(); SegmentSummaryTable.Snooze = new SegmentSummary(); SegmentSummaryTable.RestlessSleep = new SegmentSummary(); SegmentSummaryTable.RestfulSleep = new SegmentSummary(); SegmentSummaryTable.REMSleep = new SegmentSummary(); SleepSegmentsStatsRepository repo = new SleepSegmentsStatsRepository(); string UserId = LiveIdCredentials.userId; DateTime last_updated_time_of_segments_stats = new DateTime(1990, 1, 1); UserSleepSegmentsStatsRecord SleepSegmentsStatsRecord = repo.GetUserSleepSegmentsStats(UserId); if (SleepSegmentsStatsRecord == null) //there is no data exists on the user in SleepSegmentsStats table { await Utils.getSleepSegmentsStats(sender, e, last_updated_time_of_segments_stats); //bool saveSuccess = handleUserSleepSegmentsData(repo, UserId, 0); //insert user row to table bool saveSuccess = Utils.handleUserSleepSegmentsData(repo, UserId, 0); //insert user row to table if (!saveSuccess) { } //error } else { last_updated_time_of_segments_stats = SleepSegmentsStatsRecord.lastUpdated; //updateSegmentSummaryTableFromDB(SleepSegmentsStatsRecord); // update SegmentSummaryTable object from DB data Utils.updateSegmentSummaryTableFromDB(SleepSegmentsStatsRecord); // update SegmentSummaryTable object from DB data await Utils.getSleepSegmentsStats(sender, e, last_updated_time_of_segments_stats); //bool updateSuccess = handleUserSleepSegmentsData(repo, UserId, 1); //update user row in table bool updateSuccess = Utils.handleUserSleepSegmentsData(repo, UserId, 1); //update user row in table if (!updateSuccess) { } //error } /* update segment summary table by user seniority in eSleeping and avg of other same users */ float seniority = SegmentSummaryTable.getUserSeniority(); TimeSpan ageTime = DateTime.Now.Subtract(LiveIdCredentials.birthdate); int age = ageTime.Days / 365; List <int> weightedSleepSegmentsStats = dbUtils.defineUserSegmentsTransitionsProbabilitiesCombined(LiveIdCredentials.userId, age, LiveIdCredentials.height, LiveIdCredentials.weight, LiveIdCredentials.gender, seniority); SegmentSummaryTable.updateTableByList(weightedSleepSegmentsStats); /* updating needed values for the Statistics Pages */ var sleepQualityRepo = new SleepQualityRepository(); var quality = sleepQualityRepo.checkUserSleepQualityForHisAge(LiveIdCredentials.userId, Utils.calculateUserAge()); StatisticsPage.sleepEffAge = (int)quality.Item1; StatisticsPage.wakeUpAge = (int)quality.Item2; StatisticsPage.userSleepQualityForHisAgeGraphValue = sleepQualityRepo.calculateQualityLevel((int)quality.Item1, (int)quality.Item2); quality = sleepQualityRepo.checkUserSleepQualityForHisGender(LiveIdCredentials.userId, LiveIdCredentials.gender); StatisticsPage.sleepEffGender = (int)quality.Item1; StatisticsPage.wakeUpGender = (int)quality.Item2; StatisticsPage.userSleepQualityForHisGenderGraphValue = sleepQualityRepo.calculateQualityLevel((int)quality.Item1, (int)quality.Item2); quality = sleepQualityRepo.checkUserSleepQualityForHisGenderAndAge(LiveIdCredentials.userId, Utils.calculateUserAge(), LiveIdCredentials.gender); StatisticsPage.userStressLevelGraphValue = (int)quality.Item1; /* done updating needed values for the Statistics Pages */ await Navigation.PushAsync(new MainPage()); //back to main startRefreshing(sender, e); //refreshing tokken }