public void test_fetching_purposes()
        {
            var service = new PurposesService(_gateway);

            var filter = new PurposesFilter
            {
                PageSize      = 10,
                PageNumber    = 1,
                EnabledFilter = true,
                //NameFilter = ""
            };

            var purposes = service.GetPurposes(filter);

            var newPurpose = new PurposeInfo
            {
                Name        = "My new purpose",
                Description = "My new purpose created via the Aplos API",
                IsEnabled   = true,
            };

            newPurpose.IncomeAccount.AccountNumber = 4000;
            newPurpose.Fund.Id = 173676;

            var postResult = service.PostPurpose(newPurpose);

            postResult.Data.Purpose.Name.Should().Be(newPurpose.Name);

            newPurpose.Name = "My renamed purpose";

            var putResult = service.PutPurpose(postResult.Data.Purpose.Id, newPurpose);

            putResult.Data.Purpose.Name.Should().Be(newPurpose.Name);

            var updatedPurpose = service.GetPurpose(putResult.Data.Purpose.Id);

            updatedPurpose.Data.Purpose.Name.Should().Be(newPurpose.Name);

            var deleteResult = service.DeletePurpose(postResult.Data.Purpose.Id);

            deleteResult.Message.Should().Contain(postResult.Data.Purpose.Id.ToString());

            var deletedPurpose = service.GetPurpose(putResult.Data.Purpose.Id);

            deletedPurpose.Data.Purpose.Should().BeNull();
            deletedPurpose.Meta.ResourceCount.Should().Be(0);
        }
        public PurposesResponse GetPurposes(PurposesFilter filter)
        {
            return(_gateway.Retrieve(client =>
            {
                var request = new RestRequest("purposes");

                request.ApplyPaging(filter);

                if (filter.EnabledFilter.HasValue)
                {
                    request.AddQueryParameter("f_enabled", filter.EnabledFilter.Value ? "y" : "n");
                }
                if (!string.IsNullOrWhiteSpace(filter.NameFilter))
                {
                    request.AddQueryParameter("f_name", filter.NameFilter);
                }

                return client.Get <PurposesResponse>(request);
            }));
        }