/// <summary> /// Возвращает чеки которые нужно выполнить на назначенный ресурс lifeLenghtSourcе /// если вернет null то значит входные данные не верны /// </summary> /// <param name="checkInput"></param> /// <param name="schedule"></param> /// <param name="lifeLenghtSource"></param> /// <returns></returns> public static MaintenanceCheckGroupCollection GetFirstCheckBySource(this IEnumerable <MaintenanceCheck> checkInput, bool schedule, int?lifeLenghtSource) { //if (lifeLenghtSource == null || lifeLenghtSource.Value == 0) return null; if (lifeLenghtSource == null) { return(null); } //сортировка коллекции по типу Shedule; MaintenanceCheckCollection sourceCollection = new MaintenanceCheckCollection(checkInput.Where(c => c.Schedule == schedule).ToList()); //поиск минимального шага int?minStep = sourceCollection.FindMinStep(schedule); if (minStep == null) { return(null); } List <MaintenanceCheckGroupByType> checksGroups = new List <MaintenanceCheckGroupByType>(sourceCollection.GroupingCheckByType(minStep, schedule)); if (checksGroups.Count == 0) { return(null); } return(GetCheckBySource(checksGroups, lifeLenghtSource, minStep, schedule)); }
/// <summary> /// Возвращает чеки которые нужно выполнить на следующем шаге(должен быть выполнен хотя бы один шаг) /// если вернет null то значит входные данные не верны /// </summary> /// <param name="checkInput"></param> /// <param name="schedule"></param> /// <returns></returns> public static MaintenanceCheckGroupCollection GetNextCheckByLastCompliane(this IEnumerable <MaintenanceCheck> checkInput, bool schedule) { //сортировка коллекции по типу Shedule; MaintenanceCheckCollection sourceCollection = new MaintenanceCheckCollection(checkInput.Where(c => c.Schedule == schedule).ToList()); //поиск минимального шага int?minStep = sourceCollection.FindMinStep(schedule); if (minStep == null) { return(null); } List <MaintenanceCheckGroupByType> checksGroups = new List <MaintenanceCheckGroupByType>(sourceCollection.GroupingCheckByType(minStep, schedule)); if (checksGroups.Count == 0) { return(null); } return(schedule ? GetNextCheckSchedule(checkInput, checksGroups, minStep) : GetNextCheckUnschedule(checkInput, checksGroups, minStep)); }