This commit is contained in:
@@ -8,6 +8,7 @@ using EnumsNET;
|
||||
using AyaNova.Util;
|
||||
using AyaNova.Api.ControllerHelpers;
|
||||
using AyaNova.Models;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AyaNova.Biz
|
||||
{
|
||||
@@ -291,22 +292,32 @@ namespace AyaNova.Biz
|
||||
|
||||
var qFrom = "FROM AWIDGET";
|
||||
|
||||
//WHERE CLAUSE and SORT CLAUSE - FILTER / SORT
|
||||
var qWhereAndOrderBy = string.Empty;
|
||||
//FILTER AND SORT
|
||||
DataFilter TheFilter = null;
|
||||
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
|
||||
qWhereAndOrderBy = qWhereAndOrderBy + SqlFilterCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, ObjectFields.ObjectFieldsList(ObjectFields.WIDGET_KEY), UserId);
|
||||
//WHERE CLAUSE - FILTER
|
||||
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
|
||||
qWhereAndOrderBy = qWhereAndOrderBy + SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
|
||||
qOrderBy = SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
|
||||
}
|
||||
else
|
||||
{
|
||||
//GET DEFAULT ORDER BY
|
||||
qWhereAndOrderBy = qWhereAndOrderBy + SqlFilterOrderByBuilder.DefaultGetManyOrderBy();
|
||||
qOrderBy = SqlFilterOrderByBuilder.DefaultGetManyOrderBy();
|
||||
}
|
||||
|
||||
//LIMIT AND OFFSET CLAUSE - PAGING
|
||||
@@ -315,27 +326,32 @@ namespace AyaNova.Biz
|
||||
var qLimitOffset = $"LIMIT {listOptions.Limit} OFFSET {listOptions.Offset}";
|
||||
|
||||
//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
|
||||
using (var command = ct.Database.GetDbConnection().CreateCommand())
|
||||
{
|
||||
|
||||
ct.Database.OpenConnection();
|
||||
command.CommandText = qQuery;
|
||||
command.CommandText = qDataQuery;
|
||||
using (var dr = command.ExecuteReader())
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
//Build return here row by row
|
||||
;
|
||||
object[] row = new object[dr.FieldCount];
|
||||
dr.GetValues(row);
|
||||
items.Add(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
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 (
|
||||
@@ -381,10 +397,6 @@ namespace AyaNova.Biz
|
||||
//BUILD THE PAGING LINKS PORTION
|
||||
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
|
||||
string ColumnsJSON = string.Empty;
|
||||
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
|
||||
|
||||
//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);
|
||||
return pr;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user