Beispiel #1
0
        /// <summary>
        /// 基本代换班
        /// </summary>
        public void SwapingForTerm(Pair <Guid> agentPair, Pair <long?> assignmentPair, bool isLaborRule)
        {
            ReSet();
            _attendanceRepository.Clear();
            GetSwapingDate(assignmentPair);
            Initialize(agentPair, isLaborRule);

            Applier.InitializeSwapingForTerm(assignmentPair.Applier);
            Replier.InitializeSwapingForTerm(assignmentPair.Replier);
            if (Applier.Term != null)
            {
                Replier.TimeOff = Replier.TimeBox.SpecificTerm <TimeOff>().CollideTerms(Applier.Term).FirstOrDefault();
            }
            if (Replier.Term != null)
            {
                Applier.TimeOff = Applier.TimeBox.SpecificTerm <TimeOff>().CollideTerms(Replier.Term).FirstOrDefault();
            }
            //删除班
            DeleteTerm();
            //设置TimeOff
            SetTimeOff();
            //交换班表
            SwapSpecificTerm();
            SwapSpecificSubEvents();
            //验证交换信息
            VaildateSwapMessage();
        }
Beispiel #2
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());
        }