using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Core; 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(ISbmUserContext 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 Links { get; } = new List(); //--------------------------------------------------------------- // 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 Items { get; } = new List(); //--------------------------------------------------------------- // 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 Groups { get; } = new List(); //------------------------------------------------------------------- // 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) { } //------------------------------------------------------------------- } //======================================================================= }