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 Saxonite.Base.App; using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Saxonite.Net.Standard.Base.Mgr { //======================================================================= partial class SaxAccountMgr { //******************************************************************* // Account Mgr - User Role //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create item. public abstract SaxUserOrganisation CreateUserOrganisation(SysId userAccountId, SysId OrganisationId); //------------------------------------------------------------------- // Item exists. public bool UserOrganisationExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params(); prmUserOrganisation.IdsIncluded.Add(id); prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.Any; return GetUserOrganisationCount(prmUserOrganisation) == 1; } //------------------------------------------------------------------- // Retrieve individual items. public abstract SaxUserOrganisation GetUserOrganisation(SaxUserOrganisation.Params prmUserOrganisation); public SaxUserOrganisation GetUserOrganisationById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params(); prmUserOrganisation.IdsIncluded.Add(id); prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.Any; return GetUserOrganisation(prmUserOrganisation); } //------------------------------------------------------------------- // Validate item data. public bool IsValidUserOrganisation(SaxUserOrganisation userOrganisation) { ClearErrorState(); if (userOrganisation == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidUserOrganisationData(userOrganisation.GetData(), new SaxUserOrganisation.ErrField()); } public virtual bool IsValidUserOrganisationData(SaxUserOrganisation.Data data, SaxUserOrganisation.ErrField errField) { ClearErrorState(); // User Account. if (errField.UserAccountId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.UserAccountId)) { errField.UserAccountId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("User Account Id must be specified"); } // Organisation. if (errField.OrganisationId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.OrganisationId)) { errField.OrganisationId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Organisation Id must be specified"); } //--------------------------------------------------------------- // Common properties. if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn.GetColTextLen(SaxDbDfn.ColumnIdx.UserOrganisation_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn.GetColTextLen(SaxDbDfn.ColumnIdx.UserOrganisation_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SaxUserOrganisation.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } //--------------------------------------------------------------- // User & Organisation combination must be unique. if (errField.UserAccountId != SacsHierarchyItem.ValidValue.Ignore && errField.OrganisationId != SacsHierarchyItem.ValidValue.Ignore) { if (SysId.IsValid(data.UserAccountId) && SysId.IsValid(data.OrganisationId)) { SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params(); if (SysId.IsValid(data.Id)) prmUserOrganisation.IdsExcluded.Add(data.Id); prmUserOrganisation.UserAccountIdsIncluded.Add(data.UserAccountId); prmUserOrganisation.OrganisationIdsIncluded.Add(data.OrganisationId); prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.Any; if (GetUserOrganisationCount(prmUserOrganisation) > 0) { errField.OrganisationId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Organisation must be unique for user"); } } } return true; } //------------------------------------------------------------------- // Item database interface. public abstract bool InsertUserOrganisation(SaxUserOrganisation userOrganisation, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateUserOrganisation(SaxUserOrganisation userOrganisation, DbUpdateInfo dbUpdateInfo); public virtual bool UserOrganisationCanBeDeleted(SaxUserOrganisation userOrganisation) { ClearErrorState(); return true; } public abstract bool DeleteUserOrganisation(SaxUserOrganisation userOrganisation, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Item list. public abstract ColumnDfn GetUserOrganisationColumnDfn(SaxUserOrganisation.Column columnId, String caption = "", int width = 0); public abstract List GetUserOrganisationQueryFilter(SaxUserOrganisation.Params prmUserOrganisation); public abstract long GetUserOrganisationCount(SaxUserOrganisation.Params prmUserOrganisation); public abstract List GetUserOrganisationList(SaxUserOrganisation.Params prmUserOrganisation); public abstract DbResultSet ExecuteUserOrganisationQuery(List columns, SaxUserOrganisation.Params prmUserOrganisation); //------------------------------------------------------------------- /// /// 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 virtual DataValue GetUserOrganisationDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaxUserOrganisation.Column)column.Id) { //----------------------------------------------------------- // User Display Name. case SaxUserOrganisation.Column.User_DisplayName: { String userTitle = values.GetValue(GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.User_Title).DataName).ToString(); String userFirstName = values.GetValue(GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.User_FirstName).DataName).ToString(); String userLastName = values.GetValue(GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.User_LastName).DataName).ToString(); value = new DataValue(SaxUserAccount.GetDisplayName(userTitle, userFirstName, userLastName)); } break; /* //----------------------------------------------------------- // User Role. case SaxUserOrganisation.Column.UserOrganisation_Desc: { String userOrganisationCode = values.GetValue(column.DataName).ToString(); value = new DataValue(UserOrganisations.GetDescForCode(userOrganisationCode)); } break; */ //----------------------------------------------------------- // Notes. case SaxUserOrganisation.Column.Notes: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Status. case SaxUserOrganisation.Column.Status_Desc: case SaxUserOrganisation.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaxUserOrganisation.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDesc(status)); else if (column.Id == (int)SaxUserOrganisation.Column.Status_Ind) value = new DataValue(SaxUserOrganisation.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }