public void Setup()
        {
            _instructorOut           = TestDataHelper.InstructorData.GetInstructorOut();
            _instructorsOut          = TestDataHelper.InstructorData.GetInstructorsOut().ToList();
            _instructorWithCoursesIn = TestDataHelper.InstructorData.GetInstructorWithCoursesIn();

            _instructorServiceMock = new Mock <IInstructorService>();
            _requestMock           = new Mock <HttpRequestMessage>(HttpMethod.Get, "http://localhost:54025");
        }
 public IHttpActionResult Create(InstructorWithCoursesIn instructorWithCoursesIn)
 {
     if (instructorWithCoursesIn == null)
     {
         return(new Helpers.ActionResultBuilder
                .CreateActionResult <InstructorWithCoursesIn>(Request, null, System.Net.HttpStatusCode.BadRequest));
     }
     else
     {
         _instructorService.CreateInstructor(instructorWithCoursesIn);
         return(new Helpers.ActionResultBuilder
                .CreateActionResult <InstructorWithCoursesIn>(Request, instructorWithCoursesIn, System.Net.HttpStatusCode.OK));
     }
 }
 public IHttpActionResult Create([System.Web.Mvc.Bind(Include = "Id,LastName,FirstName,HireDate,Courses")] InstructorWithCoursesIn instructorWithCoursesIn)
 {
     if (instructorWithCoursesIn == null)
     {
         return(new Helpers.ActionResultBuilder
                .CreateActionResult <InstructorWithCoursesIn>(Request, null, System.Net.HttpStatusCode.BadRequest));
     }
     else
     {
         _instructorService.CreateInstructor(instructorWithCoursesIn);
         return(new Helpers.ActionResultBuilder
                .CreateActionResult <InstructorWithCoursesIn>(Request, instructorWithCoursesIn, System.Net.HttpStatusCode.OK));
     }
 }
        public async Task CreateInstructor(InstructorWithCoursesIn instructorWithCoursesIn)
        {
            Instructor instructor = EntityAssemblerFactory <Instructor, InstructorWithCoursesIn> .CreateAssembler().AssembleEntity(instructorWithCoursesIn);

            List <Course> existingCourseList = new List <Course>();

            foreach (var course in instructor.Courses)
            {
                existingCourseList.Add(await LoadExistingCourseAsync(c => c.Id == course.Id, course.Id));
            }

            instructor.Courses.Clear();
            instructor.Courses.AddRange(existingCourseList);
            _unitOfWork.Instructors.Add(instructor);

            await _unitOfWork.Complete();
        }
        public async Task UpdateInstructor(InstructorWithCoursesIn instructorWithCoursesIn)
        {
            Instructor instructorToUpdate = await _unitOfWork.Instructors.GetInstructorWithCourses(instructorWithCoursesIn.Id);

            instructorToUpdate.Id        = instructorWithCoursesIn.Id;
            instructorToUpdate.FirstName = instructorWithCoursesIn.FirstName;
            instructorToUpdate.LastName  = instructorWithCoursesIn.LastName;
            instructorToUpdate.HireDate  = instructorWithCoursesIn.HireDate;

            List <Course> courseList = new List <Course>();

            foreach (var course in instructorWithCoursesIn.Courses)
            {
                var existingCourse = await _unitOfWork.Courses.Get(course.Id);

                if (existingCourse != null)
                {
                    courseList.Add(existingCourse);
                }
            }
            instructorToUpdate.Courses = courseList;
            _unitOfWork.Instructors.Update(instructorToUpdate);
            await _unitOfWork.Complete();
        }