| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | using System;using InABox.Core;namespace Comal.Classes{    public class JobStageCalendarLink : EntityLink<JobStageCalendar>    {        [LookupEditor(typeof(JobStageCalendar))]        public override Guid ID { get; set; }        [TextBoxEditor(Editable = Editable.Hidden)]        public string Name { get; set; }        [DoubleEditor(Editable = Editable.Hidden)]        public double Monday { get; set; }        [DoubleEditor(Editable = Editable.Hidden)]        public double Tuesday { get; set; }        [DoubleEditor(Editable = Editable.Hidden)]        public double Wednesday { get; set; }        [DoubleEditor(Editable = Editable.Hidden)]        public double Thursday { get; set; }        [DoubleEditor(Editable = Editable.Hidden)]        public double Friday { get; set; }        [DoubleEditor(Editable = Editable.Hidden)]        public double Saturday { get; set; }        [DoubleEditor(Editable = Editable.Hidden)]        public double Sunday { get; set; }        protected override void Init()        {            base.Init();        }        private double WorkHours(DateTime date)        {            if (date.DayOfWeek.Equals(DayOfWeek.Sunday))                return ID.Equals(Guid.Empty) ? 0.0F : Sunday;            if (date.DayOfWeek.Equals(DayOfWeek.Monday))                return ID.Equals(Guid.Empty) ? 8.0F : Monday;            if (date.DayOfWeek.Equals(DayOfWeek.Tuesday))                return ID.Equals(Guid.Empty) ? 8.0F : Tuesday;            if (date.DayOfWeek.Equals(DayOfWeek.Wednesday))                return ID.Equals(Guid.Empty) ? 8.0F : Wednesday;            if (date.DayOfWeek.Equals(DayOfWeek.Thursday))                return ID.Equals(Guid.Empty) ? 8.0F : Thursday;            if (date.DayOfWeek.Equals(DayOfWeek.Friday))                return ID.Equals(Guid.Empty) ? 8.0F : Friday;            if (date.DayOfWeek.Equals(DayOfWeek.Saturday))                return ID.Equals(Guid.Empty) ? 0.0F : Saturday;            return 0.0F;        }        public int CalculateWorkDays(DateTime start, DateTime finish)        {            var result = 0;            for (var date = start; date <= finish; date = date.AddDays(1))                if (WorkHours(date) > 0.0F)                    result++;            return result;        }        public DateTime CalculateEndDate(DateTime start, int days)        {            var result = start.AddDays(-1);            var curdays = days;            while (curdays > 0)            {                result = result.AddDays(1);                var hours = WorkHours(result);                if (hours > 0.0F)                    curdays--;            }            return result;        }        public double CalculateHours(DateTime start, DateTime end, double ratio)        {            double result = 0.0F;            for (var date = start; date <= end; date = date.AddDays(1))                result += WorkHours(date) * ratio;            return result;        }        public double CalculateWorkers(DateTime start, DateTime end, double hours)        {            if (hours == 0.0F)                return 0.0F;            double hoursperworker = 0.0F;            for (var date = start; date <= end; date = date.AddDays(1))                hoursperworker += WorkHours(date);            if (hoursperworker == 0.0F)                return 0.0F;            return hours / hoursperworker;        }    }    [UserTracking(typeof(JobStage))]    public class JobStageCalendar : Entity, IRemotable, IPersistent, ILicense<ProjectManagementLicense>    {        public string Name { get; set; }        public double Monday { get; set; }        public double Tuesday { get; set; }        public double Wednesday { get; set; }        public double Thursday { get; set; }        public double Friday { get; set; }        public double Saturday { get; set; }        public double Sunday { get; set; }        protected override void Init()        {            base.Init();            Monday = 8.0F;            Tuesday = 8.0F;            Wednesday = 8.0F;            Thursday = 8.0F;            Friday = 8.0F;            Saturday = 0.0F;            Sunday = 0.0F;        }    }}
 |