123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- using InABox.Core;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Comal.Classes
- {
- public abstract class DimensionUnit : Entity, IRemotable, IPersistent, ISequenceable, IDimensionUnit
- {
-
- [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)]
- [EditorSequence(1)]
- public virtual String Code { get; set; }
-
- [TextBoxEditor]
- [EditorSequence(2)]
- public virtual String Description { get; set; }
-
- [CheckBoxEditor]
- [EditorSequence(3)]
- public virtual bool HasQuantity { get; set; }
-
- [CheckBoxEditor]
- [EditorSequence(4)]
- public virtual bool HasLength { get; set; }
-
- [CheckBoxEditor]
- [EditorSequence(5)]
- public virtual bool HasWidth { get; set; }
-
- [CheckBoxEditor]
- [EditorSequence(6)]
- public virtual bool HasHeight { get; set; }
-
- [CheckBoxEditor]
- [EditorSequence(7)]
- public virtual bool HasWeight { get; set; }
- [ExpressionEditor(null, typeof(DimensionsExpressionModelGenerator))]
- [EditorSequence(8)]
- public virtual string Formula { get; set; }
-
- [ExpressionEditor(null, typeof(DimensionsExpressionModelGenerator))]
- [EditorSequence(9)]
- public virtual string Format { get; set; }
- [NullEditor]
- public long Sequence { get; set; }
-
- protected override void Init()
- {
- base.Init();
- HasQuantity = false;
- HasLength = false;
- HasWidth = false;
- HasHeight = false;
- HasWeight = false;
- Formula = "1";
- Format = "\"EACH\"";
- }
- public bool Validate(List<String> errors)
- {
- bool result = true;
- var variables = new Dictionary<string, object?>()
- {
- { "Quantity", 1.00F },
- { "Length", 1.00F },
- { "Width", 1.00F },
- { "Height", 1.00F },
- { "Weight", 1.00F }
- };
-
- try
- {
- var expr = new CoreExpression(Formula);
- expr.Evaluate(variables);
- result = true;
- }
- catch (Exception e)
- {
- errors.Add($"{Code}: Formula [{Formula}] => {e.Message}");
- result = false;
- }
-
- try
- {
- var expr = new CoreExpression(Format);
- expr.Evaluate(variables);
- result = true;
- }
- catch (Exception e)
- {
- errors.Add($"{Code}: Format [{Format}] => {e.Message}");
- result = false;
- }
- return result;
- }
- private class DimensionsExpressionModelGenerator : IExpressionModelGenerator
- {
- public List<string> GetVariables(object?[] items)
- {
- var dimensionUnits = items.Select(x => x as IDimensionUnit).Where(x => x != null).Cast<IDimensionUnit>();
- var variables = new List<string>();
- if (dimensionUnits.All(x => x.HasQuantity)) variables.Add("Quantity");
- if (dimensionUnits.All(x => x.HasLength)) variables.Add("Length");
- if (dimensionUnits.All(x => x.HasWidth)) variables.Add("Width");
- if (dimensionUnits.All(x => x.HasHeight)) variables.Add("Height");
- if (dimensionUnits.All(x => x.HasWeight)) variables.Add("Weight");
- return variables;
- }
- }
- }
- }
|