public async Task <ApiResponse <PlataformOverviewDto> > SavePlataformOverview(PlataformOverviewSendDto plataformOverview) { var requestUrl = $"{_baseUrl}/{PlataformsUrl}"; var jsonContent = JsonConvert.SerializeObject(plataformOverview); var contentString = new StringContent(jsonContent, Encoding.UTF8, "application/json"); HttpResponseMessage response; try { var request = new HttpRequestMessage(HttpMethod.Post, requestUrl); request.Headers.Add("GameToken", _gameToken); request.Content = contentString; response = await HTTP_CLIENT.SendAsync(request); } catch (HttpRequestException httpRequestException) { Debug.LogWarning($"No internet connection!. Error: {httpRequestException}"); return(new ApiResponse <PlataformOverviewDto>()); } if (!response.IsSuccessStatusCode) { return(new ApiResponse <PlataformOverviewDto>()); } var stringResponse = response.Content.ReadAsStringAsync().Result; var apiResponse = JsonConvert.DeserializeObject <ApiResponse <PlataformOverviewDto> >(stringResponse); return(apiResponse); }
public async Task <DataManagerReponse <PlataformOverviewDto, PlataformOverviewSendDto> > SavePlataformOverview(PlataformOverviewSendDto plataform) { var response = new DataManagerReponse <PlataformOverviewDto, PlataformOverviewSendDto>(); LocalDataManager.Instance.SaveLocalData("PlataformOverview", plataform, Pacient.Loaded.Name); if (!ConfigurationManager.SendRemoteData || string.IsNullOrWhiteSpace(ConfigurationManager.GameApiToken)) { return(response); } var hasInternetConnection = await ApiClient.Instance.HasInternetConnection(); if (!hasInternetConnection) { LocalDataManager.Instance.SaveRemoteData("PlataformOverview", plataform, Pacient.Loaded.IdApi); response.LocalResponse = plataform; return(response); } response.ApiResponse = await ApiClient.Instance.SavePlataformOverview(plataform); return(response); }
private async void LogPlaySession() { //TODO: A responsabilidade do logger não é de bloquear e mostrar a tela de salvamento, porém o refatoramento a ser feito é muito grande... Deixa para depois GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(true); if (StageModel.Loaded.Id == Pacient.Loaded.UnlockedLevels) { if (scr.Result == GameResult.Success) { Pacient.Loaded.UnlockedLevels++; } else { if (scr.Score < scr.MaxScore * 0.3f) { Pacient.Loaded.UnlockedLevels--; } if (Pacient.Loaded.UnlockedLevels <= 0) { Pacient.Loaded.UnlockedLevels = 1; } } } Pacient.Loaded.PlaySessionsDone++; Pacient.Loaded.AccumulatedScore += scr.Score; var pacientSendDto = Pacient.MapToPacientSendDto(); var responsePacient = await DataManager.Instance.UpdatePacient(pacientSendDto); if (responsePacient.ApiResponse == null) { SysMessage.Info("Erro ao atualizar o paciente na nuvem!\n Os dados poderão ser enviados posteriormente."); } Debug.Log($"Deu update no Paciente"); var plataformOverviewSendDto = new PlataformOverviewSendDto { Duration = FindObjectOfType <StageManager>().Duration, Result = scr.Result, StageId = StageModel.Loaded.Id, Phase = StageModel.Loaded.Phase, Level = StageModel.Loaded.Level, RelaxTimeSpawned = spwn.RelaxTimeSpawned, Score = scr.Score, MaxScore = scr.MaxScore, ScoreRatio = scr.Score / scr.MaxScore, TargetsSpawned = spwn.TargetsSucceeded + spwn.TargetsFailed, TargetsSuccess = spwn.TargetsSucceeded, TargetsInsSuccess = spwn.TargetsInsSucceeded, TargetsExpSuccess = spwn.TargetsExpSucceeded, TargetsFails = spwn.TargetsFailed, TargetsInsFail = spwn.TargetsInsFailed, TargetsExpFail = spwn.TargetsExpFailed, ObstaclesSpawned = spwn.ObstaclesSucceeded + spwn.ObstaclesFailed, ObstaclesSuccess = spwn.ObstaclesSucceeded, ObstaclesInsSuccess = spwn.ObstaclesInsSucceeded, ObstaclesExpSuccess = spwn.ObstaclesExpSucceeded, ObstaclesFail = spwn.ObstaclesFailed, ObstaclesInsFail = spwn.ObstaclesInsFailed, ObstaclesExpFail = spwn.ObstaclesExpFailed, PlayerHp = plr.HeartPoins, PacientId = Pacient.Loaded.IdApi, PlayStart = recordStart, PlayFinish = recordStop, FlowDataDevices = new List <FlowDataDevice>() }; if (scp.IsConnected) // Se PITACO conectado { Debug.Log("PlatformLogger - Device: Pitaco."); plataformOverviewSendDto.FlowDataDevices.Add(_pitacoLogger.flowDataDevice); } else { if (scm.IsConnected) // Se MANO conectado { Debug.Log("PlatformLogger - Device: Mano."); plataformOverviewSendDto.FlowDataDevices.Add(_manoLogger.flowDataDevice); } else { if (scc.IsConnected) // Se CINTA conectada { Debug.Log("PlatformLogger - Device: Cinta."); plataformOverviewSendDto.FlowDataDevices.Add(_cintaLogger.flowDataDevice); } } } if (sco.IsConnected) // Se OXÍMETRO conectado { Debug.Log("PlatformLogger - Device: Oxímetro."); plataformOverviewSendDto.FlowDataDevices.Add(_oximetroLogger.flowDataDevice); } var plataformResponse = await DataManager.Instance.SavePlataformOverview(plataformOverviewSendDto); if (plataformResponse.ApiResponse == null) { SysMessage.Info("Erro ao salvar dados da plataforma na nuvem!\n Os dados poderão ser enviados posteriormente."); } GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(false); GameObject.Find("Canvas").transform.Find("Result Panel").gameObject.SetActive(true); }