public SessionAttendee AddAttendeeSession(AddAttendeeAtSession cmd, Seminar seminar) { if (Status != SessionStatus.Running) { throw new DomainException($"Can't add attendee at {Status} session"); } var registered = seminar.RegisteredAttendees.Any(x => x.Id == cmd.Id); if (!registered) { throw new DomainException($"Attendee {cmd.Id} not registered at seminar"); } var attendeeToAdd = new SessionAttendee { Id = cmd.Id, SessionId = cmd.SessionId, AttendeeStartTime = DateTime.Now, }; Attendees.Add(attendeeToAdd); return(attendeeToAdd); }
public async Task AddAttendeeAsync(AddAttendeeAtSession cmd) { cmd.Validate(); var session = await _sessionsDao.GetAsync(cmd.SessionId); if (session == null) { throw new ObjectAlreadyExitsException(cmd.SessionId, typeof(SeminarSession)); } var seminar = await _seminarDao.GetAsync(session.SeminarId); if (seminar == null) { throw new ObjectNotFoundException(session.SeminarId, typeof(SeminarSession)); } var attendee = session.AddAttendeeSession(cmd, seminar); await _sessionsDao.AddAttendeeAsync(attendee); }