public static ScheduleSchema Create(EntityId id, CinemaId cinemaId, ScheduleSchemaTimes times) { var schema = new ScheduleSchema(id, cinemaId); schema.ChangeTimes(times); schema.ClearEvents(); schema.AddDomainEvent(new ScheduleSchemaAdded(schema)); schema.Version = 1; return(schema); }
public void ChangeTimes(ScheduleSchemaTimes times) { var duplicatedTimes = times .GroupBy(h => h.ageRestriction) .Where(g => g.Count() > 1) .Select(g => g.Key) .ToList(); if (duplicatedTimes.Any()) { throw new DuplicatedScheduleTimeException(duplicatedTimes); } Times = times; AddDomainEvent(new ScheduleSchemaTimesChanged(this, times)); }
public ScheduleSchemaTimesChanged(ScheduleSchema schema, ScheduleSchemaTimes times) { Schema = schema; Times = times; }
public ScheduleSchema(EntityId id, CinemaId cinemaId, ScheduleSchemaTimes times, int?version = null) : this(id, cinemaId) { Times = times; Version = version ?? 1; }