This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user