public override bool CanStatusTo(PrdnJobStatus desired) { if (InvItemExists) { return false; } if (GetAllowedToStatus(desired)) { bool canStatus = FromStatusTo(Status, desired); if (StatusInList(desired, PrdnJobStatus.Scheduled, PrdnJobStatus.Processing)) { canStatus = canStatus || ((Status == PrdnJobStatus.Canceled) && GetAllowedToStatus(PrdnJobStatus.Canceled)); } return canStatus; } return false; }
protected ProductionScan AddScan(string value, ScanResult result, PrdnJobStatus? status = null, string msg = null) { DateTime nowTime = DateTime.Now; ProductionScan newScan = new ProductionScan(nowTime, GetCurrentUserID(), value, result, status, msg); if ((result != ScanResult.CstItemCreatedAndPrinted) && (result != ScanResult.CstItemCreatedNotPrinted) && (result != ScanResult.CompletedAndPrinted) && (result != ScanResult.CompletedNotPrinted)) { LastScanModel lastScan = Session[LastScanKey] as LastScanModel; if ((lastScan != null) && (lastScan.Value == value) && (lastScan.Result == result)) { TimeSpan ts = lastScan.ScanDt.Subtract(nowTime); if (ts.Minutes < 2) { lastScan.ScanDt = nowTime; Session[LastScanKey] = lastScan; return newScan; } } } PrdnDBContext.ProductionScans.AddObject(newScan); PrdnDBContext.SaveChanges(); Session[LastScanKey] = new LastScanModel { Value = newScan.Value, Result = newScan.Result, ScanDt = newScan.ScanDt }; return newScan; }
public ProductionScan(DateTime date, decimal userID, string value, ScanResult result, PrdnJobStatus? status, string msg) : base() { int i = result.ConvertToInt(); Value = value; ScanDt = date; UserID = userID; Result = result; if (status != null) { JobStatusStr = ((PrdnJobStatus)status).DbValStr(); } Message = msg; }
public static new bool FromStatusTo(PrdnJobStatus current, PrdnJobStatus desired) { if (desired == PrdnJobStatus.New) { return false; } else if (desired == PrdnJobStatus.Pending) { return false; } else if (desired == PrdnJobStatus.Scheduled) { return StatusInList(current, PrdnJobStatus.Scheduled, PrdnJobStatus.Processing); } else if (desired == PrdnJobStatus.Processing) { return StatusInList(current, PrdnJobStatus.Scheduled, PrdnJobStatus.Processing); } else if (desired == PrdnJobStatus.Completed) { return StatusInList(current, PrdnJobStatus.Processing, PrdnJobStatus.Completed); } else if (desired == PrdnJobStatus.Canceled) { return StatusInList(current, PrdnJobStatus.Scheduled, PrdnJobStatus.Processing, PrdnJobStatus.Canceled); } else return false; }
public bool GetAllowedToStatus(PrdnJobStatus status) { return allowedStatuses.Contains(status); }
public void SetAllowedToStatus(PrdnJobStatus status, bool allowed) { if (allowed) { allowedStatuses.Add(status); } else { allowedStatuses.Remove(status); } }
public static bool StatusInList(PrdnJobStatus status, params PrdnJobStatus[] statusList) { return statusList.Contains(status); }
public virtual bool CanStatusTo(PrdnJobStatus desired) { if (InvItemExists) { return false; } if (GetAllowedToStatus(desired)) { return FromStatusTo(Status, desired); } return false; }
public PrdnJobStatusException(PrdnJobStatus newStatus) : base(String.Format("Status cannot be changed to {0}.", newStatus.ToString())) { }
public PrdnJobStatusException(PrdnJobStatus fromStatus, PrdnJobStatus toStatus) : base(String.Format("Status cannot change from {0} to {1}.", fromStatus.ToString(), toStatus.ToString())) { }
protected void ClearStatus(PrdnJobStatus status) { if (status == PrdnJobStatus.Scheduled) { ClearStatus(PrdnJobStatus.Processing); ScheduledDt = null; ScheduledUserID = null; } else if (status == PrdnJobStatus.Processing) { ClearStatus(PrdnJobStatus.Completed); ProcessedDt = null; ProcessedUserID = null; } else if (status == PrdnJobStatus.Completed) { CompletedDt = null; CompletedUserID = null; } else if (status == PrdnJobStatus.Canceled) { CanceledDt = null; CanceledUserID = null; } else { throw new PrdnJobStatusException("Job Status " + status.ToString() + "cannot be cleared."); } }
protected void AssignStatusInfo(PrdnJobStatus curStatus, PrdnJobStatus newStatus, decimal userID, DateTime statusDate) { if (newStatus == PrdnJobStatus.Canceled) { CanceledDt = statusDate; CanceledUserID = userID; } else { if (newStatus == PrdnJobStatus.Pending) { ClearStatus(PrdnJobStatus.Scheduled); } else { if ((curStatus != PrdnJobStatus.Canceled) && ((int)newStatus != ((int)curStatus + 1))) { throw new PrdnJobStatusException(curStatus, newStatus); } if (newStatus == PrdnJobStatus.Scheduled) { ClearStatus(PrdnJobStatus.Processing); ScheduledDt = statusDate; ScheduledUserID = userID; } else if (newStatus == PrdnJobStatus.Processing) { ClearStatus(PrdnJobStatus.Completed); ProcessedDt = statusDate; ProcessedUserID = userID; } else if (newStatus == PrdnJobStatus.Completed) { CompletedDt = statusDate; CompletedUserID = userID; } } ClearStatus(PrdnJobStatus.Canceled); } }
protected virtual PrdnJobStatus AllowStatusSkip(PrdnJobStatus curStatus, PrdnJobStatus newStatus, decimal userID, DateTime? date = null) { if ((curStatus == PrdnJobStatus.New) && (newStatus == PrdnJobStatus.Scheduled)) { return UpdateStatus(PrdnJobStatus.Pending, userID, date); } else { return curStatus; } }
public PrdnJobStatus UpdateStatus(PrdnJobStatus newStatus, decimal userID, DateTime? date = null) { DateTime statusDate = date ?? DateTime.Now; PrdnJobStatus curStatus = Status; if (newStatus == curStatus) { return curStatus; } if (newStatus == PrdnJobStatus.New) { throw new PrdnJobStatusException(newStatus); } curStatus = AllowStatusSkip(curStatus, newStatus, userID, date); AssignStatusInfo(curStatus, newStatus, userID, statusDate); StatusStr = newStatus.DbValStr(); return Status; }
public static DateTime? GetDateFromStatus(PrdnJobStatus status, DateTime? createdDt, DateTime? scheduledDt, DateTime? processingDt, DateTime? completedDt, DateTime? canceledDt) { if (status == PrdnJobStatus.Pending) { return createdDt; } else if (status == PrdnJobStatus.Scheduled) { return scheduledDt; } else if (status == PrdnJobStatus.Processing) { return processingDt; } else if (status == PrdnJobStatus.Completed) { return completedDt; } else if (status == PrdnJobStatus.Canceled) { return canceledDt; } else { return null; } }