Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        /// <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());
        }
Beispiel #3
0
 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();
     }
 }
Beispiel #4
0
        /// <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());
        }