This commit is contained in:
@@ -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 });
|
||||||
|
|
||||||
}
|
}
|
||||||
//#################################################################################################################
|
//#################################################################################################################
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user