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(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(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));
}
@@ -576,7 +576,7 @@ namespace AyaNova.Api.Controllers
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");
@@ -590,13 +590,13 @@ namespace AyaNova.Api.Controllers
var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId);
ReturnList.Add(new NameIdItem() { Name = LT["DayMonday"], Id = (long)DaysOfWeek.Monday });
ReturnList.Add(new NameIdItem() { Name = LT["DayTuesday"], Id = (long)DaysOfWeek.Tuesday });
ReturnList.Add(new NameIdItem() { Name = LT["DayWednesday"], Id = (long)DaysOfWeek.Wednesday });
ReturnList.Add(new NameIdItem() { Name = LT["DayThursday"], Id = (long)DaysOfWeek.Thursday });
ReturnList.Add(new NameIdItem() { Name = LT["DayFriday"], Id = (long)DaysOfWeek.Friday });
ReturnList.Add(new NameIdItem() { Name = LT["DaySaturday"], Id = (long)DaysOfWeek.Saturday });
ReturnList.Add(new NameIdItem() { Name = LT["DaySunday"], Id = (long)DaysOfWeek.Sunday });
ReturnList.Add(new NameIdItem() { Name = LT["DayMonday"], Id = (long)AyaDaysOfWeek.Monday });
ReturnList.Add(new NameIdItem() { Name = LT["DayTuesday"], Id = (long)AyaDaysOfWeek.Tuesday });
ReturnList.Add(new NameIdItem() { Name = LT["DayWednesday"], Id = (long)AyaDaysOfWeek.Wednesday });
ReturnList.Add(new NameIdItem() { Name = LT["DayThursday"], Id = (long)AyaDaysOfWeek.Thursday });
ReturnList.Add(new NameIdItem() { Name = LT["DayFriday"], Id = (long)AyaDaysOfWeek.Friday });
ReturnList.Add(new NameIdItem() { Name = LT["DaySaturday"], Id = (long)AyaDaysOfWeek.Saturday });
ReturnList.Add(new NameIdItem() { Name = LT["DaySunday"], Id = (long)AyaDaysOfWeek.Sunday });
}
//#################################################################################################################

View File

@@ -5,7 +5,7 @@ namespace AyaNova.Biz
/// Days of week
/// </summary>
[Flags]
public enum DaysOfWeek : int
public enum AyaDaysOfWeek : int
{
//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

View File

@@ -428,7 +428,7 @@ namespace AyaNova.Biz
/// generate before span and unit
/// </summary>
internal static void SetGenerateDate(PM p)
{
{
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)
{
if(interval==0) return StartDate;
if (interval == 0) return StartDate;
switch (unit)
{
case PMTimeUnit.Minutes:
@@ -458,7 +458,7 @@ namespace AyaNova.Biz
return StartDate;
}
private async Task AutoSetAddressAsync(PM newObj)
{
@@ -5226,7 +5226,41 @@ namespace AyaNova.Biz
if (await NewServiceWorkOrderFromPMAsync(p, ct, log))
{
//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
}
}
@@ -5297,7 +5331,7 @@ namespace AyaNova.Biz
foreach (PMItemScheduledUser pmsu in pmi.ScheduledUsers)
{
var wois = new WorkOrderItemScheduledUser();
wois.ServiceRateId = pmsu.ServiceRateId;
wois.ServiceRateId = pmsu.ServiceRateId;
wois.StartDate = pmsu.StartDate;//DATE ADJUST
wois.StopDate = pmsu.StopDate;//DATE ADJUST
wois.Tags = pmsu.Tags;
@@ -5330,9 +5364,9 @@ namespace AyaNova.Biz
wil.Rate = pml.Rate;
wil.Tags = pml.Tags;
wil.TaxCodeId = pml.TaxCodeId;
wil.DueDate=pml.DueDate;//DATE ADJUST
wil.OutDate=pml.OutDate;//DATE ADJUST
wil.ReturnDate=pml.ReturnDate;//DATE ADJUST
wil.DueDate = pml.DueDate;//DATE ADJUST
wil.OutDate = pml.OutDate;//DATE ADJUST
wil.ReturnDate = pml.ReturnDate;//DATE ADJUST
woi.Loans.Add(wil);
}
@@ -5349,8 +5383,8 @@ namespace AyaNova.Biz
wilab.TaxCodeSaleId = pmlab.TaxCodeSaleId;
wilab.UserId = pmlab.UserId;
wilab.ServiceStartDate=pmlab.ServiceStartDate;//DATE ADJUST
wilab.ServiceStopDate=pmlab.ServiceStopDate;//DATE ADJUST
wilab.ServiceStartDate = pmlab.ServiceStartDate;//DATE ADJUST
wilab.ServiceStopDate = pmlab.ServiceStopDate;//DATE ADJUST
woi.Labors.Add(wilab);
}
@@ -5366,9 +5400,9 @@ namespace AyaNova.Biz
witrav.TravelRateQuantity = pmtrav.TravelRateQuantity;
witrav.TaxCodeSaleId = pmtrav.TaxCodeSaleId;
witrav.UserId = pmtrav.UserId;
witrav.TravelStartDate=pmtrav.TravelStartDate;//DATE ADJUST
witrav.TravelStopDate=pmtrav.TravelStopDate;//DATE ADJUST
witrav.TravelStartDate = pmtrav.TravelStartDate;//DATE ADJUST
witrav.TravelStopDate = pmtrav.TravelStopDate;//DATE ADJUST
woi.Travels.Add(witrav);
}
@@ -5379,7 +5413,7 @@ namespace AyaNova.Biz
wit.Sequence = pmt.Sequence;
wit.Status = pmt.Status;
wit.Task = pmt.Task;
wit.CompletedDate=pmt.CompletedDate;//DATE ADJUST
wit.CompletedDate = pmt.CompletedDate;//DATE ADJUST
woi.Tasks.Add(wit);
}
@@ -5413,9 +5447,9 @@ namespace AyaNova.Biz
wio.UnitId = pmo.UnitId;
wio.VendorSentToId = pmo.VendorSentToId;
wio.VendorSentViaId = pmo.VendorSentViaId;
wio.SentDate=pmo.SentDate;//DATE ADJUST
wio.ReturnDate=pmo.ReturnDate;//DATE ADJUST
wio.ETADate=pmo.ETADate;//DATE ADJUST
wio.SentDate = pmo.SentDate;//DATE ADJUST
wio.ReturnDate = pmo.ReturnDate;//DATE ADJUST
wio.ETADate = pmo.ETADate;//DATE ADJUST
woi.OutsideServices.Add(wio);
}

View File

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

View File

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