// Update instructor with course public static InstructorCreateWithCourses.Response Handle(IRepository repository, InstructorCreateWithCourses.Request request) { // Validation now performed in the dispacther decorators (See AutoValidate<T> in the DomainBootstrapper class) var container = new EntityStateWrapperContainer(); container.AddEntity(InstructorFactory.Create(repository, request.CommandModel)); var validationDetails = repository.Save(container); var instructorId = default(int?); if (!validationDetails.HasValidationIssues) instructorId = container.FindEntity<Instructor>().ID; return new InstructorCreateWithCourses.Response(validationDetails, instructorId); }
public static Instructor Create(IQueryRepository queryRepository, InstructorCreateWithCourses.CommandModel commandModel) { // could use Course.CreatePartial here and attachEntities using EntityStateWrapperContainer var courses = commandModel.SelectedCourses == null ? new Course[0].ToList() : queryRepository.GetEntities<Course>(new FindByIdsSpecificationStrategy<Course>(p => p.CourseID, commandModel.SelectedCourses)).ToList(); var instructor = new Instructor { HireDate = commandModel.HireDate, FirstMidName = commandModel.FirstMidName, LastName = commandModel.LastName, Courses = courses, OfficeAssignment = new OfficeAssignment { Location = commandModel.OfficeLocation }, }; return instructor; }