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.Net.Standard.Base.Interfaces { //======================================================================= public partial class SaInterfaceMgr { //******************************************************************* // I n t e r f a c e P r o c e s s M e s s a g e s //******************************************************************* // Retrieve individual interface process messages. public abstract bool InterfaceProcessMessageExistsById (SysId id); public abstract SaInterfaceProcessMessage GetInterfaceProcessMessageById (SysId id); public abstract SaInterfaceProcessMessage GetInterfaceProcessMessage (SaInterfaceProcessMessage.Params prm); // Create Interface Process Message. public abstract SaInterfaceProcessMessage CreateInterfaceProcessMessage (SysId interfaceProcessId); //------------------------------------------------------------------- // Validate Interface Process Message. public bool IsValidInterfaceProcessMessage (SaInterfaceProcessMessage interfaceProcessMessage) { ClearErrorState(); if (interfaceProcessMessage == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidInterfaceProcessMessageData(interfaceProcessMessage.GetData(), new SaInterfaceProcessMessage.ErrField()); } public virtual bool IsValidInterfaceProcessMessageData (SaInterfaceProcessMessage.Data data, SaInterfaceProcessMessage.ErrField errField) { ClearErrorState(); if (errField.InterfaceProcessId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.InterfaceProcessId)) { errField.InterfaceProcessId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Process must be supplied"); } if (errField.Level != SacsHierarchyItem.ValidValue.Ignore && (int)data.Level < 1) { errField.Level = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Level must be supplied"); } if (errField.Level != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(messageLevels.GetCodeForType(data.Level), "level", (long)SaInterfaceDbDfn.GetColTextLen(SaInterfaceDbDfn.ColumnIdx.SaInterfaceProcessMessage_MsgType), true, true)) { errField.Level = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Message != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Message, "message", (long)SaInterfaceDbDfn.GetColTextLen(SaInterfaceDbDfn.ColumnIdx.SaInterfaceProcessMessage_Msg), true)) { errField.Message = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Filename != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Filename, "filename", (long)SaInterfaceDbDfn.GetColTextLen(SaInterfaceDbDfn.ColumnIdx.SaInterfaceProcessMessage_FileName))) { errField.Filename = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.LineNumber != SacsHierarchyItem.ValidValue.Ignore && data.LineNumber < 0) { errField.LineNumber = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Invalid line number"); } // Common properties. if (errField.Status != SacsHierarchyItem.ValidValue.Ignore && !SaInterfaceProcessMessage.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } return true; } //------------------------------------------------------------------- // Interface Process Message database interface. public abstract bool InsertInterfaceProcessMessage (SaInterfaceProcessMessage interfaceProcessMessage, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateInterfaceProcessMessage (SaInterfaceProcessMessage interfaceProcessMessage, DbUpdateInfo dbUpdateInfo); public virtual bool InterfaceProcessMessageCanBeDeleted (SaInterfaceProcessMessage interfaceProcessMessage) { ClearErrorState(); return true; } public abstract bool DeleteInterfaceProcessMessage (SaInterfaceProcessMessage interfaceProcessMessage, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Interface Process Message list. public abstract ColumnDfn GetInterfaceProcessMessageColumnDfn (SaInterfaceProcessMessage.Column columnId, String caption = "", int width = 0); public abstract List GetInterfaceProcessMessageQueryFilter (SaInterfaceProcessMessage.Params prm); public abstract long GetInterfaceProcessMessageCount (SaInterfaceProcessMessage.Params prm); public abstract List GetInterfaceProcessMessageList (SaInterfaceProcessMessage.Params prm); public abstract DbResultSet ExecuteInterfaceProcessMessageQuery (List columns, SaInterfaceProcessMessage.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 GetInterfaceProcessMessageDataValue (ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SaInterfaceProcessMessage.Column)column.Id) { //----------------------------------------------------------- // Category. case SaInterfaceProcessMessage.Column.Level_Desc: { String level = values.GetValue(column.DataName).ToString(); // Legacy 'Warning' code: 'WAR'. if (level.EndsWithCI(MessageTypeWarningAlt)) level = messageLevels.GetCodeForType(SaMessageLevel.Warning); value = new DataValue(messageLevels.GetDescForCode(level, level)); } break; //----------------------------------------------------------- // Item Type. case SaInterfaceProcessMessage.Column.ItemType_Desc: { short itemType = StringUtil.ToShort(values.GetValue(column.DataName).ToString()); String itemTypeDesc = InterfaceConsole.GetItemTypeDesc(itemType); value = new DataValue(itemTypeDesc); } break; //----------------------------------------------------------- // Item Type. case SaInterfaceProcessMessage.Column.Item_Caption: { short itemType = StringUtil.ToShort(values.GetValue(GetInterfaceProcessMessageColumnDfn(SaInterfaceProcessMessage.Column.ItemType).DataName).ToString()); SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(column.DataName).ToString())); String itemTypeDesc = InterfaceConsole.GetItemCaption(new ItemId(itemType,itemId)); value = new DataValue(itemTypeDesc); } break; //----------------------------------------------------------- // Notes. case SaInterfaceProcessMessage.Column.Notes: { value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); } break; //----------------------------------------------------------- // Status. case SaInterfaceProcessMessage.Column.Status_Desc: case SaInterfaceProcessMessage.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SaInterfaceProcessMessage.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SaInterfaceProcessMessage.Column.Status_Ind) value = new DataValue(SaInterfaceProcessMessage.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }