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 GetOwnerQueryFilter(SbmcOwner.Params prm); public abstract long GetOwnerCount(SbmcOwner.Params prm); public abstract List GetOwnerList(SbmcOwner.Params prm); public abstract DbResultSet ExecuteOwnerQuery(List columns, SbmcOwner.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 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; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } //------------------------------------------------------------------- } //======================================================================= }