Files
Common-VS2019/SacsStandardBase/Base/ReferenceData/SaReferenceDataMgr_Language.cs
T
2021-05-05 15:36:28 +01:00

116 lines
4.6 KiB
C#

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("Item not specified");
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<String> GetLanguageQueryFilter (SaLanguage.Params prm);
public abstract long GetLanguageCount (SaLanguage.Params prm);
public abstract List<SaLanguage> GetLanguageList (SaLanguage.Params prm);
public abstract DbResultSet ExecuteLanguageQuery (List<ColumnDfn> columns, SaLanguage.Params prm);
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
/// </summary>
public virtual DataValue GetLanguageDataValue (ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SaLanguage.Column)column.Id)
{
//-----------------------------------------------------------
// Default.
default:
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}