154 lines
6.2 KiB
C#
154 lines
6.2 KiB
C#
using DocumentFormat.OpenXml.EMMA;
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
using Sarand.BusinessMgr.Net.Core.Web.App;
|
|
using Sarand.BusinessMgr.Net.Core.Web.Controllers;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
|
|
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.Helpers;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics.Contracts;
|
|
|
|
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<SacsHierarchyItem> disposables = new DisposableCollection<SacsHierarchyItem>())
|
|
{
|
|
// Check whether data suggests that Param exists.
|
|
bool paramExists = StringUtil.ToBool(Param.Exists) && SysId.IsValid(Param.Id.ToSysId());
|
|
|
|
// Item.
|
|
if (Param.ItemType != null || Param.ItemId != null)
|
|
{
|
|
string controlName = "ParamItem";
|
|
ItemId itemId = new ItemId(StringUtil.ToShort(Param.ItemType), Param.ItemId.ToSysId());
|
|
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();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|