Ejemplo n.º 1
0
        private void ProcessHourlySchedules()
        {
            try
            {
                using (ProERPContext context = new ProERPContext())
                {
                    var dateTime = DateTime.Now;
                    //var today = new DateTime(dateTime.Ticks - (dateTime.Ticks % TimeSpan.TicksPerSecond),dateTime.Kind);
                    var today     = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, 0, 0);
                    var schedules = context.PreventiveMaintenances.Where(w => !w.IsDeleted && w.ScheduleType == 6 && w.NextReviewDate <= today).ToArray();

                    for (int i = 0; i < schedules.Length; i++)
                    {
                        var schedule = schedules[i];
                        var line     = context.Lines.FirstOrDefault(a => a.Id == schedule.LineId);
                        var machine  = context.Machines.FirstOrDefault(a => a.Id == schedule.MachineId);
                        if (line == null || machine == null)
                        {
                            continue;
                        }
                        if (!context.PreventiveReviewHistories.Any(a => a.PreventiveId == schedule.Id && a.ScheduledReviewDate == schedule.NextReviewDate))
                        {
                            context.PreventiveReviewHistories.Add(new Data.Models.PreventiveReviewHistory {
                                PreventiveId = schedule.Id, Notes = null, ReviewBy = null, ReviewDate = null, ScheduledReviewDate = schedule.NextReviewDate, IsLaps = false, IsOverdue = false, IsLineActive = line.IsActive, IsMachineActive = machine.IsActive
                            });
                        }
                    }
                    context.SaveChanges();

                    // Overdues
                    var overdueSchedules = context.PreventiveMaintenances.Where(w => !w.IsDeleted && w.ScheduleType == 6 && w.NextReviewDate < today).ToArray();
                    for (int i = 0; i < overdueSchedules.Length; i++)
                    {
                        var schedule          = overdueSchedules[i];
                        var newNextReviewDate = DateTime.Now.Date;
                        var existingReview    = context.PreventiveReviewHistories.FirstOrDefault(a => a.PreventiveId == schedule.Id && a.ScheduledReviewDate == schedule.NextReviewDate);
                        var isLaps            = false;
                        var isOverDue         = false;

                        // Hourly
                        newNextReviewDate = schedule.NextReviewDate.AddHours(1 * (schedule.Interval));
                        if ((today - schedule.NextReviewDate).Hours >= ((newNextReviewDate - schedule.NextReviewDate).TotalHours))
                        {
                            isOverDue = true;
                        }
                        if ((today - schedule.NextReviewDate).Hours > ((newNextReviewDate - schedule.NextReviewDate).TotalHours + 4))
                        {
                            isLaps = true;
                        }

                        if (existingReview != null)
                        {
                            if (existingReview.ReviewBy == null)
                            {
                                existingReview.IsLaps    = isLaps;
                                existingReview.IsOverdue = isOverDue;
                            }
                        }

                        if (isLaps)
                        {
                            schedule.NextReviewDate = newNextReviewDate;

                            var line    = context.Lines.FirstOrDefault(a => a.Id == schedule.LineId);
                            var machine = context.Machines.FirstOrDefault(a => a.Id == schedule.MachineId);
                            if (line != null || machine != null)
                            {
                                context.PreventiveReviewHistories.Add(new Data.Models.PreventiveReviewHistory {
                                    PreventiveId = schedule.Id, Notes = null, ReviewBy = null, ReviewDate = null, ScheduledReviewDate = schedule.NextReviewDate, IsLaps = false, IsOverdue = false, IsLineActive = line.IsActive, IsMachineActive = machine.IsActive
                                });
                            }
                        }
                    }

                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 2
0
        public void Start()
        {
            ProERPContext context;

            try
            {
                ProcessHourlySchedules();
                context = new ProERPContext();

                var today = DateTime.Now.Date;

                var schedules = context.PreventiveMaintenances.Where(w => !w.IsDeleted && w.ScheduleType != 5 && w.ScheduleType != 6 && w.NextReviewDate <= today).ToArray();
                for (int i = 0; i < schedules.Length; i++)
                {
                    var schedule = schedules[i];
                    var line     = context.Lines.FirstOrDefault(a => a.Id == schedule.LineId);
                    var machine  = context.Machines.FirstOrDefault(a => a.Id == schedule.MachineId);
                    if (line == null || machine == null)
                    {
                        continue;
                    }
                    if (!context.PreventiveReviewHistories.Any(a => a.PreventiveId == schedule.Id && a.ScheduledReviewDate == schedule.NextReviewDate))
                    {
                        context.PreventiveReviewHistories.Add(new Data.Models.PreventiveReviewHistory {
                            PreventiveId = schedule.Id, Notes = null, ReviewBy = null, ReviewDate = null, ScheduledReviewDate = schedule.NextReviewDate, IsLaps = false, IsOverdue = false, IsLineActive = line.IsActive, IsMachineActive = machine.IsActive
                        });
                    }
                }
                context.SaveChanges();

                // Overdues
                var overdueSchedules = context.PreventiveMaintenances.Where(w => !w.IsDeleted && w.ScheduleType != 5 && w.ScheduleType != 6 && w.NextReviewDate < today).ToArray();
                for (int i = 0; i < overdueSchedules.Length; i++)
                {
                    var schedule          = overdueSchedules[i];
                    var newNextReviewDate = DateTime.Now.Date;
                    var existingReview    = context.PreventiveReviewHistories.FirstOrDefault(a => a.PreventiveId == schedule.Id && a.ScheduledReviewDate == schedule.NextReviewDate);
                    var isLaps            = false;
                    var isOverDue         = false;

                    if (schedule.ScheduleType == 1) // Daily
                    {
                        newNextReviewDate = schedule.NextReviewDate.AddDays(1 * (schedule.Interval));
                        if ((today - schedule.NextReviewDate).Days > 0)
                        {
                            isLaps = true;
                        }
                    }
                    else if (schedule.ScheduleType == 2) // Weekly
                    {
                        newNextReviewDate = schedule.NextReviewDate.AddDays(7 * (schedule.Interval));
                        if ((today - schedule.NextReviewDate).Days >= 7)
                        {
                            isOverDue = true;
                        }
                        if ((today - schedule.NextReviewDate).Days > 9)
                        {
                            isLaps = true;
                        }
                    }
                    else if (schedule.ScheduleType == 3 && schedule.Interval < 6) // Monthly
                    {
                        newNextReviewDate = schedule.NextReviewDate.AddMonths(1 * (schedule.Interval));
                        if ((today - schedule.NextReviewDate).Days >= ((newNextReviewDate - schedule.NextReviewDate).Days))
                        {
                            isOverDue = true;
                        }
                        if ((today - schedule.NextReviewDate).Days > ((newNextReviewDate - schedule.NextReviewDate).Days + 7))
                        {
                            isLaps = true;
                        }
                    }
                    else if (schedule.ScheduleType == 3 && schedule.Interval >= 6) // Monthly
                    {
                        newNextReviewDate = schedule.NextReviewDate.AddMonths(1 * (schedule.Interval));
                        if ((today - schedule.NextReviewDate).Days >= ((newNextReviewDate - schedule.NextReviewDate).Days))
                        {
                            isOverDue = true;
                        }
                        if ((today - schedule.NextReviewDate).Days > ((newNextReviewDate - schedule.NextReviewDate).Days + 10))
                        {
                            isLaps = true;
                        }
                    }
                    else if (schedule.ScheduleType == 4) // Yearly
                    {
                        newNextReviewDate = schedule.NextReviewDate.AddYears(1 * (schedule.Interval));
                        if ((today - schedule.NextReviewDate).Days >= ((newNextReviewDate - schedule.NextReviewDate).Days))
                        {
                            isOverDue = true;
                        }
                        if ((today - schedule.NextReviewDate).Days > ((newNextReviewDate - schedule.NextReviewDate).Days + 10))
                        {
                            isLaps = true;
                        }
                    }

                    //if (existingReview == null)
                    //{
                    //    context.PreventiveReviewHistories.Add(new Data.Models.PreventiveReviewHistory { PreventiveId = schedule.Id, Notes = null, ReviewBy = null, ReviewDate = null, ScheduledReviewDate = schedule.NextReviewDate, IsLaps = isLaps, IsOverdue = isOverDue });
                    //}
                    //else
                    if (existingReview != null)
                    {
                        if (existingReview.ReviewBy == null)
                        {
                            existingReview.IsLaps    = isLaps;
                            existingReview.IsOverdue = isOverDue;
                        }
                    }

                    if (isLaps)
                    {
                        //existingReview.IsLaps = true;
                        schedule.NextReviewDate = newNextReviewDate;

                        var line    = context.Lines.FirstOrDefault(a => a.Id == schedule.LineId);
                        var machine = context.Machines.FirstOrDefault(a => a.Id == schedule.MachineId);
                        if (line != null || machine != null)
                        {
                            context.PreventiveReviewHistories.Add(new Data.Models.PreventiveReviewHistory {
                                PreventiveId = schedule.Id, Notes = null, ReviewBy = null, ReviewDate = null, ScheduledReviewDate = schedule.NextReviewDate, IsLaps = false, IsOverdue = false, IsLineActive = line.IsActive, IsMachineActive = machine.IsActive
                            });
                        }
                    }
                }

                context.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                context = null;
            }
        }