private Attendee CreateAttendeeFromCommand(RegisterAttendeeCommand command)
 {
     return(new Attendee
     {
         FirstName = command.FirstName,
         LastName = command.LastName,
         Email = command.Email,
         Company = command.Company
     });
 }
        protected async override Task <IResponse <RegisterAttendeeResult> > HandleAsync(RegisterAttendeeCommand command, CancellationToken cancellationToken)
        {
            var workshop = await Context.WorkshopsQueryRepository.Include(x => x.Attendees).SingleOrDefaultAsync(x => x.Id == command.WorkshopId);

            if (workshop == null)
            {
                return(Response.Fail <RegisterAttendeeResult>($"Workshop with id: '{command.WorkshopId}' does not exist", ErrorMessageType.NotFound));
            }

            var attendee = CreateAttendeeFromCommand(command);

            var registerResponse = workshop.RegisterAttendee(attendee);

            if (!registerResponse.IsSuccessFull())
            {
                return(Response.Fail <RegisterAttendeeResult>(registerResponse.Error.Message, registerResponse.Error.Type));
            }

            Context.WorkshopsCommandRepository.Update(workshop);
            await Context.SaveChangesAsync();

            return(Response.Ok(new RegisterAttendeeResult(attendee.Id)));
        }