/// <summary> /// Creates the approriate response model based on the result of assigning the achievement /// </summary> /// <param name="assignAchievementResult">The result of the achievement assigning</param> /// <returns>MobileAppScanResultModel</returns> private MobileAppScanResultModel GetAssignResultModel(JPPConstants.AssignAchievementResult assignAchievementResult) { switch (assignAchievementResult) { case JPPConstants.AssignAchievementResult.Success: return(new MobileAppScanResultModel() { Success = true, Message = "Achievement Successfully Assigned", Code = 0 }); case JPPConstants.AssignAchievementResult.SuccessNoCard: return(new MobileAppScanResultModel() { Success = true, Message = "Achievement Successfully Assigned, Pick Up Card Elsewhere", Code = 0 }); case JPPConstants.AssignAchievementResult.SuccessYesCard: return(new MobileAppScanResultModel() { Success = true, Message = "Achievement Successfully Assigned, Give Card", Code = 0 }); case JPPConstants.AssignAchievementResult.SuccessRepetition: return(new MobileAppScanResultModel() { Success = true, Message = "Repetition Success", Code = 0 }); case JPPConstants.AssignAchievementResult.SuccessThresholdTriggered: return(new MobileAppScanResultModel() { Success = true, Message = "Achievement Successfully Assigned, Threshold Unlocked", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureInvalidAchievement: return(new MobileAppScanResultModel() { Success = false, Message = "Achievement Invalid", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureInvalidPlayer: return(new MobileAppScanResultModel() { Success = false, Message = "Player Invalid", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureUnauthorizedPlayer: return(new MobileAppScanResultModel() { Success = false, Message = "Player Unauthorized", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureInvalidAssigner: return(new MobileAppScanResultModel() { Success = false, Message = "Assigner Invalid", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureUnauthorizedAssigner: return(new MobileAppScanResultModel() { Success = false, Message = "Assigner Unauthorized", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureAlreadyAchieved: return(new MobileAppScanResultModel() { Success = false, Message = "Player already has this achievement", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureRepetitionDelay: return(new MobileAppScanResultModel() { Success = false, Message = "Player needs to wait longer to get this achievement again", Code = 0 }); case JPPConstants.AssignAchievementResult.FailureOther: return(new MobileAppScanResultModel() { Success = false, Message = "Failure Other", Code = 0 }); } return(null); }
public JsonResult ReportScan(int aID, bool hasCardToGive, string timeScanned, string token, int userID, string authHash) { /*---------------------------------Token Validation Begin-----------------------------------*/ #region Validate the Token //Get the current token UnitOfWork work = new UnitOfWork(); external_token currentToken = work.SystemRepository.GetAuthorizationToken(token); //Invalid token if (currentToken == null) { return(Json(new MobileAppTokenErrorModel() { Success = false, Message = GetTokenValidationResultMessage(TokenValidationResult.FailureInvalid) })); } //Expired token if (DateTime.Now.CompareTo(currentToken.expiration_date) > 0) { return(Json(new MobileAppTokenErrorModel() { Success = false, Message = GetTokenValidationResultMessage(TokenValidationResult.FailureExpired) })); } //Make sure the date passed in is valid DateTime dt = DateTime.Now; if (!DateTime.TryParse(timeScanned, out dt)) { return(Json(new MobileAppScanResultModel() { Success = false, Message = "DateTime was invalid", Code = 11 })); } //Build the string to be hashed string salt = currentToken.refresh_token; String paramString = ""; paramString += "aID=" + aID + "&hasCardToGive=" + hasCardToGive.ToString().ToLower() + "&timeScanned=" + timeScanned + "&token=" + token + "&userID=" + userID; string stringToHash = salt + "?" + paramString; //Invalid hash if (!ValidateHash(stringToHash, authHash)) { return(Json(new MobileAppTokenErrorModel() { Success = false, Message = GetTokenValidationResultMessage(TokenValidationResult.FailureExpired) })); } #endregion /*----------------------------------Token Validation End------------------------------------*/ //Default AchievementResult is falilure JPPConstants.AssignAchievementResult assignAchievementResult = JPPConstants.AssignAchievementResult.FailureOther; //Assign the achievement and get the result assignAchievementResult = work.AchievementRepository.AssignAchievement(userID, aID, currentToken.user_id, true, dt, hasCardToGive); //Create the response model MobileAppScanResultModel response = GetAssignResultModel(assignAchievementResult); //Return return(Json(response)); }