Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/App/SbmConsoleViewDfn.cs
T
2021-05-05 21:00:33 +01:00

360 lines
14 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Net.Standard.Base.App
{
//=======================================================================
public class SbmConsoleViewDfn
{
//-------------------------------------------------------------------
// Link definition.
public class LinkData
{
//---------------------------------------------------------------
// Construction:
public LinkData(Sbm.ConsoleLink linkType)
{
LinkType = linkType;
}
//---------------------------------------------------------------
// Properties.
public Sbm.ConsoleLink LinkType { get; }
public int ItemCount { get; set; }
public bool RequiresRefresh { get; protected set; }
public virtual String LinkPrefix
{
get
{
switch (LinkType)
{
case Sbm.ConsoleLink.Assoc_Cust_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " customers in the system.";
return "Waiting to count customers";
case Sbm.ConsoleLink.Assoc_Supp_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " suppliers in the system.";
return "Waiting to count suppliers";
case Sbm.ConsoleLink.Comm_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " commodities in the system.";
return "Waiting to count commodities";
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales quotes in the system.";
return "Waiting to count pending quotes";
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " open sales quotes in the system.";
return "Waiting to count open quotes";
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales orders in the system.";
return "Waiting to count pending sales orders";
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " open sales orders in the system.";
return "Waiting to count open sales orders";
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales dispatches in the system.";
return "Waiting to count pending sales dispatches";
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " pending sales invoices in the system.";
return "Waiting to count pending sales invoices";
case Sbm.ConsoleLink.Util_Codes_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " codes in the system.";
return "Waiting to count codes";
case Sbm.ConsoleLink.Util_Security_Stats:
if (!RequiresRefresh || ItemCount > 0) return "There are " + ItemCount + " users in the system.";
return "Waiting to count users";
}
return "";
}
}
public virtual String LinkText
{
get
{
switch (LinkType)
{
case Sbm.ConsoleLink.Assoc_Cust_View: return "List customers";
case Sbm.ConsoleLink.Assoc_Cust_Create: return "Create customer";
case Sbm.ConsoleLink.Assoc_Supp_View: return "List suppliers";
case Sbm.ConsoleLink.Assoc_Supp_Create: return "Create supplier";
case Sbm.ConsoleLink.Comm_View: return "List commodities";
case Sbm.ConsoleLink.Comm_Create: return "Create commodity";
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_View: return "List pending sales quotes";
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Create: return "Create pending sales quote";
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_View: return "List open sales quotes";
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Create: return "Create open sales quote";
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_View: return "List pending sales orders";
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Create: return "Create pending sales order";
case Sbm.ConsoleLink.Trans_SalesOrders_Open_View: return "List open sales orders";
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Create: return "Create open sales order";
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_View: return "List sales dispatches";
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Create: return "Create sales dispatch";
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_View: return "List sales invoices";
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Create: return "Create sales invoice";
case Sbm.ConsoleLink.Util_Codes_Manage: return "Manage codes";
case Sbm.ConsoleLink.Util_Security_Manage: return "Manage security";
}
return "";
}
}
public virtual String LinkSuffix { get { return ""; } }
//---------------------------------------------------------------
// Utilities.
public virtual bool Refresh(SbmUserContext userContext)
{
ItemCount = 0;
switch (LinkType)
{
case Sbm.ConsoleLink.Assoc_Cust_Stats:
{
using (SbmAccountMgr accountMgr = SbmGlobals.System.CreateAccountMgr(userContext))
{
SbmAssociation.Params prm = new SbmAssociation.Params();
prm.AssociationType = Sbm.AssociationType.Customer;
ItemCount = (int)accountMgr.GetAssociationCount(prm);
}
break;
}
case Sbm.ConsoleLink.Assoc_Supp_Stats:
{
using (SbmAccountMgr accountMgr = SbmGlobals.System.CreateAccountMgr(userContext))
{
SbmAssociation.Params prm = new SbmAssociation.Params();
prm.AssociationType = Sbm.AssociationType.Supplier;
ItemCount = (int)accountMgr.GetAssociationCount(prm);
}
break;
}
case Sbm.ConsoleLink.Comm_Stats:
{
using (SbmCommodityMgr commodityMgr = SbmGlobals.System.CreateCommodityMgr(userContext))
{
SbmCommodity.Params prm = new SbmCommodity.Params();
ItemCount = (int)commodityMgr.GetCommodityCount(prm);
}
break;
}
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Stats:
{
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
{
SbmTransaction.Params prm = new SbmTransaction.Params();
prm.TransactionType = Sbm.TransactionType.SalesQuote;
prm.StatusCat = SbmTransaction.StatusCat.Pending;
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
}
break;
}
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Stats:
{
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
{
SbmTransaction.Params prm = new SbmTransaction.Params();
prm.TransactionType = Sbm.TransactionType.SalesQuote;
prm.StatusCat = SbmTransaction.StatusCat.Open;
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
}
break;
}
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Stats:
{
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
{
SbmTransaction.Params prm = new SbmTransaction.Params();
prm.TransactionType = Sbm.TransactionType.SalesOrder;
prm.StatusCat = SbmTransaction.StatusCat.Pending;
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
}
break;
}
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Stats:
{
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
{
SbmTransaction.Params prm = new SbmTransaction.Params();
prm.TransactionType = Sbm.TransactionType.SalesOrder;
prm.StatusCat = SbmTransaction.StatusCat.Open;
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
}
break;
}
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Stats:
{
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
{
SbmTransaction.Params prm = new SbmTransaction.Params();
prm.TransactionType = Sbm.TransactionType.SalesDispatch;
prm.StatusCat = SbmTransaction.StatusCat.Pending;
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
}
break;
}
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Stats:
{
using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext))
{
SbmTransaction.Params prm = new SbmTransaction.Params();
prm.TransactionType = Sbm.TransactionType.SalesInvoice;
prm.StatusCat = SbmTransaction.StatusCat.Pending;
ItemCount = (int)transactionMgr.GetTransactionCount(prm);
}
break;
}
case Sbm.ConsoleLink.Util_Codes_Stats:
break;
case Sbm.ConsoleLink.Util_Security_Stats:
break;
}
RequiresRefresh = false;
return false;
}
public virtual void ResetRefresh(bool resetCount = false)
{
switch (LinkType)
{
case Sbm.ConsoleLink.Assoc_Cust_Stats:
case Sbm.ConsoleLink.Assoc_Supp_Stats:
case Sbm.ConsoleLink.Comm_Stats:
case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Stats:
case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Stats:
case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Stats:
case Sbm.ConsoleLink.Trans_SalesOrders_Open_Stats:
case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Stats:
case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Stats:
case Sbm.ConsoleLink.Util_Codes_Stats:
case Sbm.ConsoleLink.Util_Security_Stats:
// Count doesn't need resetting - it'll be recalculated anyway.
if (resetCount) ItemCount = 0;
RequiresRefresh = true;
break;
}
}
public virtual bool DoLinkAction() { return false; }
protected virtual void ChangeView(Sbm.View view) { }
//---------------------------------------------------------------
}
// Item definition.
public class ItemData
{
//---------------------------------------------------------------
// Construction:
public ItemData(Sbm.ConsoleItem itemType)
{
ItemType = itemType;
switch (ItemType)
{
case Sbm.ConsoleItem.Associations_Customers: Caption = "Customers"; break;
case Sbm.ConsoleItem.Associations_Suppliers: Caption = "Suppliers"; break;
case Sbm.ConsoleItem.Commodities: Caption = "Commodities"; break;
case Sbm.ConsoleItem.Transactions_SalesQuotes: Caption = "Sales Quotes"; break;
case Sbm.ConsoleItem.Transactions_SalesOrders: Caption = "Sales Orders"; break;
case Sbm.ConsoleItem.Transactions_SalesDispatches: Caption = "Sales Dispatches"; break;
case Sbm.ConsoleItem.Transactions_SalesInvoices: Caption = "Sales Invoices"; break;
case Sbm.ConsoleItem.Utilities_Codes: Caption = "Codes"; break;
case Sbm.ConsoleItem.Utilities_Security: Caption = "Security"; break;
}
}
//---------------------------------------------------------------
// Properties.
public Sbm.ConsoleItem ItemType { get; }
public bool RequiresRefresh { get; protected set; }
public String Caption { get; set; }
public List<LinkData> Links { get; } = new List<LinkData>();
//---------------------------------------------------------------
// Utilities.
public virtual bool HasContent()
{
if (Links.Count < 1) return false;
if (StringUtil.IsEmpty(Caption)) return false;
return false;
}
public LinkData GetLink(Sbm.ConsoleLink consoleLink)
{
return Links.Find(item => item.LinkType == consoleLink);
}
public void ResetRefresh(bool resetCount) { }
//---------------------------------------------------------------
}
// Group definition.
public class GroupData
{
//---------------------------------------------------------------
// Construction:
public GroupData(Sbm.ConsoleGroup groupType)
{
GroupType = groupType;
switch (GroupType)
{
case Sbm.ConsoleGroup.Associations:
Caption = "Associations";
break;
case Sbm.ConsoleGroup.Commodities:
Caption = "Commodities";
break;
case Sbm.ConsoleGroup.Transactions:
Caption = "Transactions";
break;
case Sbm.ConsoleGroup.Utilities:
Caption = "Utilities";
break;
}
}
//---------------------------------------------------------------
// Properties.
public Sbm.ConsoleGroup GroupType { get; }
public String Caption { get; set; }
public List<ItemData> Items { get; } = new List<ItemData>();
//---------------------------------------------------------------
// Utilities.
public virtual bool HasContent()
{
if (!Items.Exists(item => item.HasContent())) return false;
if (StringUtil.IsEmpty(Caption)) return false;
return false;
}
public bool RequiresRefresh() { return false; }
public void ResetRefresh(bool resetCount) { }
public ItemData GetItem(Sbm.ConsoleItem consoleItem)
{
return Items.Find(item => item.ItemType == consoleItem);
}
//---------------------------------------------------------------
}
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public SbmConsoleViewDfn()
{
HeaderCaption = Sbm.ApplicationCaption + " Console";
}
//-------------------------------------------------------------------
// Properties.
public bool RequiresRefresh { get; }
public String HeaderCaption { get; set; }
public List<GroupData> Groups { get; } = new List<GroupData>();
//-------------------------------------------------------------------
// Utilities.
public virtual bool HasContent()
{
if (!Groups.Exists(item => item.HasContent())) return false;
if (StringUtil.IsEmpty(HeaderCaption)) return false;
return true;
}
public GroupData GetGroup(Sbm.ConsoleGroup consoleGroup)
{
return Groups.Find(item => item.GroupType == consoleGroup);
}
public void ResetRefresh(bool resetCount)
{
}
//-------------------------------------------------------------------
}
//=======================================================================
}