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;
- }
- }
- }
|