// ////////////////////////////////////////////////////////////////////////
 // PUBLIC METHODS
 //
 /// <summary>
 /// LoadByUnitIdWithoutInProgressRules
 /// </summary>
 /// <param name="unitId">unitId</param>
 /// <param name="companyId">companyId</param>
 public void LoadByUnitIdWithoutInProgressRules(int unitId, int companyId)
 {
     UnitInformationChecklistDetailsGateway unitInformationChecklistDetailsGateway = new UnitInformationChecklistDetailsGateway(Data);
     unitInformationChecklistDetailsGateway.LoadByUnitIdWithoutInProgressRules(unitId, companyId);
 }
        /// <summary>
        /// Save
        /// </summary>
        /// <param name="unitId">unitId</param>
        /// <param name="companyId">companyId</param>
        public void Save(int unitId, int companyId)
        {
            UnitInformationChecklistDetailsGateway unitInformationChecklistDetailsGateway = new UnitInformationChecklistDetailsGateway(Data);

            foreach (UnitInformationTDS.ChecklistDetailsRow row in (UnitInformationTDS.ChecklistDetailsDataTable)Data.Tables["ChecklistDetails"])
            {
                if (!row.Deleted)
                {
                    // Unchanged values
                    int ruleId = row.RuleID;
                    bool deleted = false;

                    // Original values
                    DateTime? originalLastService = null; if (unitInformationChecklistDetailsGateway.GetLastServiceOriginal(ruleId).HasValue) originalLastService = (DateTime)unitInformationChecklistDetailsGateway.GetLastServiceOriginal(ruleId);
                    DateTime? originalNextDue = null; if (unitInformationChecklistDetailsGateway.GetNextDueOriginal(ruleId).HasValue) originalNextDue = (DateTime)unitInformationChecklistDetailsGateway.GetNextDueOriginal(ruleId);
                    bool originalDone = unitInformationChecklistDetailsGateway.GetDoneOriginal(ruleId);
                    string originalState = unitInformationChecklistDetailsGateway.GetStateOriginal(ruleId);

                    // New values
                    DateTime? newLastService = null; if (unitInformationChecklistDetailsGateway.GetLastService(ruleId).HasValue) newLastService = (DateTime)unitInformationChecklistDetailsGateway.GetLastService(ruleId);
                    DateTime? newNextDue = null; if (unitInformationChecklistDetailsGateway.GetNextDue(ruleId).HasValue) newNextDue = (DateTime)unitInformationChecklistDetailsGateway.GetNextDue(ruleId);
                    bool newDone = unitInformationChecklistDetailsGateway.GetDone(ruleId);
                    string newState = unitInformationChecklistDetailsGateway.GetState(ruleId);

                    if (row.Frequency != "Only once")
                    {
                        if (newLastService.HasValue)
                        {
                            // Get next due
                            DateTime timeToAdded = new DateTime(((DateTime)newLastService).Year, ((DateTime)newLastService).Month, ((DateTime)newLastService).Day);

                            if (row.Frequency == "Monthly") newNextDue = timeToAdded.AddMonths(1);
                            if (row.Frequency == "Every 2 months") newNextDue = timeToAdded.AddMonths(2);
                            if (row.Frequency == "Every 3 months") newNextDue = timeToAdded.AddMonths(3);
                            if (row.Frequency == "Every 4 months") newNextDue = timeToAdded.AddMonths(4);
                            if (row.Frequency == "Every 6 months") newNextDue = timeToAdded.AddMonths(6);
                            if (row.Frequency == "Yearly") newNextDue = timeToAdded.AddYears(1);
                        }
                    }

                    // Update
                    Checklist checklist = new Checklist(null);
                    checklist.UpdateDirect(unitId, ruleId, originalLastService, originalNextDue, originalDone, originalState, deleted, companyId, unitId, ruleId, newLastService, newNextDue, newDone, newState, deleted, companyId);
                }
                else
                {
                    int ruleId = row.RuleID;
                    Checklist checklist = new Checklist(null);
                    checklist.DeleteDirect(ruleId, unitId, companyId);
                }
            }
        }
 /// <summary>
 /// Load
 /// </summary>
 /// <param name="unitId">unitId</param>
 /// <param name="companyId">companyId</param>
 public void Load(int unitId, int companyId)
 {
     UnitInformationChecklistDetailsGateway unitInformationChecklistDetailsGateway = new UnitInformationChecklistDetailsGateway(Data);
     unitInformationChecklistDetailsGateway.LoadByUnitId(unitId, companyId);
 }