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