public ModifyScheduleCommandHandler( IScheduleRepository repository, ISchedulePeriodOfTimeChecker schedulePeriodOfTimeChecker, IUnitOfWork unitOfWork) { this.repository = repository; this.schedulePeriodOfTimeChecker = schedulePeriodOfTimeChecker; this.unitOfWork = unitOfWork; }
public NewSchedulePeriodOfTimeMustBeAvailableRule( ISchedulePeriodOfTimeChecker schedulePeriodOfTimeChecker, FacilityId facilityId, DateTime startDate, DateTime endDate) { this.schedulePeriodOfTimeChecker = schedulePeriodOfTimeChecker; this.facilityId = facilityId; this.startDate = startDate; this.endDate = endDate; }
public void Modify( ISchedulePeriodOfTimeChecker schedulePeriodOfTimeChecker, string name, DateTime startDate, DateTime endDate, List <AvailabilityData> availabilities, EmployeeId creatorId) { CheckRule(new ScheduleMustHaveAtLeastOneAvailabilityRule(availabilities)); CheckRule(new ModifiedSchedulePeriodOfTimeMustBeAvailableRule(schedulePeriodOfTimeChecker, FacilityId, Id, startDate, endDate)); CheckRule(new WorkerAvailabilityCanNotDuplicateInPeriodOfTimeRule(availabilities)); SetData(FacilityId, name, startDate, endDate, availabilities, creatorId); modifyDate = DateTime.Now; IncreaseVersion(); }
public Schedule( ISchedulePeriodOfTimeChecker schedulePeriodOfTimeChecker, FacilityId facilityId, string name, DateTime startDate, DateTime endDate, List <AvailabilityData> availabilities, EmployeeId creatorId) { CheckRule(new ScheduleMustHaveAtLeastOneAvailabilityRule(availabilities)); CheckRule(new NewSchedulePeriodOfTimeMustBeAvailableRule(schedulePeriodOfTimeChecker, facilityId, startDate, endDate)); CheckRule(new WorkerAvailabilityCanNotDuplicateInPeriodOfTimeRule(availabilities)); Id = new ScheduleId(Guid.NewGuid()); SetData(facilityId, name, startDate, endDate, availabilities, creatorId); creationDate = DateTime.Now; AddDomainEvent(new ScheduleCreatedEvent(Id)); }