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 { //======================================================================= public abstract partial class SaReferenceDataMgr : SacsItemMgr { //******************************************************************* // L a n g u a g e s //******************************************************************* // 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(Msg_ItemNotSpecified); 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; } //------------------------------------------------------------------- } //======================================================================= }