Premmerce Documentation > Table or Grid > Filter column
About Premmerce
Installation
Table or Grid
CSS and JS
General
<div id="@ViewBag.TableId" class="position-relative" data-filename="Orders" data-loadtable="@Url.Action("LoadTableManageOrder", "Order")"
data-table-sort="" data-table-size="" data-table-search="" data-table-pg="" data-table-month="" data-table-year="" data-table-status="">
@await Html.PartialAsync("_TableLengthAndSearch", new TableLengthViewModel { ShowFilter = true, FilterDivId = $"filter-{ViewBag.TableId}" })
<div id="[email protected]" class="row justify-content-end align-items-end g-1 pb-1 d-none">
<partial name="_FilterMonthYear" view-data='@(new ViewDataDictionary(ViewData) { { "FilterMonthYearTableId", ViewBag.TableId } })' />
<!-- The filterTable() function is defined in auratheme.table.js -->
<!-- On selection change, filterTable() sets data-table-status="" with the selected value and refreshes the table -->
<div class="col-6 col-md-4 col-lg-2">
@Helper.CustomDropDown("FilterStatus", Helper.GetOrderStatusSelectList(), true, "filterTable(this,'status','" + ViewBag.TableId + "')", $"{Resource.Filter} {Resource.Status}")
</div>
</div>
@await Html.PartialAsync("_LoadingTable")
</div>
public async Task<TableViewModel> LoadTableManageOrder(dynamic requestData, ViewDataDictionary viewData)
{
try
{
TableActionViewModel tableAction = TableHelper.SetSortSizeSearchPg(requestData, ManageOrderTableConfig.TableConfig);
List<ColumnProperty> headers = TableHelper.SetColumnOrderAction(ManageOrderTableConfig.FullTableColumns, tableAction.Sort);
string? month = requestData.month?.Value;
string? year = requestData.year?.Value;
string? status = requestData.status?.Value;
var list = ReadRecords(true, month, year, status);
list = ManageOrderTableConfig.PerformSearch(list, tableAction.Search);
list = TableHelper.PerformSort(list, ManageOrderTableConfig.TableConfig, tableAction.Sort);
int total = list.Count();
TableHelper.SetViewData(viewData, tableAction, total, ManageOrderTableConfig.TableConfig);
int size = int.TryParse(tableAction.Size.ToString(), out int parsedSize) ? parsedSize : tableAction.Size;
PaginatedList<OrderViewModel> currentPageResult = await PaginatedList<OrderViewModel>.CreateAsync(list, tableAction.Page, size, total, headers);
TableViewModel tableView = TableHelper.GenerateTableView(currentPageResult, headers, ManageOrderTableConfig.TableConfig, tableAction.Search, total);
tableView = TableHelper.GenerateRowsColumns(currentPageResult, headers, tableView, ManageOrderTableConfig.TableConfig);
return tableView;
}
catch (Exception ex)
{
_generalService.LogError(ex);
throw;
}
}
public IQueryable<OrderViewModel> ReadRecords(bool management = false, string? month = null, string? year = null, string? status = null)
{
month = string.IsNullOrEmpty(month) ? "0" : month;
year = string.IsNullOrEmpty(year) ? "0" : year;
int monthValue = Convert.ToInt32(month);
int yearValue = Convert.ToInt32(year);
string statusId = "";
if (!string.IsNullOrWhiteSpace(status))
{
statusId = _generalService.GetGlobalOptionSetId(status, "OrderStatus");
}
string userId = _generalService.GetCurrentUserId();
var result = from t1 in _db.Orders
join t2 in _db.GlobalOptionSets on t1.StatusId equals t2.Id
join t3 in _db.GlobalOptionSets on t1.CurrencyId equals t3.Id
where t1.IsDeleted == false
&& (
(management == false && !string.IsNullOrEmpty(userId) && t1.CreatedByUserId == userId) ||
management == true
)
&& (month == "0" || (monthValue > 0 && t1.CreatedOn != null && t1.CreatedOn.Value.Month == monthValue))
&& (year == "0" || (yearValue > 0 && t1.CreatedOn != null && t1.CreatedOn.Value.Year == yearValue))
&& (!string.IsNullOrWhiteSpace(statusId) ? t1.StatusId == statusId : true)
select new OrderViewModel
{
Id = t1.Id,
OrderNumber = t1.OrderNumber,
StatusId = t1.StatusId,
EmailAddress = t1.EmailAddress,
CustomerRemarks = t1.CustomerRemarks,
StatusRemarks = t1.StatusRemarks,
FirstName = t1.FirstName,
LastName = t1.LastName,
TrackingNumber = t1.TrackingNumber,
PaymentGateway = t1.PaymentGateway,
StatusCode = t2.Code,
StatusName = t2.DisplayName,
Currency = t3.Code,
PaidTotalCost = t1.PaidTotalCost,
RefundId = t1.RefundId,
RefundedOn = t1.RefundedOn,
CreatedOn = t1.CreatedOn,
CreatedByUserId = t1.CreatedByUserId
};
return result;
}