public CourseTeacherResponseDTO CreateTeacherOnCourse(CreateCourseTeacherRequestDTO request) { //provera da li postoji kurs CourseResponseDTO course = this._courseService.GetOneByUuid(request.courseUUID); //provera da li postoji profesor try { TeacherResponseDTO newTeacher = this._httpClientService.SendRequest <TeacherResponseDTO>(HttpMethod.Get, "http://localhost:40001/api/users/" + request.teacherUUID, new UserPrincipal(_httpContextAccessor.HttpContext).token).Result; } catch { throw new EntityNotFoundException($"Teacher with uuid: {request.teacherUUID} does not exist!", GeneralConsts.MICROSERVICE_NAME); } //provera da li vec postoji profesor na kursu CourseTeacher existingCourseTeacher = FindTeacherOnCourse(request.courseUUID, request.teacherUUID); if (existingCourseTeacher != null) { if (existingCourseTeacher.activeTeacher == false) { CourseTeacher updatedTeacher = this._autoMapper.Map <CourseTeacher>(request); updatedTeacher.activeTeacher = true; updatedTeacher.course = new Course() { uuid = request.courseUUID }; updatedTeacher.teacher = new Teacher() { uuid = request.teacherUUID }; updatedTeacher = this._queryExecutor.Execute <CourseTeacher>(DatabaseConsts.USER_SCHEMA, this._sqlCommands.UPDATE_TEACHER_COURSE(updatedTeacher), this._modelMapper.MapToCourseTeacher); CourseTeacherResponseDTO updatedResponse = this._autoMapper.Map <CourseTeacherResponseDTO>(updatedTeacher); return(connectWithUser(updatedResponse)); } else { throw new EntityAlreadyExistsException("Teacher with uuid " + request.courseUUID + " already exists in course with uuid " + request.teacherUUID, GeneralConsts.MICROSERVICE_NAME); } } CourseTeacher courseTeacher = this._autoMapper.Map <CourseTeacher>(request); courseTeacher.course = new Course() { uuid = request.courseUUID }; courseTeacher.teacher = new Teacher() { uuid = request.teacherUUID }; courseTeacher.activeTeacher = true; this._queryExecutor.Execute <CourseTeacher>(DatabaseConsts.USER_SCHEMA, this._sqlCommands.CREATE_TEACHER_COURSE(courseTeacher), this._modelMapper.MapToCourseTeacher); CourseTeacherResponseDTO response = this._autoMapper.Map <CourseTeacherResponseDTO>(courseTeacher); return(connectWithUser(response)); }
//DELETE METHODS public CourseTeacherResponseDTO DeleteTeacherOnCourse(string uuid, string teacherUUID) { //provera da li postoji profesor na kursu CourseTeacher courseTeacher = FindTeacherOnCourseOrThrow(uuid, teacherUUID); courseTeacher.activeTeacher = false; courseTeacher = this._queryExecutor.Execute <CourseTeacher>(DatabaseConsts.USER_SCHEMA, this._sqlCommands.UPDATE_TEACHER_COURSE(courseTeacher), this._modelMapper.MapToCourseTeacher); CourseTeacherResponseDTO response = this._autoMapper.Map <CourseTeacherResponseDTO>(courseTeacher); return(connectWithUser(response)); }
//HELPER METHODS public CourseTeacherResponseDTO connectWithUser(CourseTeacherResponseDTO response) { TeacherResponseDTO newTeacher; try { newTeacher = this._httpClientService.SendRequest <TeacherResponseDTO>(HttpMethod.Get, "http://localhost:40001/api/users/" + response.teacher.uuid, new UserPrincipal(_httpContextAccessor.HttpContext).token).Result; } catch { throw new EntityNotFoundException($"Teacher with uuid: {response.teacher.uuid} does not exist!", GeneralConsts.MICROSERVICE_NAME); } response.teacher = newTeacher; response.course = this._courseService.GetOneByUuid(response.course.uuid); return(response); }
//PUT METHODS public CourseTeacherResponseDTO UpdateTeacherOnCourse(UpdateCourseTeacherRequestDTO request) { //provera da li postoji profesor na kursu CourseTeacher oldCourseTeacher = FindTeacherOnCourseOrThrow(request.courseUUID, request.teacherUUID); CourseTeacher newCourseTeacher = this._autoMapper.Map <CourseTeacher>(request); newCourseTeacher.course = new Course() { uuid = request.courseUUID }; newCourseTeacher.teacher = new Teacher() { uuid = request.teacherUUID }; newCourseTeacher = this._queryExecutor.Execute <CourseTeacher>(DatabaseConsts.USER_SCHEMA, this._sqlCommands.UPDATE_TEACHER_COURSE(newCourseTeacher), this._modelMapper.MapToCourseTeacher); CourseTeacherResponseDTO response = this._autoMapper.Map <CourseTeacherResponseDTO>(newCourseTeacher); return(connectWithUser(response)); }