public ModifyScheduleCommandHandler(
     IScheduleRepository repository,
     ISchedulePeriodOfTimeChecker schedulePeriodOfTimeChecker,
     IUnitOfWork unitOfWork)
 {
     this.repository = repository;
     this.schedulePeriodOfTimeChecker = schedulePeriodOfTimeChecker;
     this.unitOfWork = unitOfWork;
 }
예제 #2
0
 public NewSchedulePeriodOfTimeMustBeAvailableRule(
     ISchedulePeriodOfTimeChecker schedulePeriodOfTimeChecker,
     FacilityId facilityId,
     DateTime startDate,
     DateTime endDate)
 {
     this.schedulePeriodOfTimeChecker = schedulePeriodOfTimeChecker;
     this.facilityId = facilityId;
     this.startDate  = startDate;
     this.endDate    = endDate;
 }
예제 #3
0
        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();
        }
예제 #4
0
        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));
        }