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 - Repositories. //======================================================================= partial class SbmcInstanceMgr { //------------------------------------------------------------------- // Repository exists. public bool RepositoryExistsById(SysId repositoryId) { ClearErrorState(); if (!SysId.IsValid(repositoryId)) return false; SbmcRepository.Params prmRepository = new SbmcRepository.Params(); prmRepository.IdsIncluded.Add(repositoryId); prmRepository.StatusCat = SbmcRepository.StatusCat.Any; return GetRepositoryCount(prmRepository) == 1; } public bool RepositoryExistsByContext(String context) { ClearErrorState(); if (!StringUtil.IsBlank(context)) return false; SbmcRepository.Params prmRepository = new SbmcRepository.Params(); prmRepository.ContextsIncluded.Add(context); prmRepository.StatusCat = SbmcRepository.StatusCat.Any; return GetRepositoryCount(prmRepository) == 1; } //------------------------------------------------------------------- // Get Repository. public abstract SbmcRepository GetRepository(SbmcRepository.Params prm); public SbmcRepository GetRepositoryById(SysId repositoryId) { ClearErrorState(); if (!SysId.IsValid(repositoryId)) return null; SbmcRepository.Params prmRepository = new SbmcRepository.Params(); prmRepository.IdsIncluded.Add(repositoryId); prmRepository.StatusCat = SbmcRepository.StatusCat.Any; return GetRepository(prmRepository); } public SbmcRepository GetRepositoryByContext(String context) { ClearErrorState(); if (StringUtil.IsBlank(context)) return null; SbmcRepository.Params prmRepository = new SbmcRepository.Params(); prmRepository.ContextsIncluded.Add(context); prmRepository.StatusCat = SbmcRepository.StatusCat.Any; return GetRepository(prmRepository); } //------------------------------------------------------------------- // Create Repository. public abstract SbmcRepository CreateRepository(); //------------------------------------------------------------------- // Validate Repository data. public bool IsValidRepository(SbmcRepository repository) { ClearErrorState(); if (repository == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidRepositoryData(repository.GetData(), new SbmcRepository.ErrField()); } public virtual bool IsValidRepositoryData(SbmcRepository.Data data, SbmcRepository.ErrField errField) { // Repository properties. ClearErrorState(); if (data == null) return SetErrorState("item not specified"); // Owner. if (!SysId.IsValid(data.OwnerId)) return SetErrorState("Owner must be specified"); // Repository. if (errField.Context != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Context, "context", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_Context), true)) { errField.Context = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.ServerName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ServerName, "server", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_ServerName), true)) { errField.ServerName = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.InstanceName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InstanceName, "instance", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_InstanceName))) { errField.InstanceName = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.DatabaseName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DatabaseName, "database", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_DatabaseName), true)) { errField.DatabaseName = SacsHierarchyItem.ValidValue.Invalid; return false; } // Credentials. if (errField.UserName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.UserName, "user", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_UserName))) { errField.UserName = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Password != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Password, "password", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_Password))) { errField.Password = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.Repository_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.Repository_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmcRepository.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } return true; } //------------------------------------------------------------------- // Repository repository interface. public abstract bool InsertRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo); public virtual bool RepositoryCanBeDeleted(SbmcRepository repository) { if (repository == null) return SetErrorState("item not specified"); //ClearErrorState(); return true; } public abstract bool DeleteRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Repository list. public abstract ColumnDfn GetRepositoryColumnDfn(SbmcRepository.Column columnId, String caption = "", int width = 0); public abstract List GetRepositoryQueryFilter(SbmcRepository.Params prm); public abstract long GetRepositoryCount(SbmcRepository.Params prm); public abstract List GetRepositoryList(SbmcRepository.Params prm); public abstract DbResultSet ExecuteRepositoryQuery(List columns, SbmcRepository.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 GetRepositoryDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SbmcRepository.Column)column.Id) { // Notes. case SbmcRepository.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SbmcRepository.Column.Status_Desc: case SbmcRepository.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SbmcRepository.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SbmcRepository.Column.Status_Ind) value = new DataValue(SbmcRepository.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }