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 GetUserAccountQueryFilter(SbmcUserAccount.Params prm); public abstract long GetUserAccountCount(SbmcUserAccount.Params prm); public abstract List GetUserAccountList(SbmcUserAccount.Params prm); public abstract DbResultSet ExecuteUserAccountQuery(List columns, SbmcUserAccount.Params prm); //------------------------------------------------------------------- // D a t a V a l u e s //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. /// Where response is an invalid data value, format value using column.FormatValue(values). /// 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; } //------------------------------------------------------------------- } //======================================================================= }