This commit is contained in:
2021-07-29 22:09:41 +00:00
parent 31d72715e5
commit 80ff52ef0c
5 changed files with 63 additions and 29 deletions

View File

@@ -91,7 +91,7 @@ namespace AyaNova.Api.Controllers
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(ContractOverrideType).ToString()), "Contract price adjustment type")); ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(ContractOverrideType).ToString()), "Contract price adjustment type"));
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()), "Work order item task completion type")); ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()), "Work order item task completion type"));
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(PMTimeUnit).ToString()), "PM time units")); ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(PMTimeUnit).ToString()), "PM time units"));
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(DaysOfWeek).ToString()), "Days of the week")); ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(AyaDaysOfWeek).ToString()), "Days of the week"));
return Ok(ApiOkResponse.Response(ret)); return Ok(ApiOkResponse.Response(ret));
} }
@@ -576,7 +576,7 @@ namespace AyaNova.Api.Controllers
ReturnList.Add(new NameIdItem() { Name = LT["TimeSpanMinutes"], Id = (long)PMTimeUnit.Minutes }); ReturnList.Add(new NameIdItem() { Name = LT["TimeSpanMinutes"], Id = (long)PMTimeUnit.Minutes });
} }
else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(DaysOfWeek).ToString()).ToLowerInvariant()) else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(AyaDaysOfWeek).ToString()).ToLowerInvariant())
{ {
TranslationKeysToFetch.Add("DayMonday"); TranslationKeysToFetch.Add("DayMonday");
@@ -590,13 +590,13 @@ namespace AyaNova.Api.Controllers
var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId); var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId);
ReturnList.Add(new NameIdItem() { Name = LT["DayMonday"], Id = (long)DaysOfWeek.Monday }); ReturnList.Add(new NameIdItem() { Name = LT["DayMonday"], Id = (long)AyaDaysOfWeek.Monday });
ReturnList.Add(new NameIdItem() { Name = LT["DayTuesday"], Id = (long)DaysOfWeek.Tuesday }); ReturnList.Add(new NameIdItem() { Name = LT["DayTuesday"], Id = (long)AyaDaysOfWeek.Tuesday });
ReturnList.Add(new NameIdItem() { Name = LT["DayWednesday"], Id = (long)DaysOfWeek.Wednesday }); ReturnList.Add(new NameIdItem() { Name = LT["DayWednesday"], Id = (long)AyaDaysOfWeek.Wednesday });
ReturnList.Add(new NameIdItem() { Name = LT["DayThursday"], Id = (long)DaysOfWeek.Thursday }); ReturnList.Add(new NameIdItem() { Name = LT["DayThursday"], Id = (long)AyaDaysOfWeek.Thursday });
ReturnList.Add(new NameIdItem() { Name = LT["DayFriday"], Id = (long)DaysOfWeek.Friday }); ReturnList.Add(new NameIdItem() { Name = LT["DayFriday"], Id = (long)AyaDaysOfWeek.Friday });
ReturnList.Add(new NameIdItem() { Name = LT["DaySaturday"], Id = (long)DaysOfWeek.Saturday }); ReturnList.Add(new NameIdItem() { Name = LT["DaySaturday"], Id = (long)AyaDaysOfWeek.Saturday });
ReturnList.Add(new NameIdItem() { Name = LT["DaySunday"], Id = (long)DaysOfWeek.Sunday }); ReturnList.Add(new NameIdItem() { Name = LT["DaySunday"], Id = (long)AyaDaysOfWeek.Sunday });
} }
//################################################################################################################# //#################################################################################################################

View File

@@ -5,7 +5,7 @@ namespace AyaNova.Biz
/// Days of week /// Days of week
/// </summary> /// </summary>
[Flags] [Flags]
public enum DaysOfWeek : int public enum AyaDaysOfWeek : int
{ {
//https://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c //https://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c
//MAX 31 (2147483647)!!! or will overflow int and needs to be turned into a long //MAX 31 (2147483647)!!! or will overflow int and needs to be turned into a long

View File

@@ -428,7 +428,7 @@ namespace AyaNova.Biz
/// generate before span and unit /// generate before span and unit
/// </summary> /// </summary>
internal static void SetGenerateDate(PM p) internal static void SetGenerateDate(PM p)
{ {
p.GenerateDate = CalculateNewDateFromSpanAndUnit(p.NextServiceDate, p.GenerateBeforeUnit, -System.Math.Abs(p.GenerateBeforeInterval)); p.GenerateDate = CalculateNewDateFromSpanAndUnit(p.NextServiceDate, p.GenerateBeforeUnit, -System.Math.Abs(p.GenerateBeforeInterval));
} }
@@ -436,7 +436,7 @@ namespace AyaNova.Biz
internal static DateTime CalculateNewDateFromSpanAndUnit(DateTime StartDate, PMTimeUnit unit, int interval) internal static DateTime CalculateNewDateFromSpanAndUnit(DateTime StartDate, PMTimeUnit unit, int interval)
{ {
if(interval==0) return StartDate; if (interval == 0) return StartDate;
switch (unit) switch (unit)
{ {
case PMTimeUnit.Minutes: case PMTimeUnit.Minutes:
@@ -458,7 +458,7 @@ namespace AyaNova.Biz
return StartDate; return StartDate;
} }
private async Task AutoSetAddressAsync(PM newObj) private async Task AutoSetAddressAsync(PM newObj)
{ {
@@ -5226,7 +5226,41 @@ namespace AyaNova.Biz
if (await NewServiceWorkOrderFromPMAsync(p, ct, log)) if (await NewServiceWorkOrderFromPMAsync(p, ct, log))
{ {
//Success //Success
//fixup dates and update pm
//Calculate next service date
DateTime dtNewNextServiceDate = CalculateNewDateFromSpanAndUnit(p.NextServiceDate, p.RepeatUnit, p.RepeatInterval);
//Check Exclusions and adjust
if ((int)p.ExcludeDaysOfWeek != 0)
{
//days of week cant be used as flags hence our own
var excluded = new List<DayOfWeek>();
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Monday)) excluded.Add(DayOfWeek.Monday);
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Tuesday)) excluded.Add(DayOfWeek.Tuesday);
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Wednesday)) excluded.Add(DayOfWeek.Wednesday);
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Thursday)) excluded.Add(DayOfWeek.Thursday);
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Friday)) excluded.Add(DayOfWeek.Friday);
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Saturday)) excluded.Add(DayOfWeek.Saturday);
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Sunday)) excluded.Add(DayOfWeek.Sunday);
while (excluded.Contains(dtNewNextServiceDate.DayOfWeek))
dtNewNextServiceDate = dtNewNextServiceDate.AddDays(1);
}
TimeSpan tsAdd = dtNewNextServiceDate - p.NextServiceDate;
//Stop generating date reached??
if (p.StopGeneratingDate != null && p.StopGeneratingDate < dtNewNextServiceDate)
{
p.Active = false;
await ct.SaveChangesAsync();
log.LogTrace($"PMBiz:: PM {p.Serial} has reached it's stop generating date and has been automatically deactivated");
return;
}
//add the new timespan to all dates in pm
//note p is ready to modify and save here as it's tracked //note p is ready to modify and save here as it's tracked
} }
} }
@@ -5297,7 +5331,7 @@ namespace AyaNova.Biz
foreach (PMItemScheduledUser pmsu in pmi.ScheduledUsers) foreach (PMItemScheduledUser pmsu in pmi.ScheduledUsers)
{ {
var wois = new WorkOrderItemScheduledUser(); var wois = new WorkOrderItemScheduledUser();
wois.ServiceRateId = pmsu.ServiceRateId; wois.ServiceRateId = pmsu.ServiceRateId;
wois.StartDate = pmsu.StartDate;//DATE ADJUST wois.StartDate = pmsu.StartDate;//DATE ADJUST
wois.StopDate = pmsu.StopDate;//DATE ADJUST wois.StopDate = pmsu.StopDate;//DATE ADJUST
wois.Tags = pmsu.Tags; wois.Tags = pmsu.Tags;
@@ -5330,9 +5364,9 @@ namespace AyaNova.Biz
wil.Rate = pml.Rate; wil.Rate = pml.Rate;
wil.Tags = pml.Tags; wil.Tags = pml.Tags;
wil.TaxCodeId = pml.TaxCodeId; wil.TaxCodeId = pml.TaxCodeId;
wil.DueDate=pml.DueDate;//DATE ADJUST wil.DueDate = pml.DueDate;//DATE ADJUST
wil.OutDate=pml.OutDate;//DATE ADJUST wil.OutDate = pml.OutDate;//DATE ADJUST
wil.ReturnDate=pml.ReturnDate;//DATE ADJUST wil.ReturnDate = pml.ReturnDate;//DATE ADJUST
woi.Loans.Add(wil); woi.Loans.Add(wil);
} }
@@ -5349,8 +5383,8 @@ namespace AyaNova.Biz
wilab.TaxCodeSaleId = pmlab.TaxCodeSaleId; wilab.TaxCodeSaleId = pmlab.TaxCodeSaleId;
wilab.UserId = pmlab.UserId; wilab.UserId = pmlab.UserId;
wilab.ServiceStartDate=pmlab.ServiceStartDate;//DATE ADJUST wilab.ServiceStartDate = pmlab.ServiceStartDate;//DATE ADJUST
wilab.ServiceStopDate=pmlab.ServiceStopDate;//DATE ADJUST wilab.ServiceStopDate = pmlab.ServiceStopDate;//DATE ADJUST
woi.Labors.Add(wilab); woi.Labors.Add(wilab);
} }
@@ -5366,9 +5400,9 @@ namespace AyaNova.Biz
witrav.TravelRateQuantity = pmtrav.TravelRateQuantity; witrav.TravelRateQuantity = pmtrav.TravelRateQuantity;
witrav.TaxCodeSaleId = pmtrav.TaxCodeSaleId; witrav.TaxCodeSaleId = pmtrav.TaxCodeSaleId;
witrav.UserId = pmtrav.UserId; witrav.UserId = pmtrav.UserId;
witrav.TravelStartDate=pmtrav.TravelStartDate;//DATE ADJUST witrav.TravelStartDate = pmtrav.TravelStartDate;//DATE ADJUST
witrav.TravelStopDate=pmtrav.TravelStopDate;//DATE ADJUST witrav.TravelStopDate = pmtrav.TravelStopDate;//DATE ADJUST
woi.Travels.Add(witrav); woi.Travels.Add(witrav);
} }
@@ -5379,7 +5413,7 @@ namespace AyaNova.Biz
wit.Sequence = pmt.Sequence; wit.Sequence = pmt.Sequence;
wit.Status = pmt.Status; wit.Status = pmt.Status;
wit.Task = pmt.Task; wit.Task = pmt.Task;
wit.CompletedDate=pmt.CompletedDate;//DATE ADJUST wit.CompletedDate = pmt.CompletedDate;//DATE ADJUST
woi.Tasks.Add(wit); woi.Tasks.Add(wit);
} }
@@ -5413,9 +5447,9 @@ namespace AyaNova.Biz
wio.UnitId = pmo.UnitId; wio.UnitId = pmo.UnitId;
wio.VendorSentToId = pmo.VendorSentToId; wio.VendorSentToId = pmo.VendorSentToId;
wio.VendorSentViaId = pmo.VendorSentViaId; wio.VendorSentViaId = pmo.VendorSentViaId;
wio.SentDate=pmo.SentDate;//DATE ADJUST wio.SentDate = pmo.SentDate;//DATE ADJUST
wio.ReturnDate=pmo.ReturnDate;//DATE ADJUST wio.ReturnDate = pmo.ReturnDate;//DATE ADJUST
wio.ETADate=pmo.ETADate;//DATE ADJUST wio.ETADate = pmo.ETADate;//DATE ADJUST
woi.OutsideServices.Add(wio); woi.OutsideServices.Add(wio);
} }

View File

@@ -28,7 +28,7 @@ namespace AyaNova.Models
public bool CopyAttachments { get; set; } public bool CopyAttachments { get; set; }
public DateTime? StopGeneratingDate { get; set; } public DateTime? StopGeneratingDate { get; set; }
[Required] [Required]
public DaysOfWeek ExcludeDaysOfWeek { get; set; }//bit field flags set public AyaDaysOfWeek ExcludeDaysOfWeek { get; set; }//bit field flags set
[Required] [Required]
public bool Active { get; set; } public bool Active { get; set; }
[Required] [Required]

View File

@@ -3704,7 +3704,7 @@ namespace AyaNova.Util
o.CopyAttachments=true; o.CopyAttachments=true;
o.CopyWiki=true; o.CopyWiki=true;
o.StopGeneratingDate = woDate.AddYears(1); o.StopGeneratingDate = woDate.AddYears(1);
o.ExcludeDaysOfWeek = DaysOfWeek.Saturday | DaysOfWeek.Sunday; o.ExcludeDaysOfWeek = AyaDaysOfWeek.Saturday | AyaDaysOfWeek.Sunday;
o.Active = true; o.Active = true;
o.NextServiceDate = woDate.AddDays(1); o.NextServiceDate = woDate.AddDays(1);
o.RepeatInterval = 1; o.RepeatInterval = 1;