117 lines
4.3 KiB
C#
117 lines
4.3 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Routing;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using Sarand.Net.Standard.Dbas.Data;
|
|
using Saxonite.Net.Core.Web.Admin.Models;
|
|
using Saxonite.Net.Standard.Base.App;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace Saxonite.Net.Core.Web.Admin.Controllers
|
|
{
|
|
//=======================================================================
|
|
// Home - Ajax - Awaiting Activation controller
|
|
//=======================================================================
|
|
partial class HomeController
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Items Awaiting Activation data.
|
|
private class ActivationItemData
|
|
{
|
|
public String ItemType { get; set; }
|
|
public String ItemTypeDesc { get; set; }
|
|
public String ItemTypeDescPlural { get; set; }
|
|
public long ItemCount { get; set; }
|
|
public String ViewLink { get; set; }
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Get Items Awaiting Activation ajax request.
|
|
//-------------------------------------------------------------------
|
|
private class AjaxResponse_ItemsAwaitingActivation : AjaxResponse_Data
|
|
{
|
|
// Construction.
|
|
public AjaxResponse_ItemsAwaitingActivation(SaxModel_Admin model) : base(model) { }
|
|
// Table list.
|
|
public List<ActivationItemData> Items { get; } = new List<ActivationItemData>();
|
|
}
|
|
//-------------------------------------------------------------------
|
|
[HttpPost]
|
|
[Route("Home/Ajax/GetItemsAwaitingActivation")]
|
|
public IActionResult Ajax_GetItemsAwaitingActivation(Model_Sport model)
|
|
{
|
|
String fn = GetType().Name + ".Ajax_GetItemsAwaitingActivation";
|
|
String messageTitle = Localiser["home.caption.application"];
|
|
AjaxResponse_ItemsAwaitingActivation responseData = new AjaxResponse_ItemsAwaitingActivation(model);
|
|
|
|
// Validate session.
|
|
if (!ValidUserSession)
|
|
return GetAjaxResult_InvalidSession(responseData);
|
|
|
|
// Core Database connection.
|
|
ISacsDatabase db = SaxGlobals.App.GetCoreDatabase(SessionContext);
|
|
|
|
// Query to count items awaiting activation.
|
|
Dictionary<String, int> tableRowCounts = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
|
|
List<String> query = new List<string>()
|
|
{
|
|
// User accounts.
|
|
"SELECT",
|
|
"ItemType = '" + DbQuery.FormatForCondition(nameof(Sax.DataItemType.UserAccount)) + "',",
|
|
"ItemCount = Count(*)",
|
|
"FROM UserAccount ua",
|
|
"WHERE ua.Status = 'AWA'",
|
|
// Organisations.
|
|
"UNION SELECT",
|
|
"ItemType = '" + DbQuery.FormatForCondition(nameof(Sax.DataItemType.Organisation)) + "',",
|
|
"ItemCount = Count(*)",
|
|
"FROM Organisation org",
|
|
"WHERE org.Status = 'AWA'",
|
|
};
|
|
using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, query.Concat("\n")))
|
|
{
|
|
while (dbResultSet != null && dbResultSet.NextRecord())
|
|
{
|
|
Sax.DataItemType itemType = EnumUtil.ParseEnum(dbResultSet.GetRecordValues().GetValue("ItemType").ToString(), Sax.DataItemType.Unknown);
|
|
String itemTypeDesc = nameof(itemType);
|
|
String itemTypeDescPlural = itemTypeDesc;
|
|
String viewLink = "";
|
|
switch (itemType)
|
|
{
|
|
case Sax.DataItemType.UserAccount:
|
|
itemTypeDesc = "User Account";
|
|
itemTypeDescPlural = "User Accounts";
|
|
viewLink = Url.Action("", "User", new RouteValueDictionary() { { "sta", "Await" } }).TrimStart('/');
|
|
break;
|
|
case Sax.DataItemType.Organisation:
|
|
itemTypeDesc = "Organisation";
|
|
itemTypeDescPlural = "Organisations";
|
|
viewLink = Url.Action("", "Organisation", new RouteValueDictionary() { { "sta", "Await" } }).TrimStart('/');
|
|
break;
|
|
}
|
|
ActivationItemData activationItem = new ActivationItemData()
|
|
{
|
|
ItemType = nameof(itemType),
|
|
ItemTypeDesc = itemTypeDesc,
|
|
ItemTypeDescPlural = itemTypeDescPlural,
|
|
ItemCount = dbResultSet.GetRecordValues().GetValue("ItemCount").AsLong(),
|
|
ViewLink = viewLink,
|
|
};
|
|
responseData.Items.Add(activationItem);
|
|
}
|
|
}
|
|
|
|
// Complete response.
|
|
responseData.Success = true;
|
|
return Json(responseData);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|