using InABox.Core; using System; using System.Collections.Generic; using System.Text; namespace Comal.Classes { public enum OvertimeIntervalType { Interval, RemainingTime } [EntitySecurity( CanView = typeof(CanView), CanEdit = typeof(CanEdit), CanDelete = typeof(CanEdit) )] public class OvertimeInterval : Entity, IRemotable, IPersistent, IOneToMany, ILicense, ISequenceable { [EntityRelationship(DeleteAction.Cascade)] public OvertimeLink Overtime { get; set; } [TextBoxEditor(Visible = Visible.Default)] [EditorSequence(1)] public string Description { get; set; } [EnumLookupEditor(typeof(OvertimeIntervalType), Visible = Visible.Default)] [EditorSequence(2)] public OvertimeIntervalType IntervalType { get; set; } [TimeOfDayEditor(Visible = Visible.Default)] [EditorSequence(3)] public TimeSpan Interval { get; set; } [TextBoxEditor(Visible = Visible.Default)] [EditorSequence(4)] public string PayrollID { get; set; } [CheckBoxEditor(Visible = Visible.Default)] [EditorSequence(5)] public bool IsPaid { get; set; } [DoubleEditor(Visible = Visible.Default)] [EditorSequence(6)] public double Multiplier { get; set; } [NullEditor] public long Sequence { get; set; } public OvertimeInterval() { Description = ""; PayrollID = ""; IsPaid = true; Multiplier = 1.0; IntervalType = OvertimeIntervalType.Interval; } public static OvertimeInterval NewInterval(TimeSpan duration, double multiplier = 1.0) { return new OvertimeInterval { Interval = duration, Multiplier = multiplier, IsPaid = true, IntervalType = OvertimeIntervalType.Interval }; } public static OvertimeInterval NewUnpaidInterval(TimeSpan duration) { return new OvertimeInterval { Interval = duration, Multiplier = 0.0, IsPaid = false, IntervalType = OvertimeIntervalType.Interval }; } public static OvertimeInterval NewRemaining(double multiplier = 1.0) { return new OvertimeInterval { Multiplier = multiplier, IsPaid = true, IntervalType = OvertimeIntervalType.RemainingTime }; } } }