コード例 #1
0
ファイル: IPagingParam.cs プロジェクト: ttkkhhrr/react-sample
        /// <summary>
        /// SELECT開始行を取得する。
        /// </summary>
        /// <param name="cond"></param>
        /// <returns></returns>
        public static int GetStartRow(this IPagingParam cond)
        {
            //int result = (cond.CurrentPage.Value - 1) * cond.RowCount.Value; //検索開始位置;
            //1ページ目は0で来る想定。
            int result = (cond.CurrentPage.Value) * cond.RowCount.Value; //検索開始位置;

            return(result);
        }
コード例 #2
0
ファイル: IPagingParam.cs プロジェクト: ttkkhhrr/react-sample
        /// <summary>
        /// ページ内の表示終了位置を取得する。
        /// </summary>
        /// <param name="cond"></param>
        /// <param name="startCount"></param>
        /// <returns></returns>
        public static int CulcEndCount(this IPagingParam cond, int startCount)
        {
            int?endCount = startCount + cond.RowCount - 1;

            endCount = endCount > cond.TotalCount ? cond.TotalCount : endCount;

            return(endCount ?? 1);
        }
コード例 #3
0
ファイル: IPagingParam.cs プロジェクト: ttkkhhrr/react-sample
        /// <summary>
        /// 合計ページ数を算出する。
        /// </summary>
        /// <param name="cond"></param>
        /// <returns></returns>
        public static int CulcTotalPageCount(this IPagingParam cond)
        {
            int totalPageCount = cond.TotalCount / cond.RowCount.Value; //総商品数を1ページの表示数で割る。

            if ((cond.TotalCount % cond.RowCount.Value) > 0)
            {
                totalPageCount++; //余りあったらページ数を1増やす。
            }
            return(totalPageCount);
        }
コード例 #4
0
ファイル: IPagingParam.cs プロジェクト: ttkkhhrr/react-sample
        /// <summary>
        /// ページング用の値を設定する。
        /// 既に値が設定されている場合は何もしない。
        /// </summary>
        /// <param name="cond"></param>
        /// <param name="defaultCurrentPage"></param>
        /// <param name="defaultRowCount"></param>
        public static void SetDefaultPagingParamIfNull(this IPagingParam cond,
                                                       int defaultCurrentPage = 0, int defaultRowCount = DefaultPageCount)
        {
            cond.CurrentPage = cond.CurrentPage == null || cond.CurrentPage == 0
                ? defaultCurrentPage : cond.CurrentPage;

            cond.RowCount = cond.RowCount ?? defaultRowCount;

            cond.StartRow = GetStartRow(cond);
        }
コード例 #5
0
ファイル: IPagingParam.cs プロジェクト: ttkkhhrr/react-sample
        /// <summary>
        /// SELECT開始~終了行の表示用の文言を取得する。
        /// </summary>
        /// <param name="cond"></param>
        /// <param name="format"></param>
        /// <returns></returns>
        public static string GetStartEndCountText(this IPagingParam cond, string format = "{0}~{1}件まで表示")
        {
            if (cond == null)
            {
                return("");
            }

            int start = CulcStartCount(cond);
            int end   = CulcEndCount(cond, start);

            string text = string.Format(format, start, end);

            return(text);
        }
コード例 #6
0
        /// <summary>
        /// 事業コード一覧を取得する。
        /// </summary>
        /// <param name="searchText"></param>
        /// <returns>合計件数と一覧の名前付きタプル型を返す。</returns>
        public async Task <(int TotalCount, List <BusinessCodeSearchResult> List)> GetList(int?selectedAccountingCode, string searchDebitBusinessCode, string searchDebitBusinessName, bool showDeleted,
                                                                                           IEnumerable <SortParam> sortParams, IPagingParam pagingParam)
        {
            DynamicParameters parameter = new DynamicParameters(pagingParam);
            string            whereSql1 = CreateSearchTextForBusinessCode(searchDebitBusinessCode, searchDebitBusinessName,
                                                                          selectedAccountingCode, showDeleted, parameter);

            //string whereSql2 = CreateSearchTextForBusinessCode(selectedAccountingCode);
            sortParams = ISortParamsExtensions.CheckSortParams(sortParams, SortColumns); //SQLインジェクションを防ぐ為、画面から送られてきたソート用パラメータが想定した文字列かチェックする。

            string dispOrder = CreateSortOrderStr(sortParams);
            string orderText = string.IsNullOrEmpty(dispOrder) ? " ORDER BY AccountingCodeNo" : dispOrder;

            string sql =
                $@"SELECT * FROM
(
     SELECT 
        ({CreateGeneralNameSubQuery(ConstKubun.AccountingCode, "main.AccountingCodeNo")}) AS AccountingCode
       ,({CreateRemarksSubQuery(ConstKubun.AccountingCode, "main.AccountingCodeNo")}) AS AccountingCodeName
       ,main.BusinessCodeNo
       ,main.AccountingCodeNo
       ,main.DebitBusinessCode
	   ,main.DebitBusinessName
	   ,main.DebitAccountingItemCode
	   ,main.DebitAccountingAssistItemCode
	   ,main.DebitTaxCode
	   ,main.CreditBusinessCode
       ,main.CreditAccountingItemCode
       ,main.CreditAccountingAssistItemCode
       ,main.CreditTaxCode
       ,main.PaymentFlag
	   ,main.DeleteFlag
       ,COUNT(*) OVER() AS TotalCount
  FROM M_BusinessCode main
  WHERE 
  {whereSql1}
)as base
{orderText}
OFFSET @StartRow ROWS FETCH NEXT @RowCount ROWS ONLY
";
            int totalCount = 0;
            //SELECT結果とTotalCountを取得。
            var list = (await Connection.QueryAsync <BusinessCodeSearchResult, int, BusinessCodeSearchResult>(sql,
                                                                                                              (r, _totalCount) =>
            {
                totalCount = _totalCount;
                return(r);
            }, parameter, splitOn: "TotalCount"))
                       .ToList();

            var result = (TotalCount : totalCount, List : list);

            return(result);
        }
コード例 #7
0
        /// <summary>
        /// 検索処理を行う。
        /// </summary>
        /// <param name="TotalCount"></param>
        /// <param name="List"></param>
        /// <returns></returns>
        public async Task <(int TotalCount, List <BusinessCodeSearchResult> List)> GetList(int?SelectedAccountingCode, string SearchDebitBusinessCode, string SearchDebitBusinessName, bool showDeleted,
                                                                                           IEnumerable <SortParam> sortParams, IPagingParam pagingParam)
        {
            pagingParam.SetDefaultPagingParamIfNull();
            var result = await repository.GetList(SelectedAccountingCode, SearchDebitBusinessCode, SearchDebitBusinessName, showDeleted, sortParams, pagingParam);

            return(result);
        }
コード例 #8
0
ファイル: IPagingParam.cs プロジェクト: ttkkhhrr/react-sample
        /// <summary>
        /// ページ内の表示開始位置を取得する。
        /// </summary>
        /// <param name="cond"></param>
        /// <returns></returns>
        public static int CulcStartCount(this IPagingParam cond)
        {
            int?startCount = (cond.RowCount * (cond.CurrentPage)) + 1;

            return(startCount ?? 1);
        }