using System; using System.Collections.Generic; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Dbas; namespace Sarand.Net.Standard.Base.ReferenceData { //======================================================================= // Reference Data manager - Languages. //======================================================================= public abstract partial class SaReferenceDataMgr : SacsItemMgr { //------------------------------------------------------------------- // Retrieve individual languages. public abstract bool LanguageExistsById(SysId id); public abstract bool LanguageExistsByCode(String code); public abstract SaLanguage GetLanguageById(SysId id); public abstract SaLanguage GetLanguageByCode(String code); public abstract SaLanguage GetLanguage(SaLanguage.Params prm); // Create language. public abstract SaLanguage CreateLanguage(); //------------------------------------------------------------------- // Validate language data. public bool IsValidLanguage(SaLanguage language) { ClearErrorState(); if (language == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidLanguageData(language.GetData(), new SaLanguage.ErrField()); } public virtual bool IsValidLanguageData(SaLanguage.Data data, SaLanguage.ErrField errField) { ClearErrorState(); // Language properties. if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.Language_Code), true)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SaReferenceDataDbDfn.GetColTextLen(SaReferenceDataDbDfn.ColumnIdx.Language_Name), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Unicode != SacsHierarchyItem.ValidValue.Ignore && data.Unicode) { errField.Unicode = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Translation != SacsHierarchyItem.ValidValue.Ignore && data.Translation) { errField.Translation = SacsHierarchyItem.ValidValue.Invalid; return false; } // Validate associated data. if (errField.LanguageIdPrimary != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.LanguageIdPrimary)) { if (!LanguageExistsById(data.LanguageIdPrimary)) { errField.LanguageIdPrimary = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Language's parent not found"); } } return true; } //------------------------------------------------------------------- // Language database interface. public abstract bool InsertLanguage(SaLanguage language, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateLanguage(SaLanguage language, DbUpdateInfo dbUpdateInfo); public virtual bool LanguageCanBeDeleted(SaLanguage language) { ClearErrorState(); if (language == null) return SetErrorState(ErrorMessage.InvalidStatus); if (language.HasDependentLanguages()) return SetErrorState("Has dependent languages"); return true; } public abstract bool DeleteLanguage(SaLanguage language, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Language list. public abstract ColumnDfn GetLanguageColumnDfn(SaLanguage.Column columnId, String caption = "", int width = 0); public abstract List GetLanguageQueryFilter(SaLanguage.Params prm); public abstract long GetLanguageCount(SaLanguage.Params prm); public abstract List GetLanguageList(SaLanguage.Params prm); public abstract DbResultSet ExecuteLanguageQuery(List columns, SaLanguage.Params prm); //------------------------------------------------------------------- /// /// 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 GetLanguageDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaLanguage.Column)column.Id) { //----------------------------------------------------------- // Default. default: break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }