Portal signin via Control Instance

This commit is contained in:
Andy Howard
2024-10-29 08:40:47 +00:00
parent bf6bb966bc
commit c5ee285e27
467 changed files with 25771 additions and 3347 deletions
@@ -0,0 +1,76 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
public class SbmInternals_Control : SacsDisposable
{
//-------------------------------------------------------------------
// Data members.
private readonly SbmSystem system = SbmGlobals.System;
private class MgrData
{
public SbmcAccountMgr controlAccountMgr;
public SbmcInstanceMgr controlInstanceMgr;
public SbmcItemMgr controlItemMgr;
}
private MgrData mgr { get; } = new MgrData();
//-------------------------------------------------------------------
// Construction.
public SbmInternals_Control()
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (mgr.controlAccountMgr != null) mgr.controlAccountMgr.Dispose();
if (mgr.controlInstanceMgr != null) mgr.controlInstanceMgr.Dispose();
if (mgr.controlItemMgr != null) mgr.controlItemMgr.Dispose();
}
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
// Control managers.
public SbmcAccountMgr ControlAccountMgr
{
get
{
if (mgr.controlAccountMgr == null)
mgr.controlAccountMgr = system.CreateControlAccountMgr();
return mgr.controlAccountMgr;
}
}
public SbmcInstanceMgr ControlInstanceMgr
{
get
{
if (mgr.controlInstanceMgr == null)
mgr.controlInstanceMgr = system.CreateControlInstanceMgr();
return mgr.controlInstanceMgr;
}
}
public SbmcItemMgr ControlItemMgr
{
get
{
if (mgr.controlItemMgr == null)
mgr.controlItemMgr = system.CreateControlItemMgr();
return mgr.controlItemMgr;
}
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,33 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Core;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
public abstract partial class SbmcAccountMgr : SbmcControlMgr
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
protected SbmcAccountMgr() : base()
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,220 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
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;
using System.Net.Mail;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
partial class SbmcAccountMgr
{
//-------------------------------------------------------------------
// Retrieve individual userAccounts.
//-------------------------------------------------------------------
// UserAccount exists.
public bool UserAccountExistsById(SysId userAccountId)
{
ClearErrorState();
if (!SysId.IsValid(userAccountId)) return false;
SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params();
prmUserAccount.IdsIncluded.Add(userAccountId);
prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any;
return GetUserAccountCount(prmUserAccount) == 1;
}
public bool UserAccountExistsByUserId(SysId userAccountIdOwner)
{
ClearErrorState();
if (!SysId.IsValid(userAccountIdOwner)) return false;
SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params();
prmUserAccount.IdsIncluded.Add(userAccountIdOwner);
prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any;
return GetUserAccountCount(prmUserAccount) == 1;
}
public bool OrganisationExistsByName(String organisationName, SysId userAccountIdExclude)
{
ClearErrorState();
if (!StringUtil.IsEmpty(organisationName) || !SysId.IsValid(userAccountIdExclude)) return false;
SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params();
prmUserAccount.Name = organisationName;
prmUserAccount.IdsExcluded.Add(userAccountIdExclude);
prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any;
return GetUserAccountCount(prmUserAccount) == 1;
}
public bool IndividualExistsByName(String firstName, String lastName, SysId userAccountIdExclude)
{
ClearErrorState();
if (!StringUtil.IsEmpty(firstName) || !StringUtil.IsEmpty(lastName) || !SysId.IsValid(userAccountIdExclude)) return false;
SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params();
prmUserAccount.Name = firstName;
prmUserAccount.Name = lastName;
prmUserAccount.IdsExcluded.Add(userAccountIdExclude);
prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any;
return GetUserAccountCount(prmUserAccount) == 1;
}
//-------------------------------------------------------------------
// Get UserAccount.
public abstract SbmcUserAccount GetUserAccount(SbmcUserAccount.Params prm);
public SbmcUserAccount GetUserAccountById(SysId userAccountId)
{
ClearErrorState();
if (!SysId.IsValid(userAccountId)) return null;
SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params();
prmUserAccount.IdsIncluded.Add(userAccountId);
prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any;
return GetUserAccount(prmUserAccount);
}
public SbmcUserAccount GetUserAccountByEmailAddress(String emailAddress)
{
ClearErrorState();
if (StringUtil.IsBlank(emailAddress)) return null;
SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params();
prmUserAccount.EmailAddress = emailAddress;
prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any;
return GetUserAccount(prmUserAccount);
}
//-------------------------------------------------------------------
// Create UserAccount.
public abstract SbmcUserAccount CreateUserAccount();
//-------------------------------------------------------------------
// Validate UserAccount data.
public bool IsValidUserAccount(SbmcUserAccount userAccount)
{
ClearErrorState();
if (userAccount == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidUserAccountData(userAccount.GetData(), new SbmcUserAccount.ErrField());
}
public virtual bool IsValidUserAccountData(SbmcUserAccount.Data data, SbmcUserAccount.ErrField errField)
{
// UserAccount properties.
ClearErrorState();
if (data == null) return SetErrorState("item not specified");
// Name.
if (errField.Title != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Title, "title", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_Title)))
{
errField.Title = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.FirstName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FirstName, "first name", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_FirstName)))
{
errField.FirstName = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Initials != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Initials, "initials", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_Initials)))
{
errField.Initials = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.LastName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.LastName, "last name", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_LastName), true))
{
errField.LastName = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Phone numbers.
if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone number", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneMain)))
{
errField.PhoneMain = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.PhoneMobile != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMobile, "mobile number", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneMobile)))
{
errField.PhoneMobile = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.PhoneAlt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneAlt, "alt number", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneAlt)))
{
errField.PhoneAlt = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
{
if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_Status), true, true))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SbmcUserAccount.ValidStatuses.Contains(data.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
}
return true;
}
//-------------------------------------------------------------------
// UserAccount database interface.
public abstract bool InsertUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo);
public virtual bool UserAccountCanBeDeleted(SbmcUserAccount userAccount)
{
if (userAccount == null) return SetErrorState("item not specified");
//ClearErrorState();
return true;
}
public abstract bool DeleteUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// UserAccount list.
public abstract ColumnDfn GetUserAccountColumnDfn(SbmcUserAccount.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetUserAccountQueryFilter(SbmcUserAccount.Params prm);
public abstract long GetUserAccountCount(SbmcUserAccount.Params prm);
public abstract List<SbmcUserAccount> GetUserAccountList(SbmcUserAccount.Params prm);
public abstract DbResultSet ExecuteUserAccountQuery(List<ColumnDfn> columns, SbmcUserAccount.Params prm);
//-------------------------------------------------------------------
// 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 GetUserAccountDataValue(ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SbmcUserAccount.Column)column.Id)
{
// Notes.
case SbmcUserAccount.Column.Notes:
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
// Status.
case SbmcUserAccount.Column.Status_Desc:
case SbmcUserAccount.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SbmcUserAccount.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SbmcUserAccount.Column.Status_Ind)
value = new DataValue(SbmcUserAccount.GetStatusTriState(status));
}
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,106 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.CodeTypes;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Interfaces;
using Sarand.Net.Standard.Base.ItemDocs;
using Sarand.Net.Standard.Base.ItemOptions;
using Sarand.Net.Standard.Base.ReferenceData;
using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Base.UpdateLog;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
public abstract class SbmcControlMgr : SbmItemMgr
{
//-------------------------------------------------------------------
// Data members.
private SbmInternals_Control internals = null;
//-------------------------------------------------------------------
// Static initialisation.
static SbmcControlMgr()
{
}
//-------------------------------------------------------------------
// Construction.
protected SbmcControlMgr()
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (internals != null) internals.Dispose();
internals = null;
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Properties.
protected SbmInternals_Control Internals_Control { get { if (internals == null) internals = new SbmInternals_Control(); return internals; } }
//-------------------------------------------------------------------
// Control managers.
protected SbmcAccountMgr ControlAccountMgr { get { return Internals_Control.ControlAccountMgr; } }
protected SbmcInstanceMgr ControlInstanceMgr { get { return Internals_Control.ControlInstanceMgr; } }
protected SbmcItemMgr ControlItemMgr { get { return Internals_Control.ControlItemMgr; } }
//-------------------------------------------------------------------
/// <summary>
/// Get suitable display test to identity Control data item.
/// </summary>
/// <param name="itemId"></param>
/// <returns></returns>
public String GetItemCaption(ItemId itemId)
{
if (ItemId.IsValid(itemId))
{
// Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<SacsHierarchyItem> disposables = new DisposableCollection<SacsHierarchyItem>())
{
if (itemId.Type == (short)SbmcHierarchyItem.ItemType.UserAccount)
{
SbmcUserAccount userAccount = ControlAccountMgr.GetUserAccountById(itemId.Id);
disposables.Add(userAccount);
if (userAccount != null)
return userAccount.GetDisplayName();
return $"UserAccount #{itemId.Id}";
}
if (itemId.Type == (short)SbmcHierarchyItem.ItemType.Owner)
{
SbmcOwner owner = ControlInstanceMgr.GetOwnerById(itemId.Id);
disposables.Add(owner);
if (owner != null)
return owner.Name;
return $"Owner #{itemId.Id}";
}
if (itemId.Type == (short)SbmcHierarchyItem.ItemType.Repository)
{
SbmcRepository repository = ControlInstanceMgr.GetRepositoryById(itemId.Id);
disposables.Add(repository);
if (repository != null)
return repository.Context;
return $"Repository #{itemId.Id}";
}
}
}
return "";
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,34 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Core;
using System.Collections.Generic;
using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm.Config;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
public abstract partial class SbmcInstanceMgr : SbmcControlMgr
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
protected SbmcInstanceMgr() : base()
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,170 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
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;
using System.Net.Mail;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
// Control Instance Manager - Owners.
//=======================================================================
partial class SbmcInstanceMgr
{
//-------------------------------------------------------------------
// Owner exists.
public bool OwnerExistsById(SysId ownerId)
{
ClearErrorState();
if (!SysId.IsValid(ownerId)) return false;
SbmcOwner.Params prmOwner = new SbmcOwner.Params();
prmOwner.IdsIncluded.Add(ownerId);
prmOwner.StatusCat = SbmcOwner.StatusCat.Any;
return GetOwnerCount(prmOwner) == 1;
}
//-------------------------------------------------------------------
// Get Owner.
public abstract SbmcOwner GetOwner(SbmcOwner.Params prm);
public SbmcOwner GetOwnerById(SysId ownerId)
{
ClearErrorState();
if (!SysId.IsValid(ownerId)) return null;
SbmcOwner.Params prmOwner = new SbmcOwner.Params();
prmOwner.IdsIncluded.Add(ownerId);
prmOwner.StatusCat = SbmcOwner.StatusCat.Any;
return GetOwner(prmOwner);
}
//-------------------------------------------------------------------
// Create Owner.
public abstract SbmcOwner CreateOwner();
//-------------------------------------------------------------------
// Validate Owner data.
public bool IsValidOwner(SbmcOwner owner)
{
ClearErrorState();
if (owner == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidOwnerData(owner.GetData(), new SbmcOwner.ErrField());
}
public virtual bool IsValidOwnerData(SbmcOwner.Data data, SbmcOwner.ErrField errField)
{
// Owner properties.
ClearErrorState();
if (data == null) return SetErrorState("item not specified");
// Contact.
if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Owner_Name), true))
{
errField.Name = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.ContactName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactName, "contact", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Owner_ContactName)))
{
errField.ContactName = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.ContactEmailAddress != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactEmailAddress, "contact email", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Owner_ContactEmailAddress)))
{
errField.ContactEmailAddress = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.ContactPhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactPhoneMain, "contact phone", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Owner_ContactPhoneMain)))
{
errField.ContactPhoneMain = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.ContactPhoneAlt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactPhoneAlt, "contact alt phone", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Owner_ContactPhoneAlt)))
{
errField.ContactPhoneAlt = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Owner_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
{
if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Owner_Status), true, true))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SbmcOwner.ValidStatuses.Contains(data.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
}
return true;
}
//-------------------------------------------------------------------
// Owner owner interface.
public abstract bool InsertOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo);
public virtual bool OwnerCanBeDeleted(SbmcOwner owner)
{
if (owner == null) return SetErrorState("item not specified");
//ClearErrorState();
return true;
}
public abstract bool DeleteOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Owner list.
public abstract ColumnDfn GetOwnerColumnDfn(SbmcOwner.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetOwnerQueryFilter(SbmcOwner.Params prm);
public abstract long GetOwnerCount(SbmcOwner.Params prm);
public abstract List<SbmcOwner> GetOwnerList(SbmcOwner.Params prm);
public abstract DbResultSet ExecuteOwnerQuery(List<ColumnDfn> columns, SbmcOwner.Params prm);
//-------------------------------------------------------------------
// 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 GetOwnerDataValue(ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SbmcOwner.Column)column.Id)
{
// Notes.
case SbmcOwner.Column.Notes:
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
// Status.
case SbmcOwner.Column.Status_Desc:
case SbmcOwner.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SbmcOwner.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SbmcOwner.Column.Status_Ind)
value = new DataValue(SbmcOwner.GetStatusTriState(status));
}
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,198 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
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;
using System.Net.Mail;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
// Control - Instance Manager - Repositories.
//=======================================================================
partial class SbmcInstanceMgr
{
//-------------------------------------------------------------------
// Repository exists.
public bool RepositoryExistsById(SysId repositoryId)
{
ClearErrorState();
if (!SysId.IsValid(repositoryId)) return false;
SbmcRepository.Params prmRepository = new SbmcRepository.Params();
prmRepository.IdsIncluded.Add(repositoryId);
prmRepository.StatusCat = SbmcRepository.StatusCat.Any;
return GetRepositoryCount(prmRepository) == 1;
}
public bool RepositoryExistsByContext(String context)
{
ClearErrorState();
if (!StringUtil.IsBlank(context)) return false;
SbmcRepository.Params prmRepository = new SbmcRepository.Params();
prmRepository.ContextsIncluded.Add(context);
prmRepository.StatusCat = SbmcRepository.StatusCat.Any;
return GetRepositoryCount(prmRepository) == 1;
}
//-------------------------------------------------------------------
// Get Repository.
public abstract SbmcRepository GetRepository(SbmcRepository.Params prm);
public SbmcRepository GetRepositoryById(SysId repositoryId)
{
ClearErrorState();
if (!SysId.IsValid(repositoryId)) return null;
SbmcRepository.Params prmRepository = new SbmcRepository.Params();
prmRepository.IdsIncluded.Add(repositoryId);
prmRepository.StatusCat = SbmcRepository.StatusCat.Any;
return GetRepository(prmRepository);
}
public SbmcRepository GetRepositoryByContext(String context)
{
ClearErrorState();
if (StringUtil.IsBlank(context)) return null;
SbmcRepository.Params prmRepository = new SbmcRepository.Params();
prmRepository.ContextsIncluded.Add(context);
prmRepository.StatusCat = SbmcRepository.StatusCat.Any;
return GetRepository(prmRepository);
}
//-------------------------------------------------------------------
// Create Repository.
public abstract SbmcRepository CreateRepository();
//-------------------------------------------------------------------
// Validate Repository data.
public bool IsValidRepository(SbmcRepository repository)
{
ClearErrorState();
if (repository == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidRepositoryData(repository.GetData(), new SbmcRepository.ErrField());
}
public virtual bool IsValidRepositoryData(SbmcRepository.Data data, SbmcRepository.ErrField errField)
{
// Repository properties.
ClearErrorState();
if (data == null) return SetErrorState("item not specified");
// Owner.
if (!SysId.IsValid(data.OwnerId)) return SetErrorState("Owner must be specified");
// Repository.
if (errField.Context != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Context, "context", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_Context), true))
{
errField.Context = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.ServerName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ServerName, "server", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_ServerName), true))
{
errField.ServerName = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.InstanceName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InstanceName, "instance", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_InstanceName)))
{
errField.InstanceName = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.DatabaseName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DatabaseName, "database", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_DatabaseName), true))
{
errField.DatabaseName = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Credentials.
if (errField.UserName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.UserName, "user", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_UserName)))
{
errField.UserName = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Password != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Password, "password", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_Password)))
{
errField.Password = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
{
if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_Status), true, true))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SbmcRepository.ValidStatuses.Contains(data.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
}
return true;
}
//-------------------------------------------------------------------
// Repository repository interface.
public abstract bool InsertRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo);
public virtual bool RepositoryCanBeDeleted(SbmcRepository repository)
{
if (repository == null) return SetErrorState("item not specified");
//ClearErrorState();
return true;
}
public abstract bool DeleteRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Repository list.
public abstract ColumnDfn GetRepositoryColumnDfn(SbmcRepository.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetRepositoryQueryFilter(SbmcRepository.Params prm);
public abstract long GetRepositoryCount(SbmcRepository.Params prm);
public abstract List<SbmcRepository> GetRepositoryList(SbmcRepository.Params prm);
public abstract DbResultSet ExecuteRepositoryQuery(List<ColumnDfn> columns, SbmcRepository.Params prm);
//-------------------------------------------------------------------
// 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 GetRepositoryDataValue(ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SbmcRepository.Column)column.Id)
{
// Notes.
case SbmcRepository.Column.Notes:
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
// Status.
case SbmcRepository.Column.Status_Desc:
case SbmcRepository.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SbmcRepository.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SbmcRepository.Column.Status_Ind)
value = new DataValue(SbmcRepository.GetStatusTriState(status));
}
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,33 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Core;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
public abstract partial class SbmcItemMgr : SbmcControlMgr
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
protected SbmcItemMgr() : base()
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,212 @@
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
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;
using System.Net.Mail;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control
{
//=======================================================================
// Control Item Manager - ItemParams.
//=======================================================================
partial class SbmcItemMgr
{
//-------------------------------------------------------------------
// Item exists.
public bool ItemParamExistsById(SysId id)
{
ClearErrorState();
if (!SysId.IsValid(id)) return false;
SbmcItemParam.Params prmItemParam = new SbmcItemParam.Params();
prmItemParam.IdsIncluded.Add(id);
prmItemParam.StatusCat = SbmcItemParam.StatusCat.NotDeleted;
return GetItemParamCount(prmItemParam) == 1;
}
//-------------------------------------------------------------------
// Get item.
public abstract SbmcItemParam GetItemParam(SbmcItemParam.Params prm);
public SbmcItemParam GetItemParamById(SysId id)
{
ClearErrorState();
if (!SysId.IsValid(id)) return null;
SbmcItemParam.Params prmItemParam = new SbmcItemParam.Params();
prmItemParam.IdsIncluded.Add(id);
prmItemParam.StatusCat = SbmcItemParam.StatusCat.NotDeleted;
return GetItemParam(prmItemParam);
}
//-------------------------------------------------------------------
// Create item.
public abstract SbmcItemParam CreateItemParam(ItemId itemId);
//-------------------------------------------------------------------
// Validate item data.
public bool IsValidItemParam(SbmcItemParam itemParam)
{
ClearErrorState();
if (itemParam == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidItemParamData(itemParam.GetData(), new SbmcItemParam.ErrField());
}
public virtual bool IsValidItemParamData(SbmcItemParam.Data data, SbmcItemParam.ErrField errField)
{
// Item properties.
ClearErrorState();
if (data == null) return SetErrorState("item not specified");
// Item.
if (errField.ItemId != SacsHierarchyItem.ValidValue.Ignore)
{
if (!ItemId.IsValid(data.ItemId))
{
errField.Context = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Item Id must be specified");
}
if (!SbmcItemParam.ValidItemTypes.Contains((SbmcHierarchyItem.ItemType)data.ItemId.Type))
{
errField.Context = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Invalid item type specified");
}
}
// Param.
if (errField.Context != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Context, "context", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.ItemParam_Context), true))
{
errField.Context = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.ItemParam_Name), true))
{
errField.Name = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Value != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Value, "contact email", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.ItemParam_Value)))
{
errField.Value = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.ItemParam_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
{
if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.ItemParam_Status), true, true))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SbmcItemParam.ValidStatuses.Contains(data.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
}
return true;
}
//-------------------------------------------------------------------
// Item interface.
public abstract bool InsertItemParam(SbmcItemParam itemParam, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateItemParam(SbmcItemParam itemParam, DbUpdateInfo dbUpdateInfo);
public virtual bool ItemParamCanBeDeleted(SbmcItemParam itemParam)
{
if (itemParam == null) return SetErrorState("item not specified");
//ClearErrorState();
return true;
}
public abstract bool DeleteItemParam(SbmcItemParam itemParam, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Item list.
public abstract ColumnDfn GetItemParamColumnDfn(SbmcItemParam.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetItemParamQueryFilter(SbmcItemParam.Params prm);
public abstract long GetItemParamCount(SbmcItemParam.Params prm);
public abstract List<SbmcItemParam> GetItemParamList(SbmcItemParam.Params prm);
public abstract DbResultSet ExecuteItemParamQuery(List<ColumnDfn> columns, SbmcItemParam.Params prm);
//-------------------------------------------------------------------
// 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 GetItemParamDataValue(ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SbmcItemParam.Column)column.Id)
{
// Item Type caption.
case SbmcItemParam.Column.ItemType_Caption:
{
short itemTypeValue = (short)values.GetValue(column.DataName).AsLong();
SbmcHierarchyItem.ItemType itemType = (SbmcHierarchyItem.ItemType)itemTypeValue;
value = new DataValue(SbmcHierarchyItem.getItemTypeCaption(itemType));
}
break;
// Item caption.
case SbmcItemParam.Column.Item_Caption:
{
value = new DataValue(values.GetValue(column.DataName).AsString());
if (StringUtil.IsBlank(value.ToString()))
{
short itemType = (short)values.GetValue(GetItemParamColumnDfn(SbmcItemParam.Column.ItemType).DataName).AsLong();
SysId itemId = new SysId(values.GetValue(GetItemParamColumnDfn(SbmcItemParam.Column.ItemId).DataName).AsLong());
value = new DataValue($"[{GetItemCaption(new ItemId(itemType, itemId))}]");
}
}
break;
// Value.
case SbmcItemParam.Column.Value:
String paramContext = values.GetValue(GetItemParamColumnDfn(SbmcItemParam.Column.Context).DataName).AsString();
String paramName = values.GetValue(GetItemParamColumnDfn(SbmcItemParam.Column.Name).DataName).AsString();
ushort paramFlags = (ushort)values.GetValue(GetItemParamColumnDfn(SbmcItemParam.Column.Flags).DataName).AsLong();
if (SbmcItemParam.IsPasswordValue(paramContext, paramName, paramFlags))
value = new DataValue("******");
else value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
// Notes.
case SbmcItemParam.Column.Notes:
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
// Status.
case SbmcItemParam.Column.Status_Desc:
case SbmcItemParam.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SbmcItemParam.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SbmcItemParam.Column.Status_Ind)
value = new DataValue(SbmcItemParam.GetStatusTriState(status));
}
break;
default:
value = new DataValue(column.FormatValue(values));
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}