Пример #1
0
        public void CreateCorrection(List <AvailabilityData> corrections)
        {
            CheckRule(new WorkerAvailabilityCanNotDuplicateInPeriodOfTimeRule(corrections));

            var currentPriority = availabilities.Max(a => a.Priority);
            var nextPriority    = (short)(currentPriority + 1);

            foreach (var correction in corrections)
            {
                var corrected = availabilities.FirstOrDefault(a =>
                                                              (a.StartTime, a.EndTime).HasCommonPeriodWithEdges((correction.StartTime, correction.EndTime)));

                if (corrected != null)
                {
                    corrected.Correct(correction.StartTime, correction.EndTime, nextPriority);
                }
                else
                {
                    availabilities.Add(Availability.Create(correction.EmployeeId, corrected.StartTime, corrected.EndTime, correction.CreatorId));
                }
            }

            modifyDate = DateTime.Now;
            IncreaseVersion();

            AddDomainEvent(new ScheduleCorrectedEvent(Id));
        }
Пример #2
0
 private void SetData(FacilityId facilityId, string name, DateTime startDate, DateTime endDate, List <AvailabilityData> availabilities, EmployeeId creatorId)
 {
     this.FacilityId     = facilityId;
     this.name           = name;
     this.startDate      = startDate;
     this.endDate        = endDate;
     this.creatorId      = creatorId;
     this.availabilities = availabilities.Select(a => Availability.Create(
                                                     a.EmployeeId,
                                                     a.StartTime,
                                                     a.EndTime,
                                                     a.EmployeeId
                                                     )).ToList();
 }