791 lines
24 KiB
C#
791 lines
24 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
|
|
{
|
|
//=======================================================================
|
|
public abstract class SbmAffiliate : SbmHierarchyItem
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Columns.
|
|
public enum Column
|
|
{
|
|
Hidden,
|
|
Pos,
|
|
Id,
|
|
// Affiliate.
|
|
Type_Desc,
|
|
Name,
|
|
Abbrev,
|
|
Title,
|
|
Initials,
|
|
LastName,
|
|
FirstName,
|
|
Salutation,
|
|
Nature,
|
|
CompanyNo,
|
|
VatReg,
|
|
Contact,
|
|
PhoneMain,
|
|
PhoneDirect,
|
|
PhoneAlt,
|
|
PhoneMobile,
|
|
PhoneFax,
|
|
Email,
|
|
Website,
|
|
// Address.
|
|
Address_Summary,
|
|
Address_Line1,
|
|
Address_Line2,
|
|
Address_Line3,
|
|
Address_City,
|
|
Address_Province,
|
|
Address_Postcode,
|
|
Address_Country,
|
|
ProspectGroup,
|
|
GroupMembers,
|
|
// Common properties.
|
|
Notes,
|
|
Flag,
|
|
Status,
|
|
Status_Ind,
|
|
Status_Desc,
|
|
CreateOn_Date,
|
|
UpdateOn_Date,
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
/// <summary>Properties other than common.</summary>
|
|
public class DataProperties
|
|
{
|
|
public Sbm.AffiliateType AffiliateType { get; set; } = Sbm.AffiliateType.Unknown;
|
|
public String PhoneMain { get; set; } = "";
|
|
public String PhoneAlt { get; set; } = "";
|
|
public String PhoneFax { get; set; } = "";
|
|
public String Email { get; set; } = "";
|
|
public String Website { get; set; } = "";
|
|
// Ogranisation.
|
|
public SysId AffiliateIdParent { get; set; } = new SysId();
|
|
public String Name { get; set; } = "";
|
|
public String Abbr { get; set; } = "";
|
|
public String Nature { get; set; } = "";
|
|
public String Contact { get; set; } = "";
|
|
public String CompanyNo { get; set; } = "";
|
|
public String VatReg { get; set; } = "";
|
|
public String PhoneDirect { get; set; } = "";
|
|
// Individual.
|
|
public String Title { get; set; } = "";
|
|
public String Initials { get; set; } = "";
|
|
public String LastName { get; set; } = "";
|
|
public String FirstName { get; set; } = "";
|
|
public String Salutation { get; set; } = "";
|
|
public String PhoneMobile { get; set; } = "";
|
|
public byte BirthDay { get; set; } = 0;
|
|
public byte BirthMonth { get; set; } = 0;
|
|
public short BirthYear { get; set; } = 0;
|
|
public String MaritalStatus { get; set; } = "";
|
|
public String Spouse { get; set; } = "";
|
|
public String Children { get; set; } = "";
|
|
public String Hometown { get; set; } = "";
|
|
public SysId UserId { get; set; } = new SysId();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data.
|
|
public new class Data : SacsHierarchyItem.Data
|
|
{
|
|
// Data members.
|
|
private readonly DataProperties data = new DataProperties();
|
|
// Construction.
|
|
public Data()
|
|
{
|
|
//Status = SbmAccountMgr.AffiliateStatusDefault;
|
|
}
|
|
public Sbm.AffiliateType AffiliateType
|
|
{
|
|
get { return data.AffiliateType; }
|
|
set { CheckChanged((int)data.AffiliateType, (int)value); data.AffiliateType = value; }
|
|
}
|
|
public String PhoneMain
|
|
{
|
|
get { return data.PhoneMain; }
|
|
set { CheckChanged(data.PhoneMain, value); data.PhoneMain = value; }
|
|
}
|
|
public String PhoneAlt
|
|
{
|
|
get { return data.PhoneAlt; }
|
|
set { CheckChanged(data.PhoneAlt, value); data.PhoneAlt = value; }
|
|
}
|
|
public String PhoneFax
|
|
{
|
|
get { return data.PhoneFax; }
|
|
set { CheckChanged(data.PhoneFax, value); data.PhoneFax = value; }
|
|
}
|
|
public String Email
|
|
{
|
|
get { return data.Email; }
|
|
set { CheckChanged(data.Email, value); data.Email = value; }
|
|
}
|
|
public String Website
|
|
{
|
|
get { return data.Website; }
|
|
set { CheckChanged(data.Website, value); data.Website = value; }
|
|
}
|
|
// Ogranisation.
|
|
public SysId AffiliateIdParent
|
|
{
|
|
get { return data.AffiliateIdParent; }
|
|
set { CheckChanged(data.AffiliateIdParent, value); data.AffiliateIdParent = value; }
|
|
}
|
|
public String Name
|
|
{
|
|
get { return data.Name; }
|
|
set { CheckChanged(data.Name, value); data.Name = value; }
|
|
}
|
|
public String Abbr
|
|
{
|
|
get { return data.Abbr; }
|
|
set { CheckChanged(data.Abbr, value); data.Abbr = value; }
|
|
}
|
|
public String Nature
|
|
{
|
|
get { return data.Nature; }
|
|
set { CheckChanged(data.Nature, value); data.Nature = value; }
|
|
}
|
|
public String Contact
|
|
{
|
|
get { return data.Contact; }
|
|
set { CheckChanged(data.Contact, value); data.Contact = value; }
|
|
}
|
|
public String CompanyNo
|
|
{
|
|
get { return data.CompanyNo; }
|
|
set { CheckChanged(data.CompanyNo, value); data.CompanyNo = value; }
|
|
}
|
|
public String VatReg
|
|
{
|
|
get { return data.VatReg; }
|
|
set { CheckChanged(data.VatReg, value); data.VatReg = value; }
|
|
}
|
|
public String PhoneDirect
|
|
{
|
|
get { return data.PhoneDirect; }
|
|
set { CheckChanged(data.PhoneDirect, value); data.PhoneDirect = value; }
|
|
}
|
|
// Individual.
|
|
public String Title
|
|
{
|
|
get { return data.Title; }
|
|
set { CheckChanged(data.Title, value); data.Title = value; }
|
|
}
|
|
public String Initials
|
|
{
|
|
get { return data.Initials; }
|
|
set { CheckChanged(data.Initials, value); data.Initials = value; }
|
|
}
|
|
public String LastName
|
|
{
|
|
get { return data.LastName; }
|
|
set { CheckChanged(data.LastName, value); data.LastName = value; }
|
|
}
|
|
public String FirstName
|
|
{
|
|
get { return data.FirstName; }
|
|
set { CheckChanged(data.FirstName, value); data.FirstName = value; }
|
|
}
|
|
public String Salutation
|
|
{
|
|
get { return data.Salutation; }
|
|
set { CheckChanged(data.Salutation, value); data.Salutation = value; }
|
|
}
|
|
public String PhoneMobile
|
|
{
|
|
get { return data.PhoneMobile; }
|
|
set { CheckChanged(data.PhoneMobile, value); data.PhoneMobile = value; }
|
|
}
|
|
public byte BirthDay
|
|
{
|
|
get { return data.BirthDay; }
|
|
set { CheckChanged(data.BirthDay, value); data.BirthDay = value; }
|
|
}
|
|
public byte BirthMonth
|
|
{
|
|
get { return data.BirthMonth; }
|
|
set { CheckChanged(data.BirthMonth, value); data.BirthMonth = value; }
|
|
}
|
|
public short BirthYear
|
|
{
|
|
get { return data.BirthYear; }
|
|
set { CheckChanged(data.BirthYear, value); data.BirthYear = value; }
|
|
}
|
|
public String MaritalStatus
|
|
{
|
|
get { return data.MaritalStatus; }
|
|
set { CheckChanged(data.MaritalStatus, value); data.MaritalStatus = value; }
|
|
}
|
|
public String Spouse
|
|
{
|
|
get { return data.Spouse; }
|
|
set { CheckChanged(data.Spouse, value); data.Spouse = value; }
|
|
}
|
|
public String Children
|
|
{
|
|
get { return data.Children; }
|
|
set { CheckChanged(data.Children, value); data.Children = value; }
|
|
}
|
|
public String Hometown
|
|
{
|
|
get { return data.Hometown; }
|
|
set { CheckChanged(data.Hometown, value); data.Hometown = value; }
|
|
}
|
|
public SysId UserId
|
|
{
|
|
get { return data.UserId; }
|
|
set { CheckChanged(data.UserId, value); data.UserId = value; }
|
|
}
|
|
|
|
internal void PopulateFrom(Data data)
|
|
{
|
|
AffiliateType = data.AffiliateType;
|
|
PhoneMain = data.PhoneMain;
|
|
PhoneAlt = data.PhoneAlt;
|
|
PhoneFax = data.PhoneFax;
|
|
Email = data.Email;
|
|
Website = data.Website;
|
|
// Ogranisation
|
|
AffiliateIdParent = data.AffiliateIdParent;
|
|
Name = data.Name;
|
|
Abbr = data.Abbr;
|
|
Nature = data.Nature;
|
|
Contact = data.Contact;
|
|
CompanyNo = data.CompanyNo;
|
|
VatReg = data.VatReg;
|
|
PhoneDirect = data.PhoneDirect;
|
|
// Individual.
|
|
Title = data.Title;
|
|
Initials = data.Initials;
|
|
LastName = data.LastName;
|
|
FirstName = data.FirstName;
|
|
Salutation = data.Salutation;
|
|
PhoneMobile = data.PhoneMobile;
|
|
BirthDay = data.BirthDay;
|
|
BirthMonth = data.BirthMonth;
|
|
BirthYear = data.BirthYear;
|
|
MaritalStatus = data.MaritalStatus;
|
|
Spouse = data.Spouse;
|
|
Children = data.Children;
|
|
Hometown = data.Hometown;
|
|
UserId = data.UserId;
|
|
base.PopulateFrom(data);
|
|
}
|
|
public Data Clone()
|
|
{
|
|
Data data = new Data();
|
|
data.PopulateFrom(this);
|
|
return data;
|
|
}
|
|
}
|
|
public new class ErrField : SacsHierarchyItem.ErrField
|
|
{
|
|
// Identifies the field that has invalid data.
|
|
public ValidValue Type { get; set; } = ValidValue.Valid;
|
|
public ValidValue PhoneMain { get; set; } = ValidValue.Valid;
|
|
public ValidValue PhoneAlt { get; set; } = ValidValue.Valid;
|
|
public ValidValue PhoneFax { get; set; } = ValidValue.Valid;
|
|
public ValidValue Email { get; set; } = ValidValue.Valid;
|
|
public ValidValue Website { get; set; } = ValidValue.Valid;
|
|
|
|
public ValidValue AffiliateIdParent { get; set; } = ValidValue.Valid;
|
|
public ValidValue Name { get; set; } = ValidValue.Valid;
|
|
public ValidValue Abbr { get; set; } = ValidValue.Valid;
|
|
public ValidValue Nature { get; set; } = ValidValue.Valid;
|
|
public ValidValue Contact { get; set; } = ValidValue.Valid;
|
|
public ValidValue CompanyNo { get; set; } = ValidValue.Valid;
|
|
public ValidValue VatReg { get; set; } = ValidValue.Valid;
|
|
public ValidValue PhoneDirect { get; set; } = ValidValue.Valid;
|
|
|
|
public ValidValue Title { get; set; } = ValidValue.Valid;
|
|
public ValidValue Initials { get; set; } = ValidValue.Valid;
|
|
public ValidValue LastName { get; set; } = ValidValue.Valid;
|
|
public ValidValue FirstName { get; set; } = ValidValue.Valid;
|
|
public ValidValue Salutation { get; set; } = ValidValue.Valid;
|
|
public ValidValue PhoneMobile { get; set; } = ValidValue.Valid;
|
|
public ValidValue BirthDay { get; set; } = ValidValue.Valid;
|
|
public ValidValue BirthMonth { get; set; } = ValidValue.Valid;
|
|
public ValidValue BirthYear { get; set; } = ValidValue.Valid;
|
|
public ValidValue MaritalStatus { get; set; } = ValidValue.Valid;
|
|
public ValidValue Spouse { get; set; } = ValidValue.Valid;
|
|
public ValidValue Children { get; set; } = ValidValue.Valid;
|
|
public ValidValue Hometown { get; set; } = ValidValue.Valid;
|
|
public ValidValue UserId { get; set; } = ValidValue.Valid;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
private readonly Data data = new Data();
|
|
public static readonly Byte Flag_Prospect = 0x01;
|
|
public static readonly Byte Flag_KeepLoggedIn_Portal = 0x02;
|
|
public static readonly Byte Flag_KeepLoggedIn_Control = 0x03;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
protected SbmAffiliate(SbmUserContext userContext, SysId id, Sbm.AffiliateType affiliateType) : base(userContext, id)
|
|
{
|
|
base.SetData(data);
|
|
AffiliateType = affiliateType;
|
|
Status = DefaultStatus;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Affiliate status.
|
|
private static readonly List<SaStatus> affiliateStatuses = new List<SaStatus>()
|
|
{
|
|
SaStatus.Current,
|
|
SaStatus.OnHold,
|
|
//SaStatus.Inactive,
|
|
//SaStatus.Cancelled,
|
|
SaStatus.Disabled,
|
|
};
|
|
public static SaStatus DefaultStatus { get { return SaStatus.Current; } }
|
|
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(affiliateStatuses); } }
|
|
public static DataValue.TriStateType GetStatusTriState(SaStatus status)
|
|
{
|
|
switch (status)
|
|
{
|
|
case SaStatus.Active:
|
|
/**/
|
|
case SaStatus.Current:
|
|
return DataValue.TriStateType.Green;
|
|
case SaStatus.OnHold:
|
|
return DataValue.TriStateType.Amber;
|
|
case SaStatus.Inactive:
|
|
case SaStatus.Cancelled:
|
|
case SaStatus.Disabled:
|
|
return DataValue.TriStateType.Red;
|
|
case SaStatus.Deleted:
|
|
return DataValue.TriStateType.Purple;
|
|
}
|
|
return DataValue.TriStateType.Unknown;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Utilities - affiliate category.
|
|
public static Sbm.AffiliateCategory GetCategory(Sbm.AffiliateType AffiliateType)
|
|
{
|
|
if (IsIndividual(AffiliateType))
|
|
return Sbm.AffiliateCategory.Individual;
|
|
return Sbm.AffiliateCategory.Organisation;
|
|
}
|
|
public Sbm.AffiliateCategory GetCategory()
|
|
{
|
|
return GetCategory(AffiliateType);
|
|
}
|
|
// Utilities - affiliate type.
|
|
public bool TypeIsValid()
|
|
{
|
|
if (IsIndividual()) return true;
|
|
if (IsCommercial()) return true;
|
|
if (IsSociety()) return true;
|
|
if (IsAcademic()) return true;
|
|
if (IsPublicSector()) return true;
|
|
if (IsCharity()) return true;
|
|
if (IsContactGroup()) return true;
|
|
return false;
|
|
}
|
|
// Utilities - affiliate types' accessor
|
|
public static bool IsIndividual(Sbm.AffiliateType AffiliateType)
|
|
{
|
|
return AffiliateType == Sbm.AffiliateType.Individual;
|
|
}
|
|
public bool IsIndividual()
|
|
{
|
|
return IsIndividual(AffiliateType);
|
|
}
|
|
public bool IsOrganisation()
|
|
{
|
|
return AffiliateType != Sbm.AffiliateType.Individual & AffiliateType != Sbm.AffiliateType.ContactGroup;
|
|
}
|
|
public bool IsCommercial()
|
|
{
|
|
return AffiliateType == Sbm.AffiliateType.Commercial;
|
|
}
|
|
public bool IsSociety()
|
|
{
|
|
return AffiliateType == Sbm.AffiliateType.Society;
|
|
}
|
|
public bool IsAcademic()
|
|
{
|
|
return AffiliateType == Sbm.AffiliateType.Academic;
|
|
}
|
|
public bool IsPublicSector()
|
|
{
|
|
return AffiliateType == Sbm.AffiliateType.PublicSector;
|
|
}
|
|
public bool IsCharity()
|
|
{
|
|
return AffiliateType == Sbm.AffiliateType.Charity;
|
|
}
|
|
public bool IsContactGroup()
|
|
{
|
|
return AffiliateType == Sbm.AffiliateType.ContactGroup;
|
|
}
|
|
// Utilities - email validation.
|
|
public static bool IsValidEmail(String email)
|
|
{
|
|
int count = 0;
|
|
for (int i = 0; i < email.Length; i++)
|
|
{
|
|
char c = email[i];
|
|
if (c >= 'a' && c <= 'z') continue;
|
|
if (c >= 'A' && c <= 'Z') continue;
|
|
if (c >= '0' && c <= '9') continue;
|
|
if (c == '@')
|
|
{
|
|
count++;
|
|
if (count > 1) return false;
|
|
continue;
|
|
}
|
|
if (c == '.') continue;
|
|
if (c == '-') continue;
|
|
if (c == '_') continue;
|
|
// These 'appear' to be valid characters in the email:
|
|
if (c == '+') continue;
|
|
if (c == '=') continue;
|
|
if (c == '!') continue;
|
|
if (c == '#') continue;
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
public Data GetData() { return data.Clone(); }
|
|
public void SetData(Data data)
|
|
{
|
|
String fn = GetType().Name + ".SetData";
|
|
// Properties that cannot be changed if previously specified.
|
|
if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id))
|
|
throw new NotSupportedException(fn + " Id cannot be changed");
|
|
// Populate individual properties to ensure that 'Changed' indicator is kept up to date.
|
|
this.data.PopulateFrom(data);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
public Sbm.AffiliateType AffiliateType
|
|
{
|
|
get { return data.AffiliateType; }
|
|
set { data.AffiliateType = value; }
|
|
}
|
|
public void SetType(Sbm.AffiliateType AffiliateType)
|
|
{
|
|
if (this.AffiliateType == Sbm.AffiliateType.Individual && this.AffiliateType != AffiliateType)
|
|
{
|
|
SaLogger.Debug("Not allowed to change type from Individual.");
|
|
return;
|
|
}
|
|
if (this.AffiliateType != Sbm.AffiliateType.Individual && AffiliateType == Sbm.AffiliateType.Individual)
|
|
{
|
|
SaLogger.Debug("Not allowed to change type to Individual.");
|
|
return;
|
|
}
|
|
if ((int)this.AffiliateType < 1)
|
|
{
|
|
SaLogger.Debug("Invalid type specified.");
|
|
return;
|
|
}
|
|
this.AffiliateType = AffiliateType;
|
|
}
|
|
public String GetIndividualFullName(String affTitle, String first, String last)
|
|
{
|
|
// <Title> <FirstName> <LastName>:
|
|
List<String> Names = new List<string>();
|
|
Names.Add(affTitle);
|
|
Names.Add(first);
|
|
Names.Add(last);
|
|
return Names.Concat(" ", null, null, true, true);
|
|
}
|
|
public String GetFullName()
|
|
{
|
|
if (IsIndividual()) return GetIndividualFullName(Title, FirstName, LastName);
|
|
return Name;
|
|
}
|
|
public static String GetIndividualDisplayName(String firstName, String lastName)
|
|
{
|
|
// <LastName>, <FirstName> for individuals.
|
|
List<String> Names = new List<string>();
|
|
Names.Add(lastName);
|
|
Names.Add(firstName);
|
|
Names.RemoveBlanks();
|
|
return Names.Concat(", ");
|
|
}
|
|
public static String GetDisplayName(Sbm.AffiliateType affiliateType, String name, String firstName, String lastName)
|
|
{
|
|
if (IsIndividual(affiliateType)) return GetIndividualDisplayName(firstName, lastName);
|
|
return name;
|
|
}
|
|
public String GetDisplayName()
|
|
{
|
|
return GetDisplayName(AffiliateType, Name, FirstName, LastName);
|
|
}
|
|
public String PhoneMain
|
|
{
|
|
get { return data.PhoneMain; }
|
|
set { data.PhoneMain = value; }
|
|
}
|
|
public String PhoneAlt
|
|
{
|
|
get { return data.PhoneAlt; }
|
|
set { data.PhoneAlt = value; }
|
|
}
|
|
public String PhoneFax
|
|
{
|
|
get { return data.PhoneFax; }
|
|
set { data.PhoneFax = value; }
|
|
}
|
|
public String Email
|
|
{
|
|
get { return data.Email; }
|
|
set { data.Email = value; }
|
|
}
|
|
public String Website
|
|
{
|
|
get { return data.Website; }
|
|
set { data.Website = value; }
|
|
}
|
|
//-------------------------------------------------------------------
|
|
public SysId AffiliateIdParent
|
|
{
|
|
get { return data.AffiliateIdParent; }
|
|
set { data.AffiliateIdParent = value; }
|
|
}
|
|
public String Name
|
|
{
|
|
get { return data.Name; }
|
|
set { data.Name = value; }
|
|
}
|
|
public void SetName(String name)
|
|
{
|
|
if (IsIndividual())
|
|
{
|
|
name = name.ReplaceAll(",,", ",").ReplaceAll(" ", " ");
|
|
if (name.IndexOf(",", 0) >= 0)
|
|
{
|
|
String[] nameParts = name.Split(',');
|
|
LastName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName));
|
|
FirstName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName));
|
|
}
|
|
else if (name.IndexOf(" ", 0) >= 0)
|
|
{
|
|
String[] nameParts = name.Split(' ');
|
|
FirstName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName));
|
|
LastName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName));
|
|
}
|
|
else LastName = name.TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName));
|
|
}
|
|
}
|
|
public String Abbr
|
|
{
|
|
get { return data.Abbr; }
|
|
set { data.Abbr = value; }
|
|
}
|
|
public String Nature
|
|
{
|
|
get { return data.Nature; }
|
|
set { data.Nature = value; }
|
|
}
|
|
public String Contact
|
|
{
|
|
get { return data.Contact; }
|
|
set { data.Contact = value; }
|
|
}
|
|
public String CompanyNo
|
|
{
|
|
get { return data.CompanyNo; }
|
|
set { data.CompanyNo = value; }
|
|
}
|
|
public String VatReg
|
|
{
|
|
get { return data.VatReg; }
|
|
set { data.VatReg = value; }
|
|
}
|
|
public String PhoneDirect
|
|
{
|
|
get { return data.PhoneDirect; }
|
|
set { data.PhoneDirect = value; }
|
|
}
|
|
//-------------------------------------------------------------------
|
|
public String Title
|
|
{
|
|
get { return data.Title; }
|
|
set { data.Title = value; }
|
|
}
|
|
public String Initials
|
|
{
|
|
get { return data.Initials; }
|
|
set { data.Initials = value; }
|
|
}
|
|
public String LastName
|
|
{
|
|
get { return data.LastName; }
|
|
set { data.LastName = value; }
|
|
}
|
|
public String FirstName
|
|
{
|
|
get { return data.FirstName; }
|
|
set { data.FirstName = value; }
|
|
}
|
|
public String Salutation
|
|
{
|
|
get { return data.Salutation; }
|
|
set { data.Salutation = value; }
|
|
}
|
|
public String PhoneMobile
|
|
{
|
|
get { return data.PhoneMobile; }
|
|
set { data.PhoneMobile = value; }
|
|
}
|
|
public byte BirthDay
|
|
{
|
|
get { return data.BirthDay; }
|
|
set { data.BirthDay = value; }
|
|
}
|
|
public byte BirthMonth
|
|
{
|
|
get { return data.BirthMonth; }
|
|
set { data.BirthMonth = value; }
|
|
}
|
|
public short BirthYear
|
|
{
|
|
get { return data.BirthYear; }
|
|
set { data.BirthYear = value; }
|
|
}
|
|
public String MaritalStatus
|
|
{
|
|
get { return data.MaritalStatus; }
|
|
set { data.MaritalStatus = value; }
|
|
}
|
|
public String Spouse
|
|
{
|
|
get { return data.Spouse; }
|
|
set { data.Spouse = value; }
|
|
}
|
|
public String Children
|
|
{
|
|
get { return data.Children; }
|
|
set { data.Children = value; }
|
|
}
|
|
public String Hometown
|
|
{
|
|
get { return data.Hometown; }
|
|
set { data.Hometown = value; }
|
|
}
|
|
public SysId UserId
|
|
{
|
|
get { return data.UserId; }
|
|
set { data.UserId = value; }
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Flags.
|
|
public bool Prospect
|
|
{
|
|
get { return GetFlag(Flag_Prospect); }
|
|
set { SetFlag(Flag_Prospect, value); }
|
|
}
|
|
public bool KeepLoggedIn_Portal
|
|
{
|
|
get { return GetFlag(Flag_KeepLoggedIn_Portal); }
|
|
set { SetFlag(Flag_KeepLoggedIn_Portal, value); }
|
|
}
|
|
public bool KeepLoggedIn_Control
|
|
{
|
|
get { return GetFlag(Flag_KeepLoggedIn_Control); }
|
|
set { SetFlag(Flag_KeepLoggedIn_Control, value); }
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// A s s o c i a t e d D a t a E l e m e n t s
|
|
//-------------------------------------------------------------------
|
|
// Child affiliates (subordinate organisations):
|
|
public abstract long GetChildAffiliates();
|
|
public abstract bool HasChildAffiliates();
|
|
|
|
// Associated affiliates:
|
|
public abstract long OwnerOfAssociationsCount(Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true);
|
|
public abstract bool OwnerOfAssociations(Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true);
|
|
public abstract long TargetOfAssociationsCount(Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true);
|
|
public abstract bool TargetOfAssociations(Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool currentOnly = true);
|
|
public abstract bool HasSystemUsers();
|
|
public abstract bool HasDiaryLinks();
|
|
// Dependent data should only be cleared when removing an affiliate.
|
|
public abstract bool ClearDependentData();
|
|
|
|
//-------------------------------------------------------------------
|
|
// P a r a m s
|
|
//-------------------------------------------------------------------
|
|
/// <summary>Parameters - used to define the filters that should be applied to a List of Affiliates</summary>
|
|
// List parameters.
|
|
public enum StatusCat
|
|
{
|
|
Any, ActiveOnly,
|
|
}
|
|
/// <summary>
|
|
/// Item list parameters.
|
|
/// </summary>
|
|
public new class Params : SacsHierarchyItem.Params
|
|
{
|
|
// List filtering.
|
|
public List<SysId> IncludedIds { get; } = new List<SysId>();
|
|
public List<SysId> ExcludedIds { get; } = new List<SysId>();
|
|
// Affiliate.
|
|
public Sbm.AffiliateType AffiliateType { get; set; } = Sbm.AffiliateType.Any;
|
|
public SysId AffiliateIdParent { get; set; }
|
|
public SysId UserId { get; set; }
|
|
public String Name { get; set; }
|
|
public String NamePartial { get; set; }
|
|
public String PhonePartial { get; set; }
|
|
public String EmailPartial { get; set; }
|
|
public String PostcodePartial { get; set; }
|
|
public String AddressPartial { get; set; }
|
|
public String NotesPartial { get; set; }
|
|
// Restrict to affiliates with associations with the following.
|
|
public SysId AffiliateIdAssocOwner { get; set; }
|
|
public SysId AffiliateIdAssocTarget { get; set; }
|
|
public SysId AffiliateIdExcludeTargetsOf { get; set; }
|
|
public Sbm.AssociationType AssociationType { get; set; } = Sbm.AssociationType.Any;
|
|
public Sbm.AssociationType AssociationTypeExclude { get; set; } = Sbm.AssociationType.Any;
|
|
public DateTime AssociationEffectiveOn { get; set; } = DateTime.MinValue;
|
|
// Current associations. Default: True [only relevant when association filter specified].
|
|
public bool CurrentAssociationsOnly { get; set; } = true;
|
|
// Supervised associations - in combination with the owner/target above:
|
|
public enum Supervised { Any, Yes, No };
|
|
public Supervised OwnerSupervised { get; set; } = Supervised.Any;
|
|
public Supervised TargetSupervised { get; set; } = Supervised.Any;
|
|
// Interfaces.
|
|
public SysId InterfaceIdExcludeSystemUsers { get; set; }
|
|
/// <summary>Contact status.</summary>
|
|
public StatusCat StatusCat { get; set; } = StatusCat.Any;
|
|
// Utilities.
|
|
public List<StringPair> GetDisplayValues()
|
|
{
|
|
List<StringPair> values = new List<StringPair>();
|
|
return values;
|
|
}
|
|
}
|
|
}
|
|
//=======================================================================
|
|
// A f f i l i a t e D a t a L i s t
|
|
//=======================================================================
|
|
public static class SbmAffiliateList
|
|
{
|
|
}
|
|
//=======================================================================
|
|
}
|