Files
Common-VS2019/SacsStandardBase/Base/Bus/SacsStateItem.cs
T
2025-10-21 16:50:17 +01:00

132 lines
3.7 KiB
C#

using System;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
namespace Sarand.Net.Standard.Base.Bus
{
//=======================================================================
/// <summary>
/// State Item - allows business component to record and report error message.
/// </summary>
public abstract class SacsStateItem : ISacsStateItem
{
//-------------------------------------------------------------------
// Definitions.
public enum ErrorMessage
{
// Database.
DatabaseNotAvailable,
DatabaseQueryException,
// Item validation.
ItemNotSpecified,
ValidItemId,
InvalidItemId,
ItemIdNotSpecified,
ItemTypeNotSpecified,
InvalidItemSpecified,
MultipleItemsFound,
// Common properties.
InvalidDate,
InvalidStatus,
}
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Static initialisation.
static SacsStateItem()
{
}
//-------------------------------------------------------------------
// Construction.
protected SacsStateItem()
{
}
//-------------------------------------------------------------------
// Properties.
/// <summary>OK - No error state message.</summary>
public bool OK { get { return !HasErrorState(); } }
//-------------------------------------------------------------------
// Error State.
//-------------------------------------------------------------------
private SacsErrorState errorState = null;
public bool HasErrorState()
{
return errorState != null;
}
public SacsErrorState ErrorState
{
get { return errorState; }
}
public String ErrorStateMessage
{
get { return (errorState != null ? errorState.Message : String.Empty); }
}
/// <summary>
/// Record the error state message.
/// <para>Blank message does not set the error state - leaves previous state intact.</para>
/// <para>Return value is fale unless the message is blank.</para>
/// </summary>
public bool SetErrorState(String message)
{
if (StringUtil.IsBlank(message))
return false;
this.errorState = new SacsErrorState(message);
return false;
}
/// <summary>Clear the error state.</summary>
public void ClearErrorState()
{
errorState = null;
}
//-------------------------------------------------------------------
// Error state population.
protected bool SetErrorState(ErrorMessage errorMessage)
{
return SetErrorState(GetErrorMessage(errorMessage));
}
//-------------------------------------------------------------------
protected String GetErrorMessage(ErrorMessage errorMessage)
{
switch (errorMessage)
{
case ErrorMessage.DatabaseNotAvailable:
return "Database is not available";
case ErrorMessage.DatabaseQueryException:
return "Database query exception";
case ErrorMessage.ItemNotSpecified:
return "Item not specified";
case ErrorMessage.ValidItemId:
return "Item has a valid id";
case ErrorMessage.InvalidItemId:
return "Invalid item id";
case ErrorMessage.ItemIdNotSpecified:
return "Item Id must be specified";
case ErrorMessage.ItemTypeNotSpecified:
return "Item type must be specified";
case ErrorMessage.InvalidItemSpecified:
return "Invalid item specified";
case ErrorMessage.MultipleItemsFound:
return "Multiple items found";
case ErrorMessage.InvalidDate:
return "Invalid date";
case ErrorMessage.InvalidStatus:
return "Invalid status";
}
return errorMessage.ToString();
}
//-------------------------------------------------------------------
}
//=======================================================================
}