3.0.1.6 Addresses
This commit is contained in:
@@ -430,12 +430,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
case SbmAssociation.Column.Status_Desc: return SbmDbDfn.ColumnIdx.Association_Status;
|
||||
case SbmAssociation.Column.Status_Ind: return SbmDbDfn.ColumnIdx.Unknown;
|
||||
//------------------------------------------------------------------- Association's owner details
|
||||
case SbmAssociation.Column.AffIdOwner: return SbmDbDfn.ColumnIdx.Unknown;
|
||||
case SbmAssociation.Column.Owner_Name: return SbmDbDfn.ColumnIdx.Unknown;
|
||||
case SbmAssociation.Column.AffIdOwner: return SbmDbDfn.ColumnIdx.Association_AffIdOwner;
|
||||
case SbmAssociation.Column.Owner_Name: return SbmDbDfn.ColumnIdx.Affiliate_Name;
|
||||
//------------------------------------------------------------------- Association's target details
|
||||
case SbmAssociation.Column.AffIdTarget: return SbmDbDfn.ColumnIdx.Unknown;
|
||||
case SbmAssociation.Column.AffIdTarget: return SbmDbDfn.ColumnIdx.Association_AffIdTarget;
|
||||
case SbmAssociation.Column.Target_Type: return SbmDbDfn.ColumnIdx.Affiliate_Type;
|
||||
case SbmAssociation.Column.Target_TypeDesc: return SbmDbDfn.ColumnIdx.Unknown;
|
||||
case SbmAssociation.Column.Target_TypeDesc: return SbmDbDfn.ColumnIdx.Affiliate_Name;
|
||||
case SbmAssociation.Column.Target_Name: return SbmDbDfn.ColumnIdx.Affiliate_Name;
|
||||
case SbmAssociation.Column.Target_Nature: return SbmDbDfn.ColumnIdx.Affiliate_Nature;
|
||||
case SbmAssociation.Column.Target_PhoneMain: return SbmDbDfn.ColumnIdx.Affiliate_PhoneMain;
|
||||
@@ -810,7 +810,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
//-----------------------------------------------------------
|
||||
// Target details.
|
||||
case SbmAssociation.Column.AffIdTarget:
|
||||
SetAssociationColDfn(columnDfn, "Target Id", 60, SbmDbDfn.ColumnIdx.Association_AffIdOwner, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
SetAssociationColDfn(columnDfn, "Target Id", 60, SbmDbDfn.ColumnIdx.Association_AffIdTarget, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
break;
|
||||
case SbmAssociation.Column.Target_Type:
|
||||
SetAssociationColDfn(columnDfn, "Type", 40, SbmDbDfn.ColumnIdx.Affiliate_Type, ColumnAlignment.Center, DataValue.DataType.Long, aliasAssociation_Affiliate_Target, prefixAssociation_Affiliate_Target);
|
||||
@@ -1732,7 +1732,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
private long GetAssociationCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association) + " As " + aliasAssociation, filter);
|
||||
return Database.GetRowCount($"{SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association)} As {aliasAssociation}", filter);
|
||||
}
|
||||
public override long GetAssociationCount(SbmAssociation.Params prm)
|
||||
{
|
||||
@@ -1938,33 +1938,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Website);
|
||||
if (!hasColsAffTarget) hasColsAffTarget = columns.HasId(SbmAssociation.Column.Target_Notes);
|
||||
|
||||
bool hasColsAffTargetAddress = false;
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Type) || columns.HasId(SbmAssociation.Column.Target_Address_TypeDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_RefExt);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Name);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_DescBrief);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Summary);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Line1);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Line2);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_City);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Province);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Postcode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Country);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Contact);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Phone);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Email);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_LastVisitOn);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_NextVisitOn);
|
||||
|
||||
if (hasColsAffTarget || hasColsAffTargetAddress)
|
||||
if (hasColsAffTarget)
|
||||
{
|
||||
// Join to the target affiliate - NB Use an alias to avoid clashing with the owner affiliate.
|
||||
prm.Alias_Affiliate_Target = aliasAssociation_Affiliate_Target;
|
||||
@@ -1995,96 +1969,122 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
|
||||
affiliateTargetCols.Add(SbmDbDfn.ColumnIdx.Affiliate_Notes);
|
||||
foreach (SbmDbDfn.ColumnIdx dbColumn in affiliateTargetCols)
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Affiliate_Target), prefixAssociation_Affiliate_Target + SbmDbDfn.GetColumnName(dbColumn, false));
|
||||
|
||||
// Target affiliate address columns.
|
||||
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.
|
||||
if (prm.AddressContext == SbmAssociation.Params.AddressContextType.All)
|
||||
{
|
||||
// Return all addresses for target contact - as separate rows, eg. for export.
|
||||
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAssociation_Target_Address) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
||||
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAssociation_Target_Address) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sub-query to identify primary address with lowest Id for each affiliate.
|
||||
DbQuery qryAddPrimMinId = new DbQuery(Database.DbmsType);
|
||||
qryAddPrimMinId.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address));
|
||||
qryAddPrimMinId.Filters.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemType) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
||||
if (prm.AddressContext == SbmAssociation.Params.AddressContextType.Delivery)
|
||||
qryAddPrimMinId.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Type) + "=" + ((int)Sbm.AddressType.Delivery).ToString());
|
||||
else
|
||||
qryAddPrimMinId.Filters.Add(DbQuery.BuildBitMappedFilter(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_Flags), SbmAddress.Flag_Primary, true));
|
||||
qryAddPrimMinId.Columns.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemType));
|
||||
qryAddPrimMinId.Columns.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemId));
|
||||
qryAddPrimMinId.Columns.Add("Min(" + SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_Id) + ")", SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_Id, false));
|
||||
qryAddPrimMinId.GroupBy.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemType));
|
||||
qryAddPrimMinId.GroupBy.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_ItemId));
|
||||
|
||||
// Join to target contact's primary address with lowest Id.
|
||||
String aliasAddressMinId = "AssAddMinId";
|
||||
DbQueryJoin joinAddPrimId = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinAddPrimId.Table = new StringPair("(" + qryAddPrimMinId.BuildQuery() + ")", aliasAddressMinId);
|
||||
joinAddPrimId.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddressMinId) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
||||
joinAddPrimId.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddressMinId) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target));
|
||||
query.Joins.Add(joinAddPrimId);
|
||||
|
||||
// Join to target address with lowest Id.
|
||||
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAssociation_Target_Address) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddressMinId));
|
||||
}
|
||||
query.Joins.Add(joinTargetAddress);
|
||||
// Add the address columns.
|
||||
List<SbmDbDfn.ColumnIdx> addressTargetCols = new List<SbmDbDfn.ColumnIdx>();
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Type) || columns.HasId(SbmAssociation.Column.Target_Address_TypeDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Type);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_RefExt))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_RefExt);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Name))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Name);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_DescBrief))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_DescBrief);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line1))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line1);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line2))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line2);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line3))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line3);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_City))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_City);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Province))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Province);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Postcode))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Postcode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Country))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Country);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Contact))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Contact);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Phone))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Phone);
|
||||
//addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Fax));
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Email))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Email);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerCode) || columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_AccountManagerCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerCode) || columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_AccountHandlerCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaCode) || columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_ContactAreaCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerCode) || columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_ContactHandlerCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_LastVisitOn))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_LastVisitOn);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_NextVisitOn))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_NextVisitOn);
|
||||
foreach (SbmDbDfn.ColumnIdx dbColumn in addressTargetCols)
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Target_Address), prefixAssociation_Target_Address + SbmDbDfn.GetColumnName(dbColumn, false));
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Target address.
|
||||
|
||||
bool hasColsAffTargetAddress = false;
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Type) || columns.HasId(SbmAssociation.Column.Target_Address_TypeDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_RefExt);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Name);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_DescBrief);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Summary);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Line1);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Line2);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_City);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Province);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Postcode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Country);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Contact);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Phone);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_Email);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerCode);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerDesc);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_LastVisitOn);
|
||||
if (!hasColsAffTargetAddress) hasColsAffTargetAddress = columns.HasId(SbmAssociation.Column.Target_Address_NextVisitOn);
|
||||
|
||||
// Target affiliate address columns.
|
||||
if (hasColsAffTargetAddress)
|
||||
{
|
||||
// Join to the target's address(es).
|
||||
prm.Alias_Address_Target = aliasAssociation_Target_Address;
|
||||
DbQueryJoin joinTargetAddress = null;
|
||||
// Address context.
|
||||
if (prm.AddressContext == SbmAssociation.Params.AddressContextType.All)
|
||||
{
|
||||
// Return all addresses for target contact - as separate rows, eg. for export.
|
||||
joinTargetAddress = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinTargetAddress.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAssociation_Target_Address);
|
||||
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAssociation_Target_Address) + "=" + ((int)Sbm.ItemType.Affiliate).ToString());
|
||||
joinTargetAddress.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAssociation_Target_Address) + "=" + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sub-query to identify suitable address for the Association.
|
||||
String aliasAddrSub = "addrSub";
|
||||
DbQuery qryAddrSub = new DbQuery(Database.DbmsType);
|
||||
qryAddrSub.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Address), aliasAddrSub);
|
||||
qryAddrSub.Columns.Add($"Top 1 *");
|
||||
qryAddrSub.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemType, aliasAddrSub)}={(int)Sbm.ItemType.Affiliate}");
|
||||
qryAddrSub.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_ItemId, aliasAddrSub)}={SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Id, aliasAssociation_Affiliate_Target)}");
|
||||
if (prm.AddressContext == SbmAssociation.Params.AddressContextType.Delivery)
|
||||
qryAddrSub.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Type, aliasAddrSub)}={(int)Sbm.AddressType.Delivery}");
|
||||
qryAddrSub.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Status, aliasAddrSub)}!='{StatusDeleted}'");
|
||||
// Prioritise Primary, Office and lower Id.
|
||||
String colAddrPrimaryFlag = DbQuery.BuildBitMappedValue($"{aliasAddrSub}.{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Address_Flags)}", SbmAddress.Flag_Primary, true);
|
||||
qryAddrSub.OrderBy.Add($"{colAddrPrimaryFlag} Desc");
|
||||
qryAddrSub.OrderBy.Add($"Case When {SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Type, aliasAddrSub)}={(int)Sbm.AddressType.Office} Then 0 Else 1 End");
|
||||
qryAddrSub.OrderBy.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Address_Id, aliasAddrSub)}");
|
||||
|
||||
// Join to target address with lowest Id.
|
||||
joinTargetAddress = new DbQueryJoin(DbJoinType.OuterApply);
|
||||
joinTargetAddress.Table = new StringPair($"({qryAddrSub.BuildQuery()})", aliasAssociation_Target_Address);
|
||||
}
|
||||
query.Joins.Add(joinTargetAddress);
|
||||
// Add the address columns.
|
||||
List<SbmDbDfn.ColumnIdx> addressTargetCols = new List<SbmDbDfn.ColumnIdx>();
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Type) || columns.HasId(SbmAssociation.Column.Target_Address_TypeDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Type);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_RefExt))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_RefExt);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Name))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Name);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_DescBrief))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_DescBrief);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line1))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line1);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line2))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line2);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Line3))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Line3);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_City))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_City);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Province))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Province);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Postcode))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Postcode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Country))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Country);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Contact))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Contact);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Phone))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Phone);
|
||||
//addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Fax));
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_Summary) || columns.HasId(SbmAssociation.Column.Target_Address_Email))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_Email);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerCode) || columns.HasId(SbmAssociation.Column.Target_Address_AccountManagerDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_AccountManagerCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerCode) || columns.HasId(SbmAssociation.Column.Target_Address_AccountHandlerDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_AccountHandlerCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaCode) || columns.HasId(SbmAssociation.Column.Target_Address_ContactAreaDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_ContactAreaCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerCode) || columns.HasId(SbmAssociation.Column.Target_Address_ContactHandlerDesc))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_ContactHandlerCode);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_LastVisitOn))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_LastVisitOn);
|
||||
if (columns.HasId(SbmAssociation.Column.Target_Address_NextVisitOn))
|
||||
addressTargetCols.Add(SbmDbDfn.ColumnIdx.Address_NextVisitOn);
|
||||
foreach (SbmDbDfn.ColumnIdx dbColumn in addressTargetCols)
|
||||
query.Columns.Add(SbmDbDfn.GetColumnNameQual(dbColumn, aliasAssociation_Target_Address), prefixAssociation_Target_Address + SbmDbDfn.GetColumnName(dbColumn, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Member columns
|
||||
bool hasColsMember = false;
|
||||
|
||||
Reference in New Issue
Block a user