508 lines
24 KiB
C#
508 lines
24 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.App;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
|
{
|
|
//=======================================================================
|
|
// Account manager - Affiliates.
|
|
//=======================================================================
|
|
partial class SbmAccountMgr
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
public abstract String GetAffiliateName(SysId affiliateId);
|
|
public abstract String GetAssociationOwnerName(SysId associationIdOwner);
|
|
public abstract String GetAssociationTargetName(SysId associationIdTarget);
|
|
public static String GetInterfaceContext(SysId affiliateIdOrganisation)
|
|
{
|
|
if (SysId.IsValid(affiliateIdOrganisation))
|
|
return "ORG" + StringUtil.PadLeft(SysId.ToString(affiliateIdOrganisation), 5, '0');
|
|
return "";
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
public void SetAffiliateName(SbmAffiliate affiliate, String name)
|
|
{
|
|
if (affiliate.IsIndividual())
|
|
{
|
|
name = name.ReplaceAll(",,", ",").ReplaceAll(" ", " ");
|
|
if (name.IndexOf(",", 0) >= 0)
|
|
{
|
|
String[] nameParts = name.Split(',');
|
|
affiliate.LastName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName));
|
|
affiliate.FirstName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName));
|
|
}
|
|
else if (name.IndexOf(" ", 0) >= 0)
|
|
{
|
|
String[] nameParts = name.Split(' ');
|
|
affiliate.FirstName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName));
|
|
affiliate.LastName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName));
|
|
}
|
|
else affiliate.LastName = name.TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName));
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Child affiliates (subordinate organisations).
|
|
public abstract long GetChildAffiliateCount(SysId affiliateId);
|
|
public bool AffiliateHasChildAffiliates(SysId affiliateId)
|
|
{
|
|
return GetChildAffiliateCount(affiliateId) > 0;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Associations.
|
|
public abstract bool AffiliateOwnerHasAssociations(SysId affiliateIdOwner, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true);
|
|
public abstract long GetAffiliateOwnerAssociationCount(SysId affiliateIdOwner, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true);
|
|
public abstract bool AffiliateOwnerHasAssociationsWithTarget(SysId affiliateIdOwner, SysId affiliateIdTarget, bool activeOnly = true);
|
|
public abstract long AffiliateOwnerAssociationsWithTargetCount(SysId affiliateIdOwner, SysId affiliateIdTarget, bool activeOnly = true);
|
|
public abstract bool AffiliateTargetHasAssociations(SysId affiliateIdTarget, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true);
|
|
public abstract long GetAffiliateTargetAssociationCount(SysId affiliateIdTarget, Sbm.AssociationType associationType = Sbm.AssociationType.Any, bool activeOnly = true);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Associated data.
|
|
public abstract bool AffiliateHasSystemUsers(SysId affiliateId);
|
|
public abstract bool AffiliateHasDiaryLinks(SysId affiliateId);
|
|
|
|
// Dependent data should only be cleared when removing an affiliate.
|
|
public abstract bool ClearAffiliateDependentData(SysId affiliateId, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Retrieve individual affiliates.
|
|
//-------------------------------------------------------------------
|
|
// Affiliate exists.
|
|
public bool AffiliateExistsById(SysId affiliateId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(affiliateId)) return false;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.IdsIncluded.Add(affiliateId);
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.Any;
|
|
return GetAffiliateCount(prmAffiliate) == 1;
|
|
}
|
|
public bool AffiliateExistsByUserId(SysId affiliateIdOwner)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(affiliateIdOwner)) return false;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.IdsIncluded.Add(affiliateIdOwner);
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.Any;
|
|
return GetAffiliateCount(prmAffiliate) == 1;
|
|
}
|
|
public bool OrganisationExistsByName(String organisationName, SysId affiliateIdExclude)
|
|
{
|
|
ClearErrorState();
|
|
if (!StringUtil.IsEmpty(organisationName) || !SysId.IsValid(affiliateIdExclude)) return false;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.Name = organisationName;
|
|
prmAffiliate.IdsExcluded.Add(affiliateIdExclude);
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.Any;
|
|
return GetAffiliateCount(prmAffiliate) == 1;
|
|
}
|
|
public bool IndividualExistsByName(String firstName, String lastName, SysId affiliateIdExclude)
|
|
{
|
|
ClearErrorState();
|
|
if (!StringUtil.IsEmpty(firstName) || !StringUtil.IsEmpty(lastName) || !SysId.IsValid(affiliateIdExclude)) return false;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.Name = firstName;
|
|
prmAffiliate.Name = lastName;
|
|
prmAffiliate.IdsExcluded.Add(affiliateIdExclude);
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.Any;
|
|
return GetAffiliateCount(prmAffiliate) == 1;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
//Get affiliate.
|
|
public abstract SbmAffiliate GetAffiliate(SbmAffiliate.Params prm);
|
|
|
|
public SbmAffiliate GetAffiliateById(SysId affiliateId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(affiliateId)) return null;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.IdsIncluded.Add(affiliateId);
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.Any;
|
|
return GetAffiliate(prmAffiliate);
|
|
}
|
|
public SbmAffiliate GetAffiliateByUserId(SysId userId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(userId)) return null;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.UserId = userId;
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.NotDeleted;
|
|
return GetAffiliate(prmAffiliate);
|
|
}
|
|
public SbmAffiliate GetAffiliateByTypeName(Sbm.AffiliateType affiliateType, String affiliateName)
|
|
{
|
|
ClearErrorState();
|
|
if (StringUtil.IsBlank(affiliateName)) return null;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.AffiliateType = affiliateType;
|
|
prmAffiliate.Name = affiliateName;
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.NotDeleted;
|
|
prmAffiliate.ResultsPaging.Set(1, 2);
|
|
foreach (SbmAffiliate affiliate in GetAffiliateList(prmAffiliate))
|
|
return affiliate;
|
|
return null;
|
|
}
|
|
public SbmAffiliate GetIndividualByName(String firstName, String lastName)
|
|
{
|
|
ClearErrorState();
|
|
if (StringUtil.IsBlank(firstName) || StringUtil.IsBlank(lastName)) return null;
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.AffiliateType = Sbm.AffiliateType.Individual;
|
|
prmAffiliate.FirstName = firstName;
|
|
prmAffiliate.LastName = lastName;
|
|
prmAffiliate.StatusCat = SbmAffiliate.StatusCat.NotDeleted;
|
|
prmAffiliate.ResultsPaging.Set(1, 2);
|
|
foreach (SbmAffiliate affiliate in GetAffiliateList(prmAffiliate))
|
|
return affiliate;
|
|
return null;
|
|
}
|
|
public SbmAffiliate GetOrganisationByName(String organisationName)
|
|
{
|
|
return GetAffiliateByTypeName(Sbm.AffiliateType.AnyOrganisation, organisationName);
|
|
}
|
|
public SbmAffiliate GetTargetAffiliateByAssocId(SysId associationId)
|
|
{
|
|
ClearErrorState();
|
|
if (!SysId.IsValid(associationId)) return null;
|
|
SbmAssociation association = GetAssociationById(associationId);
|
|
if (association != null)
|
|
return GetAffiliateById(association.AffiliateIdTarget);
|
|
return null;
|
|
}
|
|
public SbmAffiliate GetTargetAffiliateByAssocTypeCode(Sbm.AssociationType associationType, String associationCode)
|
|
{
|
|
ClearErrorState();
|
|
if ((int)associationType < 1 || StringUtil.IsBlank(associationCode)) return null;
|
|
SbmAssociation association = GetAssociationByTypeCode(associationType, associationCode);
|
|
if (association != null)
|
|
return GetAffiliateById(association.AffiliateIdTarget);
|
|
return null;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Create affiliate.
|
|
public abstract SbmAffiliate CreateAffiliate(Sbm.AffiliateType affiliateType);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Validate affiliate data.
|
|
public bool IsValidAffiliate(SbmAffiliate affiliate)
|
|
{
|
|
ClearErrorState();
|
|
if (affiliate == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
|
|
return IsValidAffiliateData(affiliate.GetData(), new SbmAffiliate.ErrField());
|
|
}
|
|
public virtual bool IsValidAffiliateData(SbmAffiliate.Data data, SbmAffiliate.ErrField errField)
|
|
{
|
|
// Affiliate properties.
|
|
ClearErrorState();
|
|
if (data == null) return SetErrorState(ErrorMessage.InvalidStatus);
|
|
// Validate the type:
|
|
if (errField.Type != SacsHierarchyItem.ValidValue.Ignore && (short)data.AffiliateType < 1)
|
|
{
|
|
if ((int)data.AffiliateType < 1)
|
|
{
|
|
errField.Type = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Affiliate type must be supplied");
|
|
}
|
|
}
|
|
// Validate the user id.
|
|
if (!SbmAffiliate.IsIndividual(data.AffiliateType) && SysId.IsValid(data.UserId)) return SetErrorState("only individuals can have user ids");
|
|
if (errField.Abbr != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Abbr, "abbreviation", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Abbrev)))
|
|
{
|
|
errField.Abbr = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
// Validate the affiliate names.
|
|
if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Name), !SbmAffiliate.IsIndividual(data.AffiliateType)))
|
|
{
|
|
errField.Name = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (!SbmAffiliate.IsIndividual(data.AffiliateType) && !data.Title.IsEmpty()) return SetErrorState("only individuals can have a Title");
|
|
if (errField.Title != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Title, "title", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Title)))
|
|
{
|
|
errField.Title = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Initials != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Initials, "initials", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Initials)))
|
|
{
|
|
errField.Initials = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.LastName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.LastName, "last name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName), SbmAffiliate.IsIndividual(data.AffiliateType)))
|
|
{
|
|
errField.LastName = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.FirstName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FirstName, "first name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName)))
|
|
{
|
|
errField.FirstName = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
// Validate the text attributes.
|
|
if (errField.Salutation != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Salutation, "salutation", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Salutation)))
|
|
{
|
|
errField.Salutation = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Nature != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Nature, "nature", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Nature)))
|
|
{
|
|
errField.Nature = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.CompanyNo != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CompanyNo, "company no", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo)))
|
|
{
|
|
errField.CompanyNo = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.VatReg != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.VatReg, "vat no", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_VatReg)))
|
|
{
|
|
errField.Nature = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Contact != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Contact, "contact", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Contact)))
|
|
{
|
|
errField.Contact = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain)))
|
|
{
|
|
errField.PhoneMain = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.PhoneAlt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneAlt, "alt number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt)))
|
|
{
|
|
errField.PhoneAlt = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.PhoneFax != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneFax, "fax number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax)))
|
|
{
|
|
errField.PhoneFax = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.PhoneMobile != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMobile, "mobile number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile)))
|
|
{
|
|
errField.PhoneMobile = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.PhoneDirect != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneDirect, "direct number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneDirect)))
|
|
{
|
|
errField.PhoneDirect = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Email != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Email, "email", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Email)))
|
|
{
|
|
errField.Email = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Website != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Website, "website", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Website)))
|
|
{
|
|
errField.Website = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.BirthDay != SacsHierarchyItem.ValidValue.Ignore && data.BirthDay < 0)
|
|
{
|
|
errField.BirthDay = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Birth day must not be negative");
|
|
}
|
|
if (errField.BirthMonth != SacsHierarchyItem.ValidValue.Ignore && data.BirthMonth < 0)
|
|
{
|
|
errField.BirthMonth = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Birth month must not be negative");
|
|
}
|
|
if (errField.BirthYear != SacsHierarchyItem.ValidValue.Ignore && data.BirthYear < 0)
|
|
{
|
|
errField.BirthYear = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState("Birth year must not be negative");
|
|
}
|
|
if (errField.MaritalStatus != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaritalStatus, "marital status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_MaritalStatus)))
|
|
{
|
|
errField.MaritalStatus = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Spouse != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Spouse, "Partner", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Spouse)))
|
|
{
|
|
errField.Spouse = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Children != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Children, "Children", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Children)))
|
|
{
|
|
errField.Children = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Hometown != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Hometown, "Hometown", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Hometown)))
|
|
{
|
|
errField.Hometown = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
|
|
// Common properties.
|
|
if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Notes)))
|
|
{
|
|
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
|
|
{
|
|
if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Status), true, true))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
}
|
|
if (!SbmAffiliate.ValidStatuses.Contains(data.Status))
|
|
{
|
|
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
|
return SetErrorState(ErrorMessage.InvalidStatus);
|
|
}
|
|
}
|
|
|
|
// Validate associated data.
|
|
if (errField.AffiliateIdParent != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.AffiliateIdParent))
|
|
{
|
|
/* ToDo Validate Affiliate Parent
|
|
errField.AffiliateIdParent = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
*/
|
|
}
|
|
if (errField.UserId != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.UserId))
|
|
{
|
|
/* ToDo Validate Affiliate User
|
|
errField.UserId = SacsHierarchyItem.ValidValue.Invalid;
|
|
return false;
|
|
*/
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Affiliate database interface.
|
|
public abstract bool InsertAffiliate(SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo);
|
|
public abstract bool UpdateAffiliate(SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo);
|
|
public virtual bool AffiliateCanBeDeleted(SbmAffiliate affiliate)
|
|
{
|
|
if (affiliate == null) return SetErrorState(ErrorMessage.InvalidStatus);
|
|
if (AffiliateHasChildAffiliates(affiliate.Id)) return SetErrorState("item has child organisations");
|
|
if (AffiliateOwnerHasAssociations(affiliate.Id, Sbm.AssociationType.Any, false)) return SetErrorState("item own associations");
|
|
if (AffiliateTargetHasAssociations(affiliate.Id, Sbm.AssociationType.Any, false)) return SetErrorState("item is the target of associations");
|
|
if (AffiliateHasDiaryLinks(affiliate.Id)) return SetErrorState("item has diary links");
|
|
//ClearErrorState();
|
|
return true;
|
|
}
|
|
public abstract bool DeleteAffiliate(SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Affiliate list.
|
|
public abstract ColumnDfn GetAffiliateColumnDfn(SbmAffiliate.Column columnId, String caption = "", int width = 0);
|
|
public abstract List<String> GetAffiliateQueryFilter(SbmAffiliate.Params prm);
|
|
public abstract long GetAffiliateCount(SbmAffiliate.Params prm);
|
|
public abstract List<SbmAffiliate> GetAffiliateList(SbmAffiliate.Params prm);
|
|
public abstract DbResultSet ExecuteAffiliateQuery(List<ColumnDfn> columns, SbmAffiliate.Params prm);
|
|
|
|
public bool IsAffiliateSupervisedBy(SysId affiliateIdContact, SysId affiliateIdSupervisor)
|
|
{
|
|
List<SysIdString> affiliateIdNames = new List<SysIdString>();
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.AffiliateIdAssocOwner = affiliateIdContact;
|
|
prmAffiliate.AffiliateIdAssocTarget = affiliateIdSupervisor;
|
|
prmAffiliate.TargetSupervised = SbmAffiliate.Params.Supervised.Yes;
|
|
return GetAffiliateCount(prmAffiliate) > 0;
|
|
}
|
|
|
|
public List<SysIdString> GetAffiliatesSupervisedBy(SysId affiliateIdSupervisor)
|
|
{
|
|
List<SysIdString> affiliateIdNames = new List<SysIdString>();
|
|
SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params();
|
|
prmAffiliate.AffiliateIdAssocTarget = affiliateIdSupervisor;
|
|
prmAffiliate.AssociationType = Sbm.AssociationType.Member;
|
|
prmAffiliate.TargetSupervised = SbmAffiliate.Params.Supervised.Yes;
|
|
foreach (SbmAffiliate affiliate in GetAffiliateList(prmAffiliate))
|
|
affiliateIdNames.Add(affiliate.Id, affiliate.Name);
|
|
return affiliateIdNames;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// D a t a V a l u e s
|
|
//-------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Extract and format result set data value where specific handling is required.
|
|
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
|
|
/// </summary>
|
|
public DataValue GetAffiliateDataValue(ColumnDfn column, NamedValue.Map values)
|
|
{
|
|
DataValue value = new DataValue();
|
|
switch ((SbmAffiliate.Column)column.Id)
|
|
{
|
|
//-----------------------------------------------------------
|
|
// Affiliate type description.
|
|
case SbmAffiliate.Column.Type_Code:
|
|
case SbmAffiliate.Column.Type_Desc:
|
|
{
|
|
Sbm.AffiliateType affiliateType = (Sbm.AffiliateType)values.GetValue(column.DataName).AsLong();
|
|
if (column.Id == (int)SbmAffiliate.Column.Type_Desc)
|
|
value = new DataValue(AffiliateTypes.GetDescForType(affiliateType, affiliateType.ToString()));
|
|
else value = new DataValue(AffiliateTypes.GetCodeForType(affiliateType, affiliateType.ToString()));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Address summary.
|
|
case SbmAffiliate.Column.Address_Summary:
|
|
{
|
|
String line1 = values.GetValue(GetAffiliateColumnDfn(SbmAffiliate.Column.Address_Line1).DataName).AsString();
|
|
String city = values.GetValue(GetAffiliateColumnDfn(SbmAffiliate.Column.Address_City).DataName).AsString();
|
|
String province = values.GetValue(GetAffiliateColumnDfn(SbmAffiliate.Column.Address_Province).DataName).AsString();
|
|
String postcode = values.GetValue(GetAffiliateColumnDfn(SbmAffiliate.Column.Address_Postcode).DataName).AsString();
|
|
String country = values.GetValue(GetAffiliateColumnDfn(SbmAffiliate.Column.Address_Country).DataName).AsString();
|
|
value = new DataValue(SbmAddress.GetSummary(line1, city, province, postcode, country));
|
|
break;
|
|
}
|
|
|
|
//-----------------------------------------------------------
|
|
// Prospect Group.
|
|
case SbmAffiliate.Column.ProspectGroup:
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
// Notes.
|
|
case SbmAffiliate.Column.Notes:
|
|
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
|
break;
|
|
|
|
// Status.
|
|
case SbmAffiliate.Column.Status_Desc:
|
|
case SbmAffiliate.Column.Status_Ind:
|
|
{
|
|
String statusCode = values.GetValue(column.DataName).ToString();
|
|
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
|
if (column.Id == (int)SbmAffiliate.Column.Status_Desc)
|
|
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
|
else if (column.Id == (int)SbmAffiliate.Column.Status_Ind)
|
|
value = new DataValue(SbmAffiliate.GetStatusTriState(status));
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------------------
|
|
default:
|
|
value = values.GetValue(column.DataName);
|
|
break;
|
|
|
|
}
|
|
return value;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|