This commit is contained in:
2020-01-16 19:05:41 +00:00
parent f7d664c14f
commit 585969a6d3

View File

@@ -8,6 +8,7 @@ using EnumsNET;
using AyaNova.Util; using AyaNova.Util;
using AyaNova.Api.ControllerHelpers; using AyaNova.Api.ControllerHelpers;
using AyaNova.Models; using AyaNova.Models;
using System.Collections.Generic;
namespace AyaNova.Biz namespace AyaNova.Biz
{ {
@@ -291,22 +292,32 @@ namespace AyaNova.Biz
var qFrom = "FROM AWIDGET"; var qFrom = "FROM AWIDGET";
//WHERE CLAUSE and SORT CLAUSE - FILTER / SORT //FILTER AND SORT
var qWhereAndOrderBy = string.Empty; DataFilter TheFilter = null;
if (listOptions.DataFilterId > 0) if (listOptions.DataFilterId > 0)
{ {
var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId); TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId);
}
//BUILD WHERE AND APPEND IT //WHERE CLAUSE - FILTER
qWhereAndOrderBy = qWhereAndOrderBy + SqlFilterCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, ObjectFields.ObjectFieldsList(ObjectFields.WIDGET_KEY), UserId); var qWhere = string.Empty;
if (listOptions.DataFilterId > 0)
{
qWhere = SqlFilterCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, ObjectFields.ObjectFieldsList(ObjectFields.WIDGET_KEY), UserId);
}
//ORDER BY CLAUSE - SORT
var qOrderBy = string.Empty;
if (listOptions.DataFilterId > 0)
{
//BUILD ORDER BY AND APPEND IT //BUILD ORDER BY AND APPEND IT
qWhereAndOrderBy = qWhereAndOrderBy + SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); qOrderBy = SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
} }
else else
{ {
//GET DEFAULT ORDER BY //GET DEFAULT ORDER BY
qWhereAndOrderBy = qWhereAndOrderBy + SqlFilterOrderByBuilder.DefaultGetManyOrderBy(); qOrderBy = SqlFilterOrderByBuilder.DefaultGetManyOrderBy();
} }
//LIMIT AND OFFSET CLAUSE - PAGING //LIMIT AND OFFSET CLAUSE - PAGING
@@ -315,27 +326,32 @@ namespace AyaNova.Biz
var qLimitOffset = $"LIMIT {listOptions.Limit} OFFSET {listOptions.Offset}"; var qLimitOffset = $"LIMIT {listOptions.Limit} OFFSET {listOptions.Offset}";
//PUT IT ALL TOGETHER //PUT IT ALL TOGETHER
var qQuery = $"{qSelectColumns} {qFrom} {qWhereAndOrderBy} {qLimitOffset}"; var qDataQuery = $"{qSelectColumns} {qFrom} {qWhereAndOrderBy} {qLimitOffset}";
var qCountQuery = $"";
List<object[]> items = new List<object[]>();
//RUN THE QUERY //RUN THE QUERY
using (var command = ct.Database.GetDbConnection().CreateCommand()) using (var command = ct.Database.GetDbConnection().CreateCommand())
{ {
ct.Database.OpenConnection(); ct.Database.OpenConnection();
command.CommandText = qQuery; command.CommandText = qDataQuery;
using (var dr = command.ExecuteReader()) using (var dr = command.ExecuteReader())
{ {
while (dr.Read()) while (dr.Read())
{ {
//Build return here row by row object[] row = new object[dr.FieldCount];
; dr.GetValues(row);
items.Add(row);
} }
} }
} }
long totalRecordCount = 10; long totalRecordCount = 10;
string items = string.Empty;
/* /*
"SELECT id AS df, name, serial, dollaramount, roles, startdate, active FROM AWIDGET ORDER BY ID DESC LIMIT 2 OFFSET 1"
//PAGED FETCH LIST QUERY //PAGED FETCH LIST QUERY
SELECT a.id, a.active, a.xmin, a.count, a.customfields, a.dollaramount, a.enddate, a.name, a.notes, a.roles, a.serial, a.startdate, a.tags SELECT a.id, a.active, a.xmin, a.count, a.customfields, a.dollaramount, a.enddate, a.name, a.notes, a.roles, a.serial, a.startdate, a.tags
FROM ( FROM (
@@ -381,10 +397,6 @@ namespace AyaNova.Biz
//BUILD THE PAGING LINKS PORTION //BUILD THE PAGING LINKS PORTION
var pageLinks = new PaginationLinkBuilder(Url, routeName, null, listOptions, totalRecordCount).PagingLinksObject(); var pageLinks = new PaginationLinkBuilder(Url, routeName, null, listOptions, totalRecordCount).PagingLinksObject();
//BUILD THE RETURN BASED ON TEMPLATE and MINI CONDITIONAL FORMAT
//BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT //BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT
string ColumnsJSON = string.Empty; string ColumnsJSON = string.Empty;
if (listOptions.Mini) if (listOptions.Mini)
@@ -403,13 +415,7 @@ namespace AyaNova.Biz
//TODO: Genericize the above block of building return when it's working as this code needs to be central and optimized as much as possible //TODO: Genericize the above block of building return when it's working as this code needs to be central and optimized as much as possible
//New return code
// dynamic ret = new JObject();
// ret.items = new JArray.fromobj(items);
// ret.pageLinks = pageLinks;
// ret.columns=ColumnsJSON;
// return ret.ToString();
ApiPagedResponse pr = new ApiPagedResponse(items, pageLinks, ColumnsJSON); ApiPagedResponse pr = new ApiPagedResponse(items, pageLinks, ColumnsJSON);
return pr; return pr;
} }