Files
BusinessMgr-2019/SaBusinessMgrCoreWebControl/Control/Models/Param/Model_Param.cs
T

150 lines
6.0 KiB
C#

using Microsoft.AspNetCore.Mvc.Rendering;
using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.CodeTypes;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Web.Control.Models.Param
{
//=======================================================================
public class Model_Param : SbmModel_Control
{
//-------------------------------------------------------------------
// Construction.
public Model_Param(SbmLocaliser localiser) :
base(localiser)
{
}
//-------------------------------------------------------------------
/// <summary>List of Item Types for dropdown.</summary>
public IEnumerable<SelectListItem> GetParamItemTypesForSelect()
{
List<CodeDesc> codeTypes = new List<CodeDesc>();
foreach (var itemType in SbmcItemParam.ValidItemTypes)
codeTypes.Add(((int)itemType).ToString(), itemType.ToString());
return new SelectList(codeTypes, "Code", "Desc");
}
//-------------------------------------------------------------------
// Filter properties.
public class FilterData
{
public string ItemType { get; set; }
public string ItemId { get; set; }
public string Search { get; set; }
public string StatusCat { get; set; }
public SbmcItemParam.StatusCat GetStatusCat()
{
return EnumUtil.ParseEnum(StatusCat, SbmcItemParam.StatusCat.NotDeleted);
}
}
public FilterData Filter { get; } = new FilterData();
//-------------------------------------------------------------------
// Item properties.
public class ItemParamData
{
public String Exists { get; set; }
public string Id { get; set; }
public string ItemType { get; set; }
public string ItemId { get; set; }
public string Context { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public string ValueChanged { get; set; }
public string Notes { get; set; }
public string StatusCode { get; set; }
public SaStatus GetStatus() { return SacsSystem.GetStatusForCode(StatusCode); }
}
public ItemParamData Param { get; } = new ItemParamData();
//-------------------------------------------------------------------
// Validation.
//-------------------------------------------------------------------
public bool ValidateParamData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData)
{
// Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<ISacsDisposable> disposables = new DisposableCollection<ISacsDisposable>())
{
// Check whether data suggests that Param exists.
bool paramExists = StringUtil.ToBool(Param.Exists) && SysId.IsValid(SysId.ToSysId(Param.Id));
// Item.
if (Param.ItemType != null || Param.ItemId != null)
{
string controlName = "ParamItem";
ItemId itemId = new ItemId(StringUtil.ToShort(Param.ItemType), SysId.ToSysId(Param.ItemId));
if (!paramExists && (Param.ItemType.IsBlank() || Param.ItemId.IsBlank()))
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (StringUtil.IsBlank(ControlItemMgr.GetItemCaption(itemId)))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
// Context.
if (Param.Context != null)
{
string controlName = "ParamContext";
responseData.SetControlValue(controlName, Param.Context);
if (Param.Context.IsBlank())
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (StringUtil.GetLength(Param.Context) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Context))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Context)]);
}
// Name.
if (Param.Name != null)
{
string controlName = "ParamName";
responseData.SetControlValue(controlName, Param.Name);
if (Param.Name.IsBlank())
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (StringUtil.GetLength(Param.Name) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Name))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Name)]);
}
// Value.
if (Param.Value != null)
{
string controlName = "ParamValue";
responseData.SetControlValue(controlName, Param.Value);
if (StringUtil.GetLength(Param.Value) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Value))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Value)]);
}
// Notes.
if (Param.Notes != null)
{
string controlName = "ParamNotes";
responseData.SetControlValue(controlName, Param.Notes);
if (StringUtil.GetLength(Param.Notes) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Notes))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.ItemParam_Notes)]);
}
// User status.
if (Param.StatusCode != null)
{
string controlName = "ParamStatus";
if (Param.StatusCode.IsBlank())
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (!SbmcItemParam.ValidStatuses.Contains(Param.GetStatus()))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
}
return !responseData.HasControlErrors();
}
//-------------------------------------------------------------------
}
//=======================================================================
}