Refactor CourseSerivce
Currently the [CourseService](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java) class has a few issues. 1. The method [findUser](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java#L133) tries finding a user, else it creates a user. Methods called `find` should not change state in the database only read it. Hence we should rename it `findOrCreateUser` to make this explicit. 2. This [snippet](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java#L112): ```java Role role = null; switch (csvUser.getRole()) { case ROLE_ASSISTANT: role = new Assistant(staff, course); break; case ROLE_TEACHER: role = new Teacher(staff, course); break; case ROLE_MANAGER: role = new Manager(staff, course); break; default: throw new IllegalStateException("Unexpected value: " + csvUser.getRole()); } ``` Should become a method on `CsvUserHelper` and could be unit tested there. 3. This [save](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java#L108) seems redundant since staff will be saved at the end of the method regardless. 4. All the repository fields can be marked final, if we create a constructor assigning them and mark that constructor as `@Autowired` instead of the individual fields.
issue