Disallow accepting already completed contracts

This commit is contained in:
Yury
2025-03-31 01:32:15 +03:00
parent 2fb730cb8c
commit b3c5fa3e2b
2 changed files with 14 additions and 2 deletions
@@ -55,7 +55,7 @@ public class ActivateContract : ICloudScriptFunction<FYActivateContractRequest,
throw new CloudScriptException("CloudScript was not called within a http request");
}
var userId = context.User.FindAuthUserId();
var userData = await _userDataService.FindAsync(userId, userId, new List<string>{"ContractsActive"});
var userData = await _userDataService.FindAsync(userId, userId, new List<string>{"ContractsActive", "ContractsOneTimeCompleted"});
var titleData = _titleDataService.Find(new List<string>{"Contracts"});
var contracts = JsonSerializer.Deserialize<Dictionary<string, TitleDataContractInfo>>(titleData["Contracts"]);
@@ -67,6 +67,15 @@ public class ActivateContract : ICloudScriptFunction<FYActivateContractRequest,
Status = 3 // EYActivateContractRequestStatus::FAILED_GETTING_STATIC_DATA
};
}
var contractsCompleted = JsonSerializer.Deserialize<FYGetCompletedContractsResult>(userData["ContractsOneTimeCompleted"].Value);
if (contractsCompleted.ContractsIDs.Contains(request.ContractID)) {
return new FYActivateContractResult
{
UserID = userId,
Error = "Contract is already completed",
Status = 1 // EYActivateContractRequestStatus::CONTRACT_OF_THIS_FACTION_IS_ALREADY_ACTIVE
};
}
// TODO: Contract unlock criteria
var progress = new int[contract.Objectives.Length];