Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_UserAccount.cs
T
2024-11-19 09:47:00 +00:00

226 lines
9.7 KiB
C#

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;
//-----------------------------------------------------------
default:
value = values.GetValue(column.DataName);
break;
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}