Files
Common-VS2019/SacsStandardBase/Base/Security/SaSecurityMgr-SecurityLink.cs
T
2021-05-05 15:36:28 +01:00

127 lines
5.4 KiB
C#

using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using System;
using System.Collections.Generic;
using System.Text;
namespace Sarand.Net.Standard.Base.Security
{
//=======================================================================
partial class SaSecurityMgr
{
//*******************************************************************
// S e c u r i t y L i n k s
//*******************************************************************
// Retrieve individual securityLinks.
public abstract bool SecurityLinkExistsByItemsIds (SysId itemIdOwner, SysId itemIdTarget, SysId itemIdContext);
public abstract SaSecurityLink GetSecurityLinkByItemsIds (SysId itemIdOwner, SysId itemIdTarget, SysId itemIdContext);
// Create securityLink.
public abstract SaSecurityLink CreateSecurityLink (SysId itemIdOwner, SysId itemIdTarget, SysId itemIdContext);
//-------------------------------------------------------------------
// Validate securityLink data.
public bool IsValidSecurityLink (SaSecurityLink securityLink)
{
ClearErrorState();
if (securityLink == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidSecurityLinkData(securityLink.GetData(), new SaSecurityLink.ErrField());
}
public virtual bool IsValidSecurityLinkData (SaSecurityLink.Data securityLinkData, SaSecurityLink.ErrField errField)
{
ClearErrorState();
if (!SysId.IsValid(securityLinkData.ItemIdOwner))
{
errField.ItemIdOwner = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("owner must be specified");
}
if (!SysId.IsValid(securityLinkData.ItemIdOwner))
{
errField.ItemIdOwner = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("owner must be specified");
}
if (!SysId.IsValid(securityLinkData.ItemIdOwner))
{
errField.ItemIdOwner = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("owner must be specified");
}
// Common properties.
if (!SaSecurityLink.ValidStatuses.Contains(securityLinkData.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
return true;
}
//-------------------------------------------------------------------
// SecurityLink database interface.
public abstract bool InsertSecurityLink (SaSecurityLink securityLink, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateSecurityLink (SaSecurityLink securityLink, DbUpdateInfo dbUpdateInfo);
public virtual bool SecurityLinkCanBeDeleted (SaSecurityLink securityLink)
{
ClearErrorState();
return true;
}
public abstract bool DeleteSecurityLink (SaSecurityLink securityLink, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Security Link list:
public abstract ColumnDfn GetSecurityLinkColumnDfn (SaSecurityLink.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetSecurityLinkQueryFilter (SaSecurityLink.Params prm);
public abstract long GetSecurityLinkCount (SaSecurityLink.Params prm);
public abstract List<SaSecurityLink> GetSecurityLinkList (SaSecurityLink.Params prm);
public abstract DbResultSet ExecuteSecurityLinkQuery (List<ColumnDfn> columns, SaSecurityLink.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 DataValue GetSecurityLinkDataValue (ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
SaSecurityLink.Column colId = (SaSecurityLink.Column)column.Id;
switch (colId)
{
//-----------------------------------------------------------
// Context Item description.
case SaSecurityLink.Column.ItemContext_Desc:
{
SysId contextItemId = new SysId((int)values.GetValue(GetSecurityLinkColumnDfn(SaSecurityLink.Column.ItemIdContext).DataName).AsLong());
value = new DataValue("Item #" + SysId.ToString(contextItemId));
}
break;
//-----------------------------------------------------------
// Status.
case SaSecurityLink.Column.Granted_Y:
case SaSecurityLink.Column.Denied_X:
case SaSecurityLink.Column.Status_Desc:
case SaSecurityLink.Column.Status_Ind:
{
String statusValue = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusValue);
if (column.Id == (int)SaSecurityLink.Column.Granted_Y)
value = new DataValue(status == SaStatus.Granted ? "Y" : "");
else if (column.Id == (int)SaSecurityLink.Column.Denied_X)
value = new DataValue(status == SaStatus.Denied ? "X" : "");
else if (column.Id == (int)SaSecurityLink.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusValue));
else if (column.Id == (int)SaSecurityLink.Column.Status_Ind)
value = new DataValue(SaSecurityLink.GetStatusTriState(status));
}
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}