using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; 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; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { //======================================================================= // Account manager - System Params. //======================================================================= partial class SbmAccountMgr { //------------------------------------------------------------------- // Utilities. //------------------------------------------------------------------- // Retrieve individual sysParam. //------------------------------------------------------------------- // SysParam exists. public bool SysParamExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SbmSysParam.Params prmSysParam = new SbmSysParam.Params(); prmSysParam.IdsIncluded.Add(id); prmSysParam.StatusCat = SbmSysParam.StatusCat.Any; return GetSysParamCount(prmSysParam) == 1; } //------------------------------------------------------------------- // Get sysParam. public abstract SbmSysParam GetSysParam(SbmSysParam.Params prm); public SbmSysParam GetSysParamById(SysId paramId) { ClearErrorState(); if (!SysId.IsValid(paramId)) return null; SbmSysParam.Params prmSysParam = new SbmSysParam.Params(); prmSysParam.IdsIncluded.Add(paramId); prmSysParam.StatusCat = SbmSysParam.StatusCat.Any; return GetSysParam(prmSysParam); } public SbmSysParam GetSysParam(Sbm.SysParamCategory paramCategory, String paramName, SysId affiliateIdOwner, SysId affiliateIdTarget, SysId associationId) { ClearErrorState(); // NB Target affiliate and association are optional. if ((int)paramCategory < 1 || StringUtil.IsEmpty(paramName) || !SysId.IsValid(affiliateIdOwner)) return null; SbmSysParam.Params prmSysParam = new SbmSysParam.Params { Category = paramCategory, Name = paramName }; prmSysParam.AffIdOwner = affiliateIdOwner; prmSysParam.AffIdTarget = affiliateIdTarget; prmSysParam.AssocId = associationId; prmSysParam.StatusCat = SbmSysParam.StatusCat.Any; return GetSysParam(prmSysParam); } //------------------------------------------------------------------- // Create sysParam. public abstract SbmSysParam CreateSysParam(Sbm.SysParamCategory category, String name); //------------------------------------------------------------------- // Validate sysParam data. public bool IsValidSysParam(SbmSysParam sysParam) { ClearErrorState(); if (sysParam == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidSysParamData(sysParam.GetData(), new SbmSysParam.ErrField()); } public virtual bool IsValidSysParamData(SbmSysParam.Data data, SbmSysParam.ErrField errField) { ClearErrorState(); // SysParam properties. if (errField.Category != SacsHierarchyItem.ValidValue.Ignore && (short)data.Category < 1) { errField.Category = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Name), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Value != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Value, "value", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Value), true)) { errField.Value = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmSysParam.SysParamStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } // Validate associated data. if (errField.AffiliateIdOwner != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.AffiliateIdOwner)) { } if (errField.AffiliateIdTarget != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.AffiliateIdTarget)) { } if (errField.AssociationId != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.AssociationId)) { } return true; } //------------------------------------------------------------------- // SysParam database interface. public abstract bool InsertSysParam(SbmSysParam sysParam, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateSysParam(SbmSysParam sysParam, DbUpdateInfo dbUpdateInfo); public virtual bool SysParamCanBeDeleted(SbmSysParam sysParam) { ClearErrorState(); return true; } public abstract bool DeleteSysParam(SbmSysParam sysParam, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // SysParam list. public abstract ColumnDfn GetSysParamColumnDfn(SbmSysParam.Column columnId, String caption = "", int width = 0); public abstract List GetSysParamQueryFilter(SbmSysParam.Params prm); public abstract long GetSysParamCount(SbmSysParam.Params prm); public abstract List GetSysParamList(SbmSysParam.Params prm); public abstract DbResultSet ExecuteSysParamQuery(List columns, SbmSysParam.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 GetSysParamDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SbmSysParam.Column)column.Id) { //----------------------------------------------------------- // SysParam Cat_Desc? //----------------------------------------------------------- // Notes. case SbmSysParam.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SbmSysParam.Column.Status_Desc: case SbmSysParam.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SbmSysParam.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SbmSysParam.Column.Status_Ind) value = new DataValue(SbmSysParam.GetStatusTriState(status)); } break; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } //------------------------------------------------------------------- } //======================================================================= }