// TODO Permissions

        public string GetById(Guid id)
        {
            var transferSettings = _paymentQueries.GetTransferSettings(id);
            var obj = new
            {
                Brand = new
                {
                    transferSettings.Brand.Id,
                    transferSettings.Brand.Name,
                    Licensee = new
                    {
                        id = transferSettings.Brand.LicenseeId
                    }
                },
                TransferType = LabelHelper.LabelTransferType(transferSettings.TransferType),
                transferSettings.CurrencyCode,
                VipLevel = _paymentQueries.GetVipLevel(transferSettings.VipLevelId).Name,
                Wallet   = _brandQueries.GetWalletTemplate(new Guid(transferSettings.WalletId)).Name,
                transferSettings.MinAmountPerTransaction,
                transferSettings.MaxAmountPerTransaction,
                transferSettings.MaxAmountPerDay,
                transferSettings.MaxTransactionPerDay,
                transferSettings.MaxTransactionPerWeek,
                transferSettings.MaxTransactionPerMonth,
            };

            return(SerializeJson(obj));
        }
        public object List(SearchPackage searchPackage)
        {
            var brandFilterSelections = _adminQueries.GetBrandFilterSelections();

            var transferSettings = _paymentQueries.GetTransferSettings()
                                   .Where(x => brandFilterSelections.Contains(x.BrandId));

            var dataBuilder = new SearchPackageDataBuilder <TransferSettings>(searchPackage, transferSettings);

            dataBuilder
            .SetFilterRule(x => x.Brand, value => p => p.Brand.Id == new Guid(value))
            .Map(level => level.Id,
                 obj =>
                 new[]
            {
                obj.Brand.LicenseeName,
                obj.Brand.Name,
                LabelHelper.LabelTransferType(obj.TransferType),
                obj.VipLevel.Name,
                obj.CurrencyCode,
                _brandQueries.GetWalletTemplate(new Guid(obj.WalletId)).Name,
                LabelHelper.LabelStatus(obj.Enabled),
                obj.MinAmountPerTransaction.ToString(CultureInfo.InvariantCulture),
                obj.MaxAmountPerTransaction.ToString(CultureInfo.InvariantCulture),
                obj.MaxAmountPerDay.ToString(CultureInfo.InvariantCulture),
                obj.MaxTransactionPerDay.ToString(CultureInfo.InvariantCulture),
                obj.MaxTransactionPerWeek.ToString(CultureInfo.InvariantCulture),
                obj.MaxTransactionPerMonth.ToString(CultureInfo.InvariantCulture),
                obj.CreatedBy,
                Format.FormatDate(obj.CreatedDate, false),
                obj.UpdatedBy,
                Format.FormatDate(obj.UpdatedDate, false),
                obj.EnabledBy,
                Format.FormatDate(obj.EnabledDate, false),
                obj.DisabledBy,
                Format.FormatDate(obj.DisabledDate, false),
                obj.Enabled.ToString()
            }
                 );
            var data = dataBuilder.GetPageData(level => level.Brand.Name);

            return(new JsonResult {
                Data = data, MaxJsonLength = int.MaxValue, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }