/// <summary> /// 离线代换班 /// </summary> public void SwapingForSubEvent(Pair <Guid> agentPair, Pair <long> assignmentPair) { _attendanceRepository.Clear(); Applier.Term = _attendanceRepository.Get <Term>(assignmentPair.Applier); Replier.Term = _attendanceRepository.Get <Term>(assignmentPair.Replier); var dateA = new DateRange(Applier.Term.Start, Applier.Term.End); var dateB = new DateRange(Replier.Term.Start, Replier.Term.End); _attendanceRepository.Clear(); //初始化班表信息 Applier.InitializeTimeBox(agentPair.Applier, dateA); Replier.InitializeTimeBox(agentPair.Replier, dateB); Applier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateA, dateB), assignmentPair.Applier); Replier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateB, dateA), assignmentPair.Replier); //验证 ValidateTermGapHasMatched(); //保存日志 SaveLog(); //删除班 DeleteTerm(); //交换班表 SwapSpecificTermIsNeedSeat(); //验证交换信息 VaildateSwapMessage(); }
/// <summary> /// 离线代换班验证 /// </summary> public Dictionary <Guid, Dictionary <string, bool> > SwapingForSubEventValidate(Pair <Guid> agentPair, Pair <long> subEventPair) { _attendanceRepository.Clear(); Applier.Term = _attendanceRepository.Get <Term>(subEventPair.Applier); Replier.Term = _attendanceRepository.Get <Term>(subEventPair.Replier); var dateA = new DateRange(Applier.Term.Start, Applier.Term.End); var dateB = new DateRange(Replier.Term.Start, Replier.Term.End); _attendanceRepository.Clear(); //初始化班表信息 Applier.InitializeTimeBox(agentPair.Applier, dateA); Replier.InitializeTimeBox(agentPair.Replier, dateB); Applier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateA, dateB), subEventPair.Applier); Replier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateB, dateA), subEventPair.Replier); Applier.IsNeedSeat = Replier.IsNeedSeat = Applier.Term.IsNeedSeat != Replier.Term.IsNeedSeat; return(SetValidates()); }
private void Initialize(Pair <Guid> agentPair, bool isLaborRule) { if (isLaborRule) { Applier.InitializeAttendance(agentPair.Applier); Replier.InitializeAttendance(agentPair.Replier); } else { Applier.ScheduleDate = Applier.SwapingDate; Replier.ScheduleDate = Replier.SwapingDate; } Applier.InitializeTimeBox(agentPair.Applier); Replier.InitializeTimeBox(agentPair.Replier); if (isLaborRule) { Applier.GetQLaborRule(); Replier.GetQLaborRule(); } }
/// <summary> /// 基本代换班验证 /// </summary> public Dictionary <Guid, Dictionary <string, bool> > SwapingForTermValidate(Pair <Guid> agentPair, Pair <long?> assignmentPair, Pair <DateRange> dateRange) { _attendanceRepository.Clear(); //初始化并做单一验证 Applier.InitializeTimeBox(agentPair.Applier, dateRange.Applier); Replier.InitializeTimeBox(agentPair.Replier, dateRange.Replier); Applier.InitializeSwapingForTerm(assignmentPair.Applier); Replier.InitializeSwapingForTerm(assignmentPair.Replier); //验证是否重叠 if (assignmentPair.Applier.HasValue) { Applier.HasExchanged = Replier.TimeBox.CollideTerms(dateRange.Applier).Where(o => o.Level == 0).Where(o => assignmentPair.Replier.HasValue ? o.Id != assignmentPair.Replier:true).Any(); } if (assignmentPair.Replier.HasValue) { Replier.HasExchanged = Applier.TimeBox.CollideTerms(dateRange.Replier).Where(o => o.Level == 0).Where(o => assignmentPair.Applier.HasValue ? o.Id != assignmentPair.Applier : true).Any(); } //验证换完之后TimeOff移至后一天,验证后一天是否重复 return(SetValidates()); }