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;
        }
Example #3
0
        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;
 }
Example #5
0
 public bool GetAllowedToStatus(PrdnJobStatus status)
 {
     return allowedStatuses.Contains(status);
 }
Example #6
0
 public void SetAllowedToStatus(PrdnJobStatus status, bool allowed)
 {
     if (allowed)
     {
         allowedStatuses.Add(status);
     }
     else
     {
         allowedStatuses.Remove(status);
     }
 }
Example #7
0
 public static bool StatusInList(PrdnJobStatus status, params PrdnJobStatus[] statusList)
 {
     return statusList.Contains(status);
 }
Example #8
0
 public virtual bool CanStatusTo(PrdnJobStatus desired)
 {
     if (InvItemExists)
     {
         return false;
     }
     if (GetAllowedToStatus(desired))
     {
         return FromStatusTo(Status, desired);
     }
     return false;
 }
Example #9
0
 public PrdnJobStatusException(PrdnJobStatus newStatus)
     : base(String.Format("Status cannot be changed to {0}.", newStatus.ToString()))
 {
 }
Example #10
0
 public PrdnJobStatusException(PrdnJobStatus fromStatus, PrdnJobStatus toStatus)
     : base(String.Format("Status cannot change from {0} to {1}.", fromStatus.ToString(), toStatus.ToString()))
 {
 }
Example #11
0
 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.");
     }
 }
Example #12
0
        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);
            }
        }
Example #13
0
 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;
     }
 }
Example #14
0
        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;
        }
Example #15
0
 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; }
 }