using System; using System.ComponentModel.DataAnnotations; namespace BlueWest.Data; public class MathOperation { [Key] public TimeSpan CreationDate { get; set; } public MathOperationType MathOperationType { get; } public double LeftAmount { get; } public double RightAmount { get; } public string MathOperationDescription { get; } private bool _isCalculated = false; private double _resultingAmount; public double ResultingAmount { get { if (_isCalculated) return _resultingAmount; return 0; } } public MathOperation() { } public MathOperation(MathOperationType mathOperationType, double leftAmount, double rightAmount, string mathOperationDescription) { MathOperationType = mathOperationType; LeftAmount = leftAmount; RightAmount = rightAmount; MathOperationDescription = mathOperationDescription; } public void Calculate() { _isCalculated = true; switch (MathOperationType) { case MathOperationType.Add: _resultingAmount = LeftAmount + RightAmount; return; case MathOperationType.Div: _resultingAmount = LeftAmount / RightAmount; return; case MathOperationType.Mul: _resultingAmount = LeftAmount * RightAmount; return; case MathOperationType.Sub: _resultingAmount = LeftAmount - RightAmount; return; } } }