| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- 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; }
- [DecimalEditor(Editable = Editable.Hidden)]
- public decimal Monday { get; set; }
- [DecimalEditor(Editable = Editable.Hidden)]
- public decimal Tuesday { get; set; }
- [DecimalEditor(Editable = Editable.Hidden)]
- public decimal Wednesday { get; set; }
- [DecimalEditor(Editable = Editable.Hidden)]
- public decimal Thursday { get; set; }
- [DecimalEditor(Editable = Editable.Hidden)]
- public decimal Friday { get; set; }
- [DecimalEditor(Editable = Editable.Hidden)]
- public decimal Saturday { get; set; }
- [DecimalEditor(Editable = Editable.Hidden)]
- public decimal Sunday { get; set; }
- private decimal WorkHours(DateTime date)
- {
- if (date.DayOfWeek.Equals(DayOfWeek.Sunday))
- return ID.Equals(Guid.Empty) ? 0 : Sunday;
- if (date.DayOfWeek.Equals(DayOfWeek.Monday))
- return ID.Equals(Guid.Empty) ? 8 : Monday;
- if (date.DayOfWeek.Equals(DayOfWeek.Tuesday))
- return ID.Equals(Guid.Empty) ? 8 : Tuesday;
- if (date.DayOfWeek.Equals(DayOfWeek.Wednesday))
- return ID.Equals(Guid.Empty) ? 8 : Wednesday;
- if (date.DayOfWeek.Equals(DayOfWeek.Thursday))
- return ID.Equals(Guid.Empty) ? 8 : Thursday;
- if (date.DayOfWeek.Equals(DayOfWeek.Friday))
- return ID.Equals(Guid.Empty) ? 8 : Friday;
- if (date.DayOfWeek.Equals(DayOfWeek.Saturday))
- return ID.Equals(Guid.Empty) ? 0 : Saturday;
- return 0;
- }
- public int CalculateWorkDays(DateTime start, DateTime finish)
- {
- var result = 0;
- for (var date = start; date <= finish; date = date.AddDays(1))
- if (WorkHours(date) > 0)
- 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)
- curdays--;
- }
- return result;
- }
- public decimal CalculateHours(DateTime start, DateTime end, decimal ratio)
- {
- var result = 0.0m;
- for (var date = start; date <= end; date = date.AddDays(1))
- result += WorkHours(date) * ratio;
- return result;
- }
- public decimal CalculateWorkers(DateTime start, DateTime end, decimal hours)
- {
- if (hours == default)
- return default;
- var hoursperworker = 0.0m;
- for (var date = start; date <= end; date = date.AddDays(1))
- hoursperworker += WorkHours(date);
- if (hoursperworker == default)
- return default;
- return hours / hoursperworker;
- }
- }
- [UserTracking(typeof(JobStage))]
- public class JobStageCalendar : Entity, IRemotable, IPersistent, ILicense<ProjectManagementLicense>
- {
- public string Name { get; set; }
- public decimal Monday { get; set; } = 8;
- public decimal Tuesday { get; set; } = 8;
- public decimal Wednesday { get; set; } = 8;
- public decimal Thursday { get; set; } = 8;
- public decimal Friday { get; set; } = 8;
- public decimal Saturday { get; set; } = 0;
- public decimal Sunday { get; set; } = 0;
- }
- }
|