This commit is contained in:
@@ -6,13 +6,16 @@ namespace AyaNova.Biz
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(listKey))
|
||||
return null;
|
||||
|
||||
|
||||
switch (listKey)
|
||||
{
|
||||
//All listkeys are always lower case
|
||||
|
||||
|
||||
case "widget":
|
||||
return WidgetBiz.FilterOptions();
|
||||
case "user":
|
||||
return UserBiz.FilterOptions();
|
||||
|
||||
|
||||
default:
|
||||
return null;//not found
|
||||
|
||||
@@ -151,6 +151,7 @@ namespace AyaNova.Biz
|
||||
//Also all list keys are lower case for consistency
|
||||
FilterOptions f = new FilterOptions("user");
|
||||
f.
|
||||
AddField("id", "ID", AyDataType.Integer).
|
||||
AddField("name", "CommonName", AyDataType.Text).
|
||||
AddField("active", "CommonActive", AyDataType.Bool).
|
||||
AddField("tags", "Tags", AyDataType.Tags).
|
||||
@@ -219,11 +220,11 @@ namespace AyaNova.Biz
|
||||
.CountAsync();
|
||||
#pragma warning restore EF1000
|
||||
|
||||
|
||||
var cleanedItems = new System.Object[] { };
|
||||
foreach (User item in items)
|
||||
int itemCount = items.Count();//totalRecordCount doesn't skip and take so not usable here
|
||||
var cleanedItems = new System.Object[itemCount];
|
||||
for (int i = 0; i < itemCount; i++)
|
||||
{
|
||||
cleanedItems.Append(CleanUserForReturn(item));
|
||||
cleanedItems[i] = CleanUserForReturn(items[i]);
|
||||
}
|
||||
|
||||
var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, totalRecordCount).PagingLinksObject();
|
||||
@@ -421,12 +422,7 @@ namespace AyaNova.Biz
|
||||
|
||||
if (isNew) //Yes, no currentObj
|
||||
{
|
||||
//Not sure why we would care about this particular rule or why I added it? Maybe it's from widget?
|
||||
// //NEW Users must be active
|
||||
// if (((bool)proposedObj.Active) == false)
|
||||
// {
|
||||
// AddError(ValidationErrorType.InvalidValue, "Active", "New User must be active");
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
//OwnerId required
|
||||
|
||||
@@ -17,27 +17,6 @@ namespace AyaNova.Biz
|
||||
|
||||
internal class WidgetBiz : BizObject, IJobObject
|
||||
{
|
||||
public static FilterOptions FilterOptions(long localizeToLocaleId = 0)
|
||||
{
|
||||
//NOTE: All column names are lowercase to conform with Postgres AyaNova DB which uses lowercase for all identifiers
|
||||
//Also all list keys are lower case for consistency
|
||||
FilterOptions f = new FilterOptions("widget");
|
||||
f.
|
||||
AddField("name", "WidgetName", AyDataType.Text).
|
||||
AddField("serial", "WidgetSerial", AyDataType.Integer).
|
||||
AddField("notes", "WidgetNotes", AyDataType.Text).
|
||||
AddField("dollaramount", "WidgetDollarAmount", AyDataType.Decimal).
|
||||
AddField("active", "CommonActive", AyDataType.Bool).
|
||||
AddField("startdate", "WidgetStartDate", AyDataType.Date).
|
||||
AddField("count", "WidgetCount", AyDataType.Integer).
|
||||
AddField("tags", "Tags", AyDataType.Tags).
|
||||
AddField("enddate", "WidgetEndDate", AyDataType.Date);
|
||||
|
||||
if (localizeToLocaleId != 0)
|
||||
f.Localize(localizeToLocaleId);
|
||||
return f;
|
||||
}
|
||||
|
||||
|
||||
internal WidgetBiz(AyContext dbcontext, long currentUserId, long userLocaleId, AuthorizationRoles UserRoles)
|
||||
{
|
||||
@@ -162,13 +141,34 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
|
||||
public static FilterOptions FilterOptions(long localizeToLocaleId = 0)
|
||||
{
|
||||
//NOTE: All column names are lowercase to conform with Postgres AyaNova DB which uses lowercase for all identifiers
|
||||
//Also all list keys are lower case for consistency
|
||||
FilterOptions f = new FilterOptions("widget");
|
||||
f.
|
||||
AddField("id", "ID", AyDataType.Integer).
|
||||
AddField("name", "WidgetName", AyDataType.Text).
|
||||
AddField("serial", "WidgetSerial", AyDataType.Integer).
|
||||
AddField("notes", "WidgetNotes", AyDataType.Text).
|
||||
AddField("dollaramount", "WidgetDollarAmount", AyDataType.Decimal).
|
||||
AddField("active", "CommonActive", AyDataType.Bool).
|
||||
AddField("startdate", "WidgetStartDate", AyDataType.Date).
|
||||
AddField("count", "WidgetCount", AyDataType.Integer).
|
||||
AddField("tags", "Tags", AyDataType.Tags).
|
||||
AddField("enddate", "WidgetEndDate", AyDataType.Date);
|
||||
|
||||
if (localizeToLocaleId != 0)
|
||||
f.Localize(localizeToLocaleId);
|
||||
return f;
|
||||
}
|
||||
|
||||
//get many (paged)
|
||||
internal async Task<ApiPagedResponse<Widget>> GetManyAsync(IUrlHelper Url, string routeName, PagingOptions pagingOptions)
|
||||
{
|
||||
pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset;
|
||||
pagingOptions.Limit = pagingOptions.Limit ?? PagingOptions.DefaultLimit;
|
||||
|
||||
|
||||
//BUILD THE QUERY
|
||||
//base query
|
||||
var q = "SELECT *, xmin FROM AWIDGET ";
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
q = q + FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, WidgetBiz.FilterOptions(), UserId);
|
||||
|
||||
//BUILD ORDER BY AND APPEND IT
|
||||
q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
|
||||
q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1441,5 +1441,6 @@
|
||||
"WidgetEndDate":"Enddatum",
|
||||
"WidgetNotes":"Notizen",
|
||||
"RowsPerPage":"Zeilen pro Seite",
|
||||
"Tags":"Kategorien"
|
||||
"Tags":"Kategorien",
|
||||
"ID":"ID"
|
||||
}
|
||||
|
||||
@@ -1440,7 +1440,8 @@
|
||||
"WidgetEndDate":"End",
|
||||
"WidgetNotes":"Notes",
|
||||
"RowsPerPage":"Rows per page",
|
||||
"Tags":"Tags"
|
||||
"Tags":"Tags",
|
||||
"ID":"ID"
|
||||
|
||||
|
||||
}
|
||||
@@ -1441,5 +1441,6 @@
|
||||
"WidgetEndDate":"Fecha de fin",
|
||||
"WidgetNotes":"Notas",
|
||||
"RowsPerPage":"Filas por página",
|
||||
"Tags":"Etiquetas"
|
||||
"Tags":"Etiquetas",
|
||||
"ID":"ID"
|
||||
}
|
||||
@@ -1440,5 +1440,6 @@
|
||||
"WidgetEndDate":"Date de fin",
|
||||
"WidgetNotes":"Notes",
|
||||
"RowsPerPage":"Lignes par page",
|
||||
"Tags":"Balises"
|
||||
"Tags":"Balises",
|
||||
"ID":"ID"
|
||||
}
|
||||
|
||||
@@ -315,7 +315,7 @@ namespace raven_integration
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[Fact]
|
||||
@@ -331,35 +331,48 @@ namespace raven_integration
|
||||
|
||||
dynamic d = new JObject();
|
||||
d.name = Util.Uniquify(ObjectNameStart);
|
||||
d.startDate = DateTime.Now;
|
||||
d.endDate = DateTime.Now.AddHours(1);
|
||||
d.active = false;
|
||||
d.login = Util.Uniquify("LOGIN");
|
||||
d.password = Util.Uniquify("PASSWORD");
|
||||
d.roles = 0;//norole
|
||||
d.localeId = 1;//random locale
|
||||
d.userType = 3;//non scheduleable
|
||||
|
||||
ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString());
|
||||
ApiResponse a = await Util.PostAsync("User", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
FirstInOrdertId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
d = new JObject();
|
||||
d.name = Util.Uniquify(ObjectNameStart);
|
||||
d.startDate = DateTime.Now.AddHours(1);
|
||||
d.endDate = DateTime.Now.AddHours(2);
|
||||
a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString());
|
||||
d.login = Util.Uniquify("LOGIN");
|
||||
d.password = Util.Uniquify("PASSWORD");
|
||||
d.roles = 0;//norole
|
||||
d.localeId = 1;//random locale
|
||||
d.userType = 3;//non scheduleable
|
||||
d.active = true;
|
||||
|
||||
a = await Util.PostAsync("User", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
SecondInOrderId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
ThirdInOrderId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
d = new JObject();
|
||||
d.name = Util.Uniquify(ObjectNameStart);
|
||||
d.startDate = DateTime.Now.AddHours(2);
|
||||
d.endDate = DateTime.Now.AddHours(3);
|
||||
a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString());
|
||||
d.login = Util.Uniquify("LOGIN");
|
||||
d.password = Util.Uniquify("PASSWORD");
|
||||
d.roles = 0;//norole
|
||||
d.localeId = 1;//random locale
|
||||
d.userType = 3;//non scheduleable
|
||||
d.active = false;
|
||||
a = await Util.PostAsync("User", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
ThirdInOrderId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
SecondInOrderId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//CREATE FILTER
|
||||
d = new JObject();
|
||||
d.name = Util.Uniquify(ObjectNameStart);
|
||||
d["public"] = true;
|
||||
d.listKey = "widget";
|
||||
d.listKey = "user";
|
||||
|
||||
//FILTER IN BY NAME FOR TESTING THIS RUN ONLY
|
||||
dynamic dfilter = new JArray();
|
||||
@@ -371,12 +384,21 @@ namespace raven_integration
|
||||
dfilter.Add(DataFilterNameStart);
|
||||
d.filter = dfilter.ToString();
|
||||
|
||||
//SORT ORDER ###################
|
||||
dynamic dsortarray = new JArray();
|
||||
|
||||
//SORT ORDER ###################
|
||||
//sort by active then by ID
|
||||
|
||||
dynamic dsort = new JObject();
|
||||
dsort.fld = "startdate";
|
||||
dsort.fld = "active";
|
||||
dsort.dir = "+";
|
||||
dsortarray.Add(dsort);
|
||||
|
||||
dsort = new JObject();
|
||||
dsort.fld = "id";
|
||||
dsort.dir = "+";
|
||||
dsortarray.Add(dsort);
|
||||
|
||||
d.sort = dsortarray.ToString();
|
||||
|
||||
a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString());
|
||||
@@ -385,7 +407,7 @@ namespace raven_integration
|
||||
long DataFilterId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//NOW FETCH WIDGET LIST WITH FILTER
|
||||
a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
a = await Util.GetAsync($"User/listusers?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
Util.ValidateHTTPStatusCode(a, 200);
|
||||
|
||||
@@ -398,13 +420,13 @@ namespace raven_integration
|
||||
a.ObjectResponse["data"][2]["id"].Value<long>().Should().Be(ThirdInOrderId);
|
||||
|
||||
|
||||
a = await Util.DeleteAsync("Widget/" + FirstInOrdertId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
a = await Util.DeleteAsync("User/" + FirstInOrdertId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
a = await Util.DeleteAsync("Widget/" + SecondInOrderId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
a = await Util.DeleteAsync("User/" + SecondInOrderId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
a = await Util.DeleteAsync("Widget/" + ThirdInOrderId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
a = await Util.DeleteAsync("User/" + ThirdInOrderId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
//DELETE DATAFILTER
|
||||
|
||||
Reference in New Issue
Block a user