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)); }
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(); }