/// <summary> /// Add the resource with the key provided to the currently signed in user /// If globalResource is true, resource transferred will be global rather than for the game. /// </summary> /// <param name="key">Name of the resource being transferred</param> /// <param name="amount">The amount being transferred</param> /// <param name="onComplete">Callback which returns whether the transfer was a success and the current value of the resource that was transferred</param> /// <param name="globalResource">**Optional** Setting for if the resource is global rather than for this game. (default: false)</param> /// <remarks> /// If globalResource is true, resource transferred will be global rather than for the game. /// </remarks> public void Add(string key, long amount, Action <bool, long> onComplete, bool globalResource = false) { if (SUGARManager.UserSignedIn) { var request = new ResourceAddRequest { ActorId = SUGARManager.CurrentUser.Id, GameId = globalResource ? Platform.GlobalGameId : SUGARManager.GameId, Key = key, Quantity = amount }; SUGARManager.client.Resource.AddOrUpdateAsync(request, response => { UpdateResource(response); onComplete(true, GetFromCache(key, globalResource)); }, exception => { Debug.LogError($"Failed to add resources. {exception}"); GetFromServer( (getSuccess, getValues) => { onComplete(false, GetFromCache(key, globalResource)); }, new[] { key }, globalResource); }); } }
public void CanUpdateExisting() { var key = "Resource_CanUpdateExisting"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var resourceRequest = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, Key = key, Quantity = 100, GameId = game.Id }; var createdResource = Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequest); var createdQuantity = createdResource.Quantity; var updatedQuantity = createdQuantity + 9000; var resourceRequestUpdated = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, Key = createdResource.Key, Quantity = updatedQuantity, GameId = game.Id }; Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequestUpdated); var updatedResource = Fixture.SUGARClient.Resource.Get(createdResource.GameId, createdResource.ActorId, new[] { createdResource.Key }).Single(); Assert.Equal(createdQuantity + updatedQuantity, updatedResource.Quantity); }
public async Task <IResponseEntity> CreateAsync(ResourceAddRequest req) { var item = _mapper.Map <SysResourceEntity>(req); var result = await _sysResourceRepository.InsertAsync(item); //清除缓存 await _cache.RemoveByPatternAsync(CacheKeyTemplate.PermissionResourceList); return(ResponseEntity.Result(result != null && result?.Id != "")); }
public static EvaluationData ToModel(this ResourceAddRequest resourceContract) { return(new EvaluationData { ActorId = resourceContract.ActorId.Value, GameId = resourceContract.GameId.Value, Key = resourceContract.Key, Value = resourceContract.Quantity.ToString(), EvaluationDataType = EvaluationDataType.Long, Category = EvaluationDataCategory.Resource }); }
private ResourceResponse GiveResource(int gameId, int actorId, string key, int quantity) { var resourceRequest = new ResourceAddRequest { ActorId = actorId, GameId = gameId, Key = key, Quantity = quantity }; return(Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequest)); }
public void CannotCreateWithoutGameId() { var key = "Resource_CanCreateWithoutGameId"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var resourceRequest = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, Key = key, Quantity = 100 }; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequest)); }
public void CannotCreateWithoutActorId() { var key = "Resource_CannotCreateWithoutActorId"; Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var resourceRequest = new ResourceAddRequest { GameId = game.Id, Key = key, Quantity = 100 }; Assert.Throws <ClientHttpException>(() => Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequest)); }
public async Task <IActionResult> AddOrUpdate([FromBody] ResourceAddRequest resourceRequest) { if ((await _authorizationService.AuthorizeAsync(User, resourceRequest.ActorId, HttpContext.ScopeItems(ClaimScope.Group))).Succeeded || (await _authorizationService.AuthorizeAsync(User, resourceRequest.ActorId, HttpContext.ScopeItems(ClaimScope.User))).Succeeded || (await _authorizationService.AuthorizeAsync(User, resourceRequest.GameId, HttpContext.ScopeItems(ClaimScope.Game))).Succeeded) { var resource = _resourceController.CreateOrUpdate( resourceRequest.GameId.Value, resourceRequest.ActorId.Value, resourceRequest.Key, resourceRequest.Quantity.Value); var resourceContract = resource.ToResourceContract(); return(new ObjectResult(resourceContract)); } return(Forbid()); }
public void CanCreate() { var key = "Resource_CanCreate"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var resourceRequest = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key, Quantity = 100 }; var response = Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequest); Assert.Equal(resourceRequest.Key, response.Key); Assert.Equal(resourceRequest.Quantity, response.Quantity); }
public void CanGetResourceByMultipleKeys() { var key = "Resource_CanGetResourceByMultipleKeys"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var game = Helpers.GetGame(Fixture.SUGARClient.Game, key); var resourceRequestOne = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key + "1", Quantity = 100 }; var resourceRequestTwo = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key + "2", Quantity = 100 }; var resourceRequestThree = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, GameId = game.Id, Key = key + "3", Quantity = 100 }; Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequestOne); Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequestTwo); Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequestThree); var get = Fixture.SUGARClient.Resource.Get(game.Id, loggedInAccount.User.Id, new[] { resourceRequestOne.Key, resourceRequestTwo.Key, resourceRequestThree.Key }); Assert.Equal(3, get.Count()); foreach (var r in get) { Assert.Equal(100, r.Quantity); } }
public void CanGetGlobalResource() { var key = "Resource_CanGetResourceWithoutGameId"; var loggedInAccount = Helpers.CreateAndLoginGlobal(Fixture.SUGARClient, key); var resourceRequest = new ResourceAddRequest { ActorId = loggedInAccount.User.Id, GameId = Platform.GlobalGameId, Key = key, Quantity = 100 }; Fixture.SUGARClient.Resource.AddOrUpdate(resourceRequest); var get = Fixture.SUGARClient.Resource.Get(Platform.GlobalGameId, loggedInAccount.User.Id, new[] { key }); Assert.Equal(1, get.Count()); Assert.Equal(resourceRequest.Key, get.First().Key); Assert.Equal(resourceRequest.Quantity, get.First().Quantity); }
public IActionResult Resource(ResourceAddRequest request) { ValidateEntity <ResourceAddRequest>(request); Guid domainId = Guid.Parse(request.Domain); using (SqlConnection connection = new SqlConnection(Settings.Current.StorageSource)) { connection.Open(); using (SqlCommand command = new SqlCommand("Zesty_Resource_Add", connection)) { command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter() { ParameterName = "@url", Value = request.Url.Trim() }); command.Parameters.Add(new SqlParameter() { ParameterName = "@ParentId", Value = !string.IsNullOrEmpty(request.ParentId) ? Guid.Parse(request.ParentId) : (Object)DBNull.Value }); command.Parameters.Add(new SqlParameter() { ParameterName = "@isPublic", Value = request.IsPublic ? 1 : 0 }); command.Parameters.Add(new SqlParameter() { ParameterName = "@requireToken", Value = request.RequireToken ? 1 : 0 }); command.Parameters.Add(new SqlParameter() { ParameterName = "@order", Value = request.Order }); command.Parameters.Add(new SqlParameter() { ParameterName = "@label", Value = !string.IsNullOrEmpty(request.Label) ? request.Label.Trim() : (Object)DBNull.Value }); command.Parameters.Add(new SqlParameter() { ParameterName = "@title", Value = !string.IsNullOrEmpty(request.Title) ? request.Title.Trim() : (Object)DBNull.Value }); command.Parameters.Add(new SqlParameter() { ParameterName = "@image", Value = !string.IsNullOrEmpty(request.Image) ? request.Image.Trim() : (Object)DBNull.Value }); command.Parameters.Add(new SqlParameter() { ParameterName = "@type", Value = !string.IsNullOrEmpty(request.Type) ? request.Type.Trim() : (Object)DBNull.Value }); command.Parameters.Add(new SqlParameter() { ParameterName = "@domain", Value = domainId }); command.ExecuteNonQuery(); } } return(GetOutput()); }
public void AddOrUpdateAsync(ResourceAddRequest data, Action <ResourceResponse> onSuccess, Action <Exception> onError) { AsyncRequestController.EnqueueRequest(() => AddOrUpdate(data), onSuccess, onError); }
/// <summary> /// Create or Updates a Resource record. /// </summary> /// <param name="data"><see cref="ResourceAddRequest"/> object that holds the details of the new Resource.</param> /// <returns>A <see cref="ResourceResponse"/> containing the new Resource details.</returns> public ResourceResponse AddOrUpdate(ResourceAddRequest data) { var query = GetUriBuilder(ControllerPrefix).ToString(); return(Post <ResourceAddRequest, ResourceResponse>(query, data)); }
public async Task <IResponseEntity> Create(ResourceAddRequest req) { return(await _sysResourceService.CreateAsync(req)); }