public async Task CreateAsync(CreateSession cmd) { cmd.Validate(); if (await _sessionsDao.ExistsByIdAsync(cmd.Id)) { throw new ObjectAlreadyExitsException(cmd.Id, typeof(SeminarSession)); } if (await _sessionsDao.ExistsByWhereAsync($"SeminarId = '{cmd.SeminarId}' AND Status != '{SessionStatus.Finished}'")) { throw new DomainException($"Can't create a seminar: {cmd.SeminarId} session until all sessions have finished"); } if (await _seminarDao.ExistsAsync(cmd.Id)) { throw new ObjectNotFoundException(cmd.SeminarId, typeof(Seminar)); } await _sessionsDao.AddAsync(new SeminarSession(cmd)); }