3.0.0.1 Demo repository registration

This commit is contained in:
Andy Howard
2025-02-08 16:41:08 +00:00
parent 0d8e7d5619
commit c4e5712d0a
312 changed files with 13145 additions and 30232 deletions
@@ -0,0 +1,163 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.CodeTypes;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.ItemOptions;
using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles
{
//=======================================================================
/// <summary>
/// Determine the correct length to use for text columns in the current database.
/// <br/>- Primarily determined by the relevant database definition.
/// <br/>- For selected columns, use the db schema length instead.
/// <br/>- Allows for certain column lengths to be adjusted in the database.
/// </summary>
public class SbmInstanceSchemaConsole
{
//-------------------------------------------------------------------
private readonly ISacsDatabase db;
//-------------------------------------------------------------------
// Construction.
public SbmInstanceSchemaConsole(ISacsDatabase db)
{
this.db = db;
}
//-------------------------------------------------------------------
// BusMgr Column lengths - taking into account current database schema for selected columns.
public ulong GetColTextLen(SbmDbDfn.ColumnIdx column)
{
// Intercept columns that may have different lengths on the database.
if (db != null && BusMgrColumnLengths.ContainsKey(column))
{
if (BusMgrColumnLengths[column] == 0)
BusMgrColumnLengths[column] = GetDbColTextLen(column);
return BusMgrColumnLengths[column];
}
return SbmDbDfn.GetColTextLen(column);
}
// BusMgr columns that may differ in length on the db.
private readonly Dictionary<SbmDbDfn.ColumnIdx, ulong> BusMgrColumnLengths = new Dictionary<SbmDbDfn.ColumnIdx, ulong>()
{
{ SbmDbDfn.ColumnIdx.Address_Name, 0},
{ SbmDbDfn.ColumnIdx.Commodity_Code, 0},
{ SbmDbDfn.ColumnIdx.Commodity_DrawingNo, 0},
{ SbmDbDfn.ColumnIdx.Commodity_DescBrief, 0},
{ SbmDbDfn.ColumnIdx.Commodity_Notes, 0},
{ SbmDbDfn.ColumnIdx.CommoditySupplier_ProductCode, 0},
{ SbmDbDfn.ColumnIdx.PortfolioItem_Code, 0},
{ SbmDbDfn.ColumnIdx.Transaction_Notes, 0},
{ SbmDbDfn.ColumnIdx.Requirement_ProductCode, 0},
{ SbmDbDfn.ColumnIdx.Requirement_Notes, 0},
{ SbmDbDfn.ColumnIdx.Constituent_Notes, 0},
};
public ulong GetDbColTextLen(SbmDbDfn.ColumnIdx column)
{
// Get the column's length from the currently open database:
if (SbmDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0;
DbDfnTable dfnTable = db.GetTableDfn(SbmDbDfn.GetTableName(SbmDbDfn.GetTableForColumn(column), false));
ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SbmDbDfn.GetColumnName(column, false)))?.Size ?? 0);
return (SbmDbDfn.MaxTextLen > 1 ? Math.Min(SbmDbDfn.MaxTextLen, columnLength) : columnLength);
}
//-------------------------------------------------------------------
// Security Column lengths - taking into account current database schema for selected columns.
public ulong GetColTextLen(SaSecurityDbDfn.ColumnIdx column)
{
// Intercept columns that may have different lengths on the database.
if (db != null && SecurityColumnLengths.ContainsKey(column))
{
if (SecurityColumnLengths[column] == 0)
SecurityColumnLengths[column] = GetDbColTextLen(column);
return SecurityColumnLengths[column];
}
return SaSecurityDbDfn.GetColTextLen(column);
}
// Security columns that may differ in length on the db.
private readonly Dictionary<SaSecurityDbDfn.ColumnIdx, ulong> SecurityColumnLengths = new Dictionary<SaSecurityDbDfn.ColumnIdx, ulong>()
{
{ SaSecurityDbDfn.ColumnIdx.SaSecItem_Code, 0},
{ SaSecurityDbDfn.ColumnIdx.SaSecItem_Description, 0},
{ SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress, 0}
};
public ulong GetDbColTextLen(SaSecurityDbDfn.ColumnIdx column)
{
// Get the column's length from the currently open database:
if (SaSecurityDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0;
DbDfnTable dfnTable = db.GetTableDfn(SaSecurityDbDfn.GetTableName(SaSecurityDbDfn.GetTableForColumn(column), false));
ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SaSecurityDbDfn.GetColumnName(column, false)))?.Size ?? 0);
return (SaSecurityDbDfn.MaxTextLen > 1 ? Math.Min(SaSecurityDbDfn.MaxTextLen, columnLength) : columnLength);
}
//-------------------------------------------------------------------
// CodeType Column lengths - taking into account current database schema for selected columns.
public ulong GetColTextLen(SaCodeTypeDbDfn.ColumnIdx column)
{
// Intercept columns that may have different lengths on the database.
if (db != null && CodeTypeColumnLengths.ContainsKey(column))
{
if (CodeTypeColumnLengths[column] == 0)
CodeTypeColumnLengths[column] = GetDbColTextLen(column);
return CodeTypeColumnLengths[column];
}
return SaCodeTypeDbDfn.GetColTextLen(column);
}
// CodeType columns that may differ in length on the db.
private readonly Dictionary<SaCodeTypeDbDfn.ColumnIdx, ulong> CodeTypeColumnLengths = new Dictionary<SaCodeTypeDbDfn.ColumnIdx, ulong>()
{
{ SaCodeTypeDbDfn.ColumnIdx.SaCodeType_Code, 0},
{ SaCodeTypeDbDfn.ColumnIdx.SaCode_Code, 0},
{ SaCodeTypeDbDfn.ColumnIdx.SaCode_Data, 0},
{ SaCodeTypeDbDfn.ColumnIdx.SaCode_Description, 0}
};
public ulong GetDbColTextLen(SaCodeTypeDbDfn.ColumnIdx column)
{
// Get the column's length from the currently open database:
if (SaCodeTypeDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0;
DbDfnTable dfnTable = db.GetTableDfn(SaCodeTypeDbDfn.GetTableName(SaCodeTypeDbDfn.GetTableForColumn(column), false));
ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SaCodeTypeDbDfn.GetColumnName(column, false)))?.Size ?? 0);
return 0;// (SaCodeTypeDbDfn.MaxTextLen > 1 ? Math.Min(SaCodeTypeDbDfn.MaxTextLen, columnLength) : columnLength);
}
//-------------------------------------------------------------------
// ItemOption Column lengths - taking into account current database schema for selected columns.
public ulong GetColTextLen(SaItemOptionDbDfn.ColumnIdx column)
{
// Intercept columns that may have different lengths on the database.
if (db != null && ItemOptionColumnLengths.ContainsKey(column))
{
if (ItemOptionColumnLengths[column] == 0)
ItemOptionColumnLengths[column] = GetDbColTextLen(column);
return ItemOptionColumnLengths[column];
}
return SaItemOptionDbDfn.GetColTextLen(column);
}
// ItemOption columns that may differ in length on the db.
private readonly Dictionary<SaItemOptionDbDfn.ColumnIdx, ulong> ItemOptionColumnLengths = new Dictionary<SaItemOptionDbDfn.ColumnIdx, ulong>()
{
{ SaItemOptionDbDfn.ColumnIdx.SaItemOption_Name, 0},
{ SaItemOptionDbDfn.ColumnIdx.SaItemOption_Context, 0},
{ SaItemOptionDbDfn.ColumnIdx.SaItemOption_Value, 0},
{ SaItemOptionDbDfn.ColumnIdx.SaItemOption_Notes, 0}
};
public ulong GetDbColTextLen(SaItemOptionDbDfn.ColumnIdx column)
{
// Get the column's length from the currently open database:
if (SaItemOptionDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0;
DbDfnTable dfnTable = db.GetTableDfn(SaItemOptionDbDfn.GetTableName(SaItemOptionDbDfn.GetTableForColumn(column), false));
ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SaItemOptionDbDfn.GetColumnName(column, false)))?.Size ?? 0);
return 0;// (SaItemOptionDbDfn.MaxTextLen > 1 ? Math.Min(SaItemOptionDbDfn.MaxTextLen, columnLength) : columnLength);
}
//-------------------------------------------------------------------
}
//=======================================================================
}