public ServiceResult <List <OrderDTO> > ReceiptStatement(string startTime, string endTime, int pageIndex = 1, int pageSize = 20)
        {
            var result = new ServiceResult <List <OrderDTO> >();

            if (!ModelState.IsValid)
            {
                result.Code = ReasonCode.MISSING_REQUIRED_FIELDS;
                foreach (string error in ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage)))
                {
                    result.Message += error + Environment.NewLine;
                }

                return(result);
            }

            var accountId = this.GetMerchantAccountId();

            var component = new StatementComponent();

            if (!DateTime.TryParse(startTime, out DateTime dtStart))
            {
                result.Failer(ReasonCode.MISSING_REQUIRED_FIELDS, "");
                return(result);
            }
            if (!DateTime.TryParse(endTime, out DateTime dtEnd))
            {
                result.Failer(ReasonCode.MISSING_REQUIRED_FIELDS, "");
                return(result);
            }

            result.Data = component.ReceiptStatement(accountId, dtStart, dtEnd, pageIndex, pageSize);
            result.SuccessfulWithExtension(JsonConvert.SerializeObject(new { PageIndex = pageIndex, PageSize = pageSize, PageCount = result.Data.Count }));
            return(result);
        }
        public ServiceResult <string> ActualReceipt(string startTime, string endTime)
        {
            var result = new ServiceResult <string>();

            if (!ModelState.IsValid)
            {
                result.Code = ReasonCode.MISSING_REQUIRED_FIELDS;
                foreach (string error in ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage)))
                {
                    result.Message += error + Environment.NewLine;
                }

                return(result);
            }
            if (!DateTime.TryParse(startTime, out DateTime dtStart))
            {
                result.Failer(ReasonCode.MISSING_REQUIRED_FIELDS, "");
                return(result);
            }
            if (!DateTime.TryParse(endTime, out DateTime dtEnd))
            {
                result.Failer(ReasonCode.MISSING_REQUIRED_FIELDS, "");
                return(result);
            }

            var accountId = this.GetMerchantAccountId();

            var component = new StatementComponent();

            result.Data = component.ActualReceipt(accountId, dtStart, dtEnd);

            return(result);
        }
        public ServiceResult <List <MerchantTransferDTO> > TransferStatement(long walletId, int pageIndex = 1, int pageSize = 20)
        {
            var result    = new ServiceResult <List <MerchantTransferDTO> >();
            var component = new StatementComponent();

            result.Data = component.TransferStatement(this.GetMerchantAccountId(), walletId, pageIndex, pageSize);
            result.SuccessfulWithExtension(JsonConvert.SerializeObject(new { PageIndex = pageIndex, PageSize = pageSize, PageCount = result.Data.Count }));
            return(result);
        }
        public ServiceResult <List <MerchantDepositDTO> > DepositStatement(int pageIndex = 1, int pageSize = 20)
        {
            var result    = new ServiceResult <List <MerchantDepositDTO> >();
            var accountId = this.GetMerchantAccountId();

            var component = new StatementComponent();

            result.Data = component.DepositStatement(accountId, pageIndex, pageSize);
            result.SuccessfulWithExtension(JsonConvert.SerializeObject(new { PageIndex = pageIndex, PageSize = pageSize, PageCount = result.Data.Count }));
            return(result);
        }
        public ServiceResult <MerchantDepositDTO> DepositDetail(long depositId)
        {
            var result = new ServiceResult <MerchantDepositDTO>();

            var accountId = this.GetMerchantAccountId();

            var component = new StatementComponent();

            result.Data = component.DepositDetail(accountId, depositId);

            return(result);
        }
        public ServiceResult <MerchantWithdrawalDTO> WithdrawalDetail(long withdrawalId)
        {
            var result = new ServiceResult <MerchantWithdrawalDTO>();


            var accountId = this.GetMerchantAccountId();

            var component = new StatementComponent();

            result.Data = component.WithdrawalDetail(accountId, withdrawalId);

            return(result);
        }