Web app logon.

This commit is contained in:
Andy Howard
2024-06-04 16:16:05 +01:00
parent f5e0b925fb
commit 0c44e9ddd3
70 changed files with 2624 additions and 1331 deletions
@@ -1318,6 +1318,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
List<String> filter = new List<String>();
//---------------------------------------------------------------
// Association Id.
String colAssociation_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id, aliasAssociation);
String includedIds = prm.IncludedIds.Concat(",");
@@ -1332,6 +1333,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (prm.AssociationType > 0)
filter.Add(colAssociation_Type + "=" + ((int)prm.AssociationType).ToString());
//---------------------------------------------------------------
// Owner affiliate.
String colAssociation_AffIdOwner = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation);
if (SysId.IsValid(prm.AffiliateIdOwner))
@@ -1342,13 +1344,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (SysId.IsValid(prm.AffiliateIdTarget))
filter.Add(colAssociation_AffIdTarget + "=" + prm.AffiliateIdTarget.ToString());
// Price Set.
String colAssociation_PriceSetId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PriceSetId, aliasAssociation);
if (SysId.IsValid(prm.PriceSetId))
filter.Add(colAssociation_PriceSetId + "=" + prm.PriceSetId.ToString());
//---------------------------------------------------------------
// Contact Group:
// Contact Group.
if (SysId.IsValid(prm.AffiliateIdContactGroup))
{
//Association must also be a member of this contact group.
@@ -1368,54 +1365,80 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//---------------------------------------------------------------
// Affiliate TargetName & Partial TargetName attributes.
// Code.
String colAssociation_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, aliasAssociation);
if (!prm.Code.IsEmpty())
filter.Add(colAssociation_Code + "='" + DbQuery.FormatForCondition(prm.Code) + "'");
else if (!prm.CodePartial.IsEmpty())
filter.Add(DbQuery.FormatFn_Left(colAssociation_Code, prm.CodePartial.Length) + " Like '%" + DbQuery.FormatForLike(prm.CodePartial) + "%'");
// Group.
String colAssociation_Group = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Group, aliasAssociation);
if (!prm.GroupFull.IsEmpty())
filter.Add(colAssociation_Group + "='" + DbQuery.FormatForCondition(prm.GroupFull) + "'");
else if (!prm.GroupPartial.IsEmpty())
filter.Add(DbQuery.FormatFn_Left(colAssociation_Group, prm.GroupPartial.Length) + " Like '%" + DbQuery.FormatForLike(prm.GroupPartial) + "%'");
//---------------------------------------------------------------
// Target Name.
if (!prm.NameTargetFull.IsEmpty() || !prm.NameTargetPartial.IsEmpty())
{
// Target name has been specified.
String tableAffiliate = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate);
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id);
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name);
String colAffiliate_FirstName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_FirstName);
String colAfiliate_LastName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_LastName);
// Target affiliate alias.
String aliasAffiliateTarget = StringUtil.OnEmpty(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
// Clause to identify associations with targets that match the partial name.
DbQuery queryAffTarget = new DbQuery(db.DbmsType);
queryAffTarget.Tables.Add(tableAffiliate);
queryAffTarget.Columns.Add(colAffiliate_Id);
queryAffTarget.Filters.Add(colAffiliate_Id + "=" + colAssociation_AffIdTarget);
// Target affiliate columns.
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliateTarget);
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasAffiliateTarget);
String colAffiliate_FirstName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_FirstName, aliasAffiliateTarget);
String colAffiliate_LastName = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_LastName, aliasAffiliateTarget);
// Filters.
List<String> affiliateFilter = new List<string>();
String nameTargetFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.NameTargetFull));
String nameTargetPartial = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.NameTargetPartial));
String nameTargetPartial = DbQuery.FormatForLike(StringUtil.EmptyOnNull(prm.NameTargetPartial));
if (!nameTargetFull.IsEmpty())
queryAffTarget.Filters.Add(colAffiliate_Name + "='" + nameTargetFull + "' OR " + colAfiliate_LastName + "='" + nameTargetFull + "'");
affiliateFilter.Add(colAffiliate_Name + "='" + nameTargetFull + "' OR " + colAffiliate_LastName + "='" + nameTargetFull + "'");
if (!nameTargetPartial.IsEmpty())
queryAffTarget.Filters.Add(
DbQuery.FormatFn_Left(colAffiliate_Name, nameTargetPartial.Length) + "='" + nameTargetPartial + "' OR " +
DbQuery.FormatFn_Left(colAffiliate_FirstName, nameTargetPartial.Length) + "='" + nameTargetPartial + "' OR " +
DbQuery.FormatFn_Left(colAfiliate_LastName, nameTargetPartial.Length) + "='" + nameTargetPartial + "'");
filter.Add("EXISTS (" + queryAffTarget.BuildQuery() + ")");
affiliateFilter.Add(
colAffiliate_Name + " Like '%" + nameTargetPartial + "%' OR " +
colAffiliate_FirstName + " Like '%" + nameTargetPartial + "%' OR " +
colAffiliate_LastName + " Like '%" + nameTargetPartial + "%'");
if (prm.Alias_Affiliate_Target.IsEmpty())
{
// Target affiliate alias not supplied - table is not joined in main query.
// Sub query on target affiliate.
DbQuery queryAffTarget = new DbQuery(db.DbmsType);
queryAffTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAffiliateTarget);
queryAffTarget.Columns.Add(colAffiliate_Id);
queryAffTarget.Filters.Add(colAffiliate_Id + "=" + colAssociation_AffIdTarget);
queryAffTarget.Filters.AddRange(affiliateFilter);
filter.Add("EXISTS (" + queryAffTarget.BuildQuery() + ")");
}
else
{
// Target affiliate alias supplied - table is joined in main query.
// Simply filter directly on joined table.
filter.AddRange(affiliateFilter);
}
}
//---------------------------------------------------------------
// Partial Address & Postcode for AddTarget.
// Target Address & Postcode.
if (!StringUtil.IsEmpty(prm.AddressPartial) || !StringUtil.IsEmpty(prm.PostcodePartial))
{
// Clause to identify associations with target addresses that match the details specified.
String aliasAddTarget = "aAddTarget";
DbQuery queryAddTarget = new DbQuery(db.DbmsType);
String tableAddress = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address);
queryAddTarget.Tables.Add(tableAddress, aliasAddTarget);
// Target Address alias.
String aliasAddTarget = StringUtil.OnEmpty(prm.Alias_Address_Target, "aAddTarget");
// Target address columns.
String colAddress_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddTarget);
queryAddTarget.Columns.Add(colAddress_Id);
String colAddress_ItemType = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddTarget);
queryAddTarget.Filters.Add(colAddress_ItemType + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
String colAddress_ItemId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddTarget);
queryAddTarget.Filters.Add(colAddress_ItemId + "=" + colAssociation_AffIdTarget);
// Address filter.
String addressLike = DbQuery.FormatForLike(StringUtil.EmptyOnNull(prm.AddressPartial));
if (!StringUtil.IsEmpty(addressLike))
// Filters.
List<String> addressFilter = new List<string>();
String addressPartial = DbQuery.FormatForLike(StringUtil.EmptyOnNull(prm.AddressPartial));
if (!StringUtil.IsEmpty(addressPartial))
{
List<SbmDbDfn.ColumnIdx> addressCols = new List<SbmDbDfn.ColumnIdx>()
{
@@ -1427,45 +1450,133 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SbmDbDfn.ColumnIdx.Address_Province,
SbmDbDfn.ColumnIdx.Address_Contact,
};
List<String> filterAddress = new List<String>();
foreach (SbmDbDfn.ColumnIdx addressCol in addressCols)
filterAddress.Add(SbmDbDfn.GetColumnNameQual(addressCol, aliasAddTarget) + " LIKE '%" + addressLike + "%'");
queryAddTarget.Filters.Add(filterAddress.Concat(" OR ", "(", ")"));
String partialAddressFilter = addressCols.Select(item => SbmDbDfn.GetColumnNameQual(item, aliasAddTarget) + " LIKE '%" + addressPartial + "%'").Concat(" OR ", "(", ")");
addressFilter.Add(partialAddressFilter);
}
// Postcode filter.
String postcodeCond = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.PostcodePartial));
String colAddress_PostcodeFmt = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_PostcodeFmt, aliasAddTarget);
if (!StringUtil.IsEmpty(postcodeCond))
queryAddTarget.Filters.Add(DbQuery.FormatFn_Left(colAddress_PostcodeFmt, prm.PostcodePartial.Length) + "='" + postcodeCond + "'");
filter.Add("EXISTS (" + queryAddTarget.BuildQuery() + ")");
addressFilter.Add(DbQuery.FormatFn_Left(colAddress_PostcodeFmt, prm.PostcodePartial.Length) + "='" + postcodeCond + "'");
if (prm.Alias_Address_Target.IsEmpty())
{
// Target address alias not supplied - table is not joined in main query.
// Sub query on target address.
DbQuery queryAddTarget = new DbQuery(db.DbmsType);
queryAddTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAddTarget);
queryAddTarget.Columns.Add(colAddress_Id);
queryAddTarget.Filters.Add(colAddress_ItemType + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
queryAddTarget.Filters.Add(colAddress_ItemId + "=" + colAssociation_AffIdTarget);
queryAddTarget.Filters.AddRange(addressFilter);
filter.Add("EXISTS (" + queryAddTarget.BuildQuery() + ")");
}
else
{
// Target address alias supplied - table is joined in main query.
// Simply filter directly on joined table.
filter.AddRange(addressFilter);
}
}
// Full & Partial DefaultNominalCode.
//---------------------------------------------------------------
// Generic search.
if (!StringUtil.IsEmpty(prm.Search))
{
List<String> searchFilter = new List<string>();
foreach (String rawSearchValue in prm.Search.Split(new char[] { ' ', ',', ';' }))
{
String searchValue = DbQuery.FormatForLike(StringUtil.TrimAll(rawSearchValue));
if (StringUtil.IsEmpty(searchValue)) continue;
// Association filters.
List<String> searchValueFilter = new List<string>();
searchValueFilter.Add(colAssociation_Code + " LIKE '%" + searchValue + "%'");
searchValueFilter.Add(colAssociation_Group + " LIKE '%" + searchValue + "%'");
// Target affiliate.
String aliasAffiliateTarget = StringUtil.OnEmpty(prm.Alias_Affiliate_Target, aliasAssociation_Affiliate_Target);
String colAffiliate_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAffiliateTarget);
String colAffiliate_Name = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Name, aliasAffiliateTarget);
List<String> affiliateFilter = new List<string>();
affiliateFilter.Add(colAffiliate_Name + " Like '%" + searchValue + "%'");
if (prm.Alias_Affiliate_Target.IsEmpty())
{
// Target affiliate alias not supplied - table is not joined in main query.
// Sub query on target affiliate.
DbQuery queryAffTarget = new DbQuery(db.DbmsType);
queryAffTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAffiliateTarget);
queryAffTarget.Columns.Add(colAffiliate_Id);
queryAffTarget.Filters.Add(colAffiliate_Id + "=" + colAssociation_AffIdTarget);
queryAffTarget.Filters.AddRange(affiliateFilter);
filter.Add("EXISTS (" + queryAffTarget.BuildQuery() + ")");
}
else
{
// Target affiliate alias supplied - table is joined in main query.
// Simply filter directly on joined table.
searchValueFilter.AddRange(affiliateFilter);
}
// Target address.
String aliasAddTarget = StringUtil.OnEmpty(prm.Alias_Address_Target, "aAddTarget");
String colAddress_Id = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddTarget);
String colAddress_ItemType = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddTarget);
String colAddress_ItemId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddTarget);
List<String> addressFilter = new List<string>();
List<SbmDbDfn.ColumnIdx> addressCols = new List<SbmDbDfn.ColumnIdx>()
{
SbmDbDfn.ColumnIdx.Address_Name,
SbmDbDfn.ColumnIdx.Address_Line1,
SbmDbDfn.ColumnIdx.Address_Line2,
SbmDbDfn.ColumnIdx.Address_Line3,
SbmDbDfn.ColumnIdx.Address_City,
SbmDbDfn.ColumnIdx.Address_Province,
SbmDbDfn.ColumnIdx.Address_Postcode,
SbmDbDfn.ColumnIdx.Address_PostcodeFmt,
SbmDbDfn.ColumnIdx.Address_Contact,
};
String partialAddressFilter = addressCols.Select(item => SbmDbDfn.GetColumnNameQual(item, aliasAddTarget) + " LIKE '%" + searchValue + "%'").Concat(" OR ", "(", ")");
addressFilter.Add(partialAddressFilter);
if (prm.Alias_Address_Target.IsEmpty())
{
// Target address alias not supplied - table is not joined in main query.
// Sub query on target address.
DbQuery queryAddTarget = new DbQuery(db.DbmsType);
queryAddTarget.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAddTarget);
queryAddTarget.Columns.Add(colAddress_Id);
queryAddTarget.Filters.Add(colAddress_ItemType + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
queryAddTarget.Filters.Add(colAddress_ItemId + "=" + colAssociation_AffIdTarget);
queryAddTarget.Filters.AddRange(addressFilter);
filter.Add("EXISTS (" + queryAddTarget.BuildQuery() + ")");
}
else
{
// Target address alias supplied - table is joined in main query.
// Simply filter directly on joined table.
searchValueFilter.AddRange(addressFilter);
}
searchFilter.Add(searchValueFilter.Concat(" OR ", "(", ")"));
}
filter.AddRange(searchFilter);
}
//---------------------------------------------------------------
// Default Nominal Code.
String defaultNominalCodeFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.DefaultNominalCodeFull));
String defaultNominalCodePartial = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.DefaultNominalCodePartial));
String colAssociation_DefaultNominalCode = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_DefaultNominalCode, aliasAssociation);
if (!defaultNominalCodeFull.IsEmpty())
filter.Add(colAssociation_DefaultNominalCode + "='" + defaultNominalCodeFull + "'");
filter.Add(colAssociation_DefaultNominalCode + "='" + DbQuery.FormatForCondition(defaultNominalCodeFull) + "'");
else if (!defaultNominalCodePartial.IsEmpty())
filter.Add(DbQuery.FormatFn_Left(colAssociation_DefaultNominalCode, prm.DefaultNominalCodePartial.Length) + "='" + defaultNominalCodePartial + "'");
filter.Add(DbQuery.FormatFn_Left(colAssociation_DefaultNominalCode, prm.DefaultNominalCodePartial.Length) + " Like '%" + DbQuery.FormatForLike(defaultNominalCodePartial) + "%'");
// Full & Partial Code.
String codeFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.Code));
String codePartial = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.CodePartial));
String colAssociation_Code = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Code, aliasAssociation);
if (!codeFull.IsEmpty())
filter.Add(colAssociation_Code + "='" + codeFull + "'");
else if (!codePartial.IsEmpty())
filter.Add(DbQuery.FormatFn_Left(colAssociation_Code, prm.CodePartial.Length) + "='" + codePartial + "'");
// Full & Partial Group.
String groupFull = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.GroupFull));
String groupPartial = DbQuery.FormatForCondition(StringUtil.EmptyOnNull(prm.GroupPartial));
String colAssociation_Group = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Group, aliasAssociation);
if (!groupFull.IsEmpty())
filter.Add(colAssociation_Group + "='" + groupFull + "'");
else if (!groupPartial.IsEmpty())
filter.Add(DbQuery.FormatFn_Left(colAssociation_Group, prm.GroupPartial.Length) + "='" + groupPartial + "'");
//---------------------------------------------------------------
// Price Set.
String colAssociation_PriceSetId = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PriceSetId, aliasAssociation);
if (SysId.IsValid(prm.PriceSetId))
filter.Add(colAssociation_PriceSetId + "=" + prm.PriceSetId.ToString());
//---------------------------------------------------------------
// Codings.
@@ -1943,20 +2054,20 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_UpdateOn, aliasAssociation));
//---------------------------------------------------------------
// Owner affiliate columns
// Owner affiliate.
bool hasColsAffOwner = false;
if (!hasColsAffOwner)
hasColsAffOwner = columns.HasId((int)SbmAssociation.Column.Owner_Name);
bool hasColsAffOwnerAddress = false;
if (hasColsAffOwner || hasColsAffOwnerAddress)
{
// Join to the owner affiliate.
DbQueryJoin joinPriceSetOwner = new DbQueryJoin(DbJoinType.LeftOuter);
joinPriceSetOwner.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Owner);
joinPriceSetOwner.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Owner) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation));
query.Joins.Add(joinPriceSetOwner);
// Add the owner affiliate columns.
prm.Alias_Affiliate_Owner = aliasAssociation_Affiliate_Owner;
DbQueryJoin joinAffiliateOwner = new DbQueryJoin(DbJoinType.LeftOuter);
joinAffiliateOwner.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Owner);
joinAffiliateOwner.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Owner) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation));
query.Joins.Add(joinAffiliateOwner);
// Columns.
List<SbmDbDfn.ColumnIdx> affiliateOwnerCols = new List<SbmDbDfn.ColumnIdx>()
{
SbmDbDfn.ColumnIdx.Affiliate_Id,
@@ -1979,7 +2090,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//---------------------------------------------------------------
// Target affiliate columns.
// Target affiliate.
bool hasColsAffTarget = false;
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId((int)SbmAssociation.Column.Target_Type) || columns.HasId((int)SbmAssociation.Column.Target_TypeDesc);
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId((int)SbmAssociation.Column.Target_Name);
@@ -2021,10 +2132,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (hasColsAffTarget || hasColsAffTargetAddress)
{
// Join to the target affiliate - NB Use an alias to avoid clashing with the owner affiliate.
DbQueryJoin joinPriceSetTarget = new DbQueryJoin(DbJoinType.LeftOuter);
joinPriceSetTarget.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Target);
joinPriceSetTarget.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation));
query.Joins.Add(joinPriceSetTarget);
prm.Alias_Affiliate_Target = aliasAssociation_Affiliate_Target;
DbQueryJoin joinAffiliateTarget = new DbQueryJoin(DbJoinType.LeftOuter);
joinAffiliateTarget.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), aliasAssociation_Affiliate_Target);
joinAffiliateTarget.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget, aliasAssociation));
query.Joins.Add(joinAffiliateTarget);
// Add the target affiliate columns.
List<SbmDbDfn.ColumnIdx> affiliateTargetCols = new List<SbmDbDfn.ColumnIdx>();
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Id);
@@ -2053,6 +2165,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (hasColsAffTargetAddress)
{
// Join to the target contact's primary address.
prm.Alias_Address_Target = aliasAssociation_Target_Address;
DbQueryJoin joinTargetAddress = new DbQueryJoin(DbJoinType.LeftOuter);
joinTargetAddress.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAssociation_Target_Address);
// Address context.
@@ -2174,6 +2287,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (hasColsMember || hasColsMemberAddress)
{
// Join to the member association - NB Use an alias to avoid clashing with the target affiliate.
prm.Alias_Association_Member = aliasAssociation_Member_Association;
DbQueryJoin joinPriceSetMemberAss = new DbQueryJoin(DbJoinType.LeftOuter);
joinPriceSetMemberAss.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssociation_Member_Association);
joinPriceSetMemberAss.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner, aliasAssociation_Member_Association) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget));
@@ -2215,6 +2329,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (hasColsMemberAddress)
{
// Join to the Member affiliate - NB Use an alias to avoid clashing with the owner affiliate.
prm.Alias_Address_Member = aliasAssociation_Member_Address;
DbQueryJoin joinPriceSetMemberAddress = new DbQueryJoin(DbJoinType.LeftOuter);
joinPriceSetMemberAddress.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAssociation_Member_Address);
joinPriceSetMemberAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_AffIdOwner, aliasAssociation_Member_Address) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Member_Affiliate));
@@ -2254,6 +2369,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (hasColsPriceSet)
{
// Join to the Price Set.
prm.Alias_PriceSet = aliasAssociation_PriceSet;
DbQueryJoin joinPriceSet = new DbQueryJoin(DbJoinType.LeftOuter);
joinPriceSet.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaPriceSet), aliasAssociation_PriceSet);
joinPriceSet.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaPriceSet_Id, aliasAssociation_PriceSet) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_PriceSetId, aliasAssociation));
@@ -57,7 +57,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Utils
OutputDirectory = directory
};
// Schema - Tables.
config.Schema.Tables_Excluded.AddRange(new String[] { });
config.Schema.Tables_Excluded.UnionWith(new String[] { });
// Schema - Columns.
config.Schema.InsertOnlyColumns.Add(".*", "CreateOn,CreateBy,CreateHost");
// Database definition class.
@@ -63,7 +63,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Utils
OutputDirectory = directory
};
// Schema - Tables.
config.Schema.Tables_Excluded.AddRange(new String[] { "NextId", "SaCode", "SaCodeType", "SaSecItem", "SaSecurityItem", "SaSecLink", "SaSecurityLink", "SaItemData", "SaItemDoc", "SaItemOption", "SaInterface", "SaInterfaceProcess", "SaInterfaceProcessMessage", "SaInterfaceDataItem", "SaInterfaceProcessDataItem", "SaAttrUpdate" });
config.Schema.Tables_Excluded.UnionWith(new String[] { "NextId", "SaCode", "SaCodeType", "SaSecItem", "SaSecurityItem", "SaSecLink", "SaSecurityLink", "SaItemData", "SaItemDoc", "SaItemOption", "SaInterface", "SaInterfaceProcess", "SaInterfaceProcessMessage", "SaInterfaceDataItem", "SaInterfaceProcessDataItem", "SaAttrUpdate" });
// Schema - Columns.
config.Schema.InsertOnlyColumns.Add(".*", "CreateOn,CreateBy,CreateHost");
// Database definition class.
@@ -1,19 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RootNamespace>Sarand.BusinessMgr.Net.Standard</RootNamespace>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Sarand.BusinessMgr.Net.Standard</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardBase\SacsStandardBase.csproj" />
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardDbas\SacsStandardDbas.csproj" />
<ProjectReference Include="..\SaBusMgrStandardBase\SaBusMgrStandardBase.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardBase\SacsStandardBase.csproj" />
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardDbas\SacsStandardDbas.csproj" />
<ProjectReference Include="..\SaBusMgrStandardBase\SaBusMgrStandardBase.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Dbas\Internal\Control\" />
<Folder Include="Resources\Database\" />
</ItemGroup>
<ItemGroup>
<Folder Include="Dbas\Internal\Control\" />
<Folder Include="Resources\Database\" />
</ItemGroup>
</Project>