private void ProcessRecurringJobCard(RecurringJobCard RecurringJobCard) { try { if (RecurringJobCard.WorkFlowStatus == Ignyt.BusinessInterface.WorkFlow.Enum.WorkFlowStatus.Enabled) { MyWorkbench.BusinessObjects.Helpers.RecurringHelper.ExecuteRecurring(RecurringJobCard); } } catch (Exception ex) { this.TaskExceptionList.TaskExceptions.Add(ex); } }
public static void ExecuteRecurring(RecurringJobCard RecurringJobCard) { using (UnitOfWork unitOfWork = new UnitOfWork(RecurringJobCard.Session.DataLayer)) { var myCloner = new DevExpress.Persistent.Base.Cloner(); RecurringJobCard recurringJobCard = unitOfWork.FindObject <RecurringJobCard>(CriteriaOperator.Parse("Oid == ?", RecurringJobCard.Oid)); if (recurringJobCard.WorkFlowStatus == WorkFlowStatus.Enabled && (recurringJobCard.NextDate == null || recurringJobCard.NextDate <= MyWorkbench.BaseObjects.Constants.Constants.DateTimeTimeZone(unitOfWork))) { JobCard jobCard = new JobCard(unitOfWork); recurringJobCard.CopyProperties(jobCard); jobCard.BookedTime = recurringJobCard.NextDate != null ? recurringJobCard.NextDate : recurringJobCard.Starting; jobCard.BookedTimeEnd = ((DateTime)jobCard.BookedTime).AddHours(Constants.AppointmentLength(jobCard.Session)); jobCard.Party = recurringJobCard.Party; if (recurringJobCard.Items.Count >= 1) { var j = recurringJobCard.Items.Count; for (int i = 0; i < j; i++) { jobCard.Items.Add(myCloner.CloneTo(recurringJobCard.Items[i], typeof(WorkflowItem)) as WorkflowItem); } } if (recurringJobCard.WorkflowResources.Count >= 1) { var j = recurringJobCard.WorkflowResources.Count; for (int i = 0; i < j; i++) { jobCard.WorkflowResources.Add(myCloner.CloneTo(recurringJobCard.WorkflowResources[i], typeof(WorkflowResource)) as WorkflowResource); } } if (recurringJobCard.Equipment.Count >= 1) { var j = recurringJobCard.Equipment.Count; for (int i = 0; i < j; i++) { jobCard.Equipment.Add(myCloner.CloneTo(recurringJobCard.Equipment[i], typeof(WorkFlowEquipment)) as WorkFlowEquipment); } } recurringJobCard.AdvanceNextDate(); // New Object Tracking (jobCard as WorkflowBase).ChildItems.Add(recurringJobCard); (jobCard as WorkflowBase).Tracking.Add(CreateTracking(unitOfWork, jobCard, string.Format("Created from {0}", recurringJobCard.No))); //Current Object Tracking recurringJobCard.ChildItems.Add(jobCard as WorkflowBase); recurringJobCard.Tracking.Add(CreateTracking(unitOfWork, jobCard, string.Format("Converted to {0}", (jobCard as WorkflowBase).GetType().Name))); } unitOfWork.CommitChanges(); } }