/// <summary> /// 时段代换班 /// </summary> public void SwapingForDateRange(Pair <Guid> agentPair, Pair <DateRange> dateRange, bool isLaborRule) { ReSet(); _attendanceRepository.Clear(); Applier.SwapingDate = Replier.SwapingDate = dateRange.Applier.GetSwapingDate(dateRange.Applier, dateRange.Replier); Initialize(agentPair, isLaborRule); Applier.InitializeSwapingForDateRange(Applier.SwapingDate); Replier.InitializeSwapingForDateRange(Replier.SwapingDate); //删除请假 DeleteTerms(new Pair <IList <Term> >(Applier.AbsentEvents, Replier.AbsentEvents)); //删除班表 DeleteTerms(new Pair <IList <Term> >(Applier.TempTerms, Replier.TempTerms)); if (dateRange.Applier == dateRange.Replier) { Applier.DealWithDateRange(Replier, dateRange.Applier); Replier.DealWithDateRange(Applier, dateRange.Replier); } else { Applier.DealWithDateRange(Replier, dateRange); Replier.DealWithDateRange(Applier, new Pair <DateRange>(dateRange.Replier, dateRange.Applier)); } //验证交换信息 VaildateSwapMessage(); }
/// <summary> /// 时段代换班验证 /// </summary> public Dictionary <Guid, Dictionary <string, bool> > SwapingForDateRangeValidate(Pair <Guid> agentPair, Pair <DateRange> dateRange) { ReSet(); _attendanceRepository.Clear(); Applier.SwapingDate = Replier.SwapingDate = dateRange.Applier.GetSwapingDate(dateRange.Applier, dateRange.Replier); Initialize(agentPair, false); Applier.InitializeSwapingForDateRange(Applier.SwapingDate); Replier.InitializeSwapingForDateRange(Replier.SwapingDate); if (dateRange.Applier == dateRange.Replier) { if (Replier.NotSubEventAndGap(dateRange.Applier)) { Applier.HasExchanged = true; } if (Applier.NotSubEventAndGap(dateRange.Replier)) { Replier.HasExchanged = true; } } else { //获取切割时间 var cutDateRange = DateRange.Cut(dateRange.Applier, dateRange.Replier); var applierRegion = cutDateRange.Where(t => t.Item2 == RegionType.Applier).Select(o => o.Item1); var replierRegion = cutDateRange.Where(t => t.Item2 == RegionType.Replier).Select(o => o.Item1); foreach (var range in applierRegion) { if (Replier.NotSubEventAndGap(range)) { Applier.HasExchanged = true; break; } } foreach (var range in replierRegion) { if (Applier.NotSubEventAndGap(range)) { Replier.HasExchanged = true; break; } } } return(SetValidates()); }