Example #1
0
        public async Task <IActionResult> UpdateChallenge(int challengeRequestId, [FromBody] UpdateChallengeInputViewModel model)
        {
            try
            {
                var accessToken = HttpContext.Request.Headers["Authorization"].ToString().GetAccessTokenFromHeaderString();
                var userId      = await _identityService.GetUserId(accessToken);

                var challengeRequest = _challengeRequestService.Get(challengeRequestId);

                if (challengeRequest.ChallengerId != userId || challengeRequest.ChallengeRequestStatus != Enums.ChallengeRequestStatus.Waiting)
                {
                    return(BadRequest(_localizer.GetString("GameAlreadyStarted")));
                }

                var challengeRequestParams = _mapper.Map <ChallengeRequestParams>(challengeRequest);
                challengeRequestParams.ChallengeRequestStatus = model.ChallengeRequestAnswer;
                challengeRequestParams.AccessToken            = accessToken;

                challengeRequest = _challengeRequestService.CreateOrUpdate(challengeRequestParams);

                if (challengeRequest.ChallengeRequestStatus != Enums.ChallengeRequestStatus.Accepted)
                {
                    return(Ok(true));
                }

                var challengeParams = _mapper.Map <ChallengeParams>(challengeRequest.Challenge);
                challengeParams.ChallengerId = challengeRequest.ChallengerId;
                _challengeService.CreateOrUpdate(challengeParams);

                var isSuccess = await CreateGame(accessToken, challengeParams);

                if (!isSuccess)
                {
                    return(BadRequest(_localizer.GetString("UpdateChallengeException")));
                }
            }
            catch (UserNotAvailableException ex)
            {
                return(BadRequest(_localizer.GetString("GameAlreadyStarted")));
            }
            catch (Exception ex)
            {
                return(BadRequest(_localizer.GetString("UpdateChallengeException")));
            }

            return(Ok(true));
        }
Example #2
0
        public async Task SendUpdateChallengeRequest(string accessToken, int challengeRequestId, UpdateChallengeInputViewModel model)
        {
            var baseUrl = AppSettingsProvider.ChallengeBaseUrl;

            var api = AppSettingsProvider.UpdateChallenge.Replace("{challengeRequestId}", challengeRequestId.ToString());

            var messageBody = JsonConvert.SerializeObject(model);
            await _httpHandler.AuthPutAsync(accessToken, baseUrl, api, messageBody);
        }