Skip to content
Snippets Groups Projects
Commit edb79d88 authored by Dominika Zemanovičová's avatar Dominika Zemanovičová
Browse files

Merge remote-tracking branch 'origin/M2-user' into M2

# Conflicts:
#	application/model/src/main/java/org/fuseri/model/dto/user/UserDto.java
#	application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java
#	application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateFacadeTests.java
#	application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateMapperTests.java
#	application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java
#	application/module-exercise/src/main/java/org/fuseri/moduleexercise/exercise/ExerciseFacade.java
#	application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/user/UserControllerTest.java
parents 42013ed6 ba4bb13c
No related branches found
No related tags found
2 merge requests!31M2,!28M2 user
Showing
with 170 additions and 92 deletions
...@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode; ...@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.fuseri.model.dto.common.DomainObjectDto; import org.fuseri.model.dto.common.DomainObjectDto;
import org.fuseri.model.dto.user.UserDto;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -41,14 +42,14 @@ public class CourseDto extends DomainObjectDto { ...@@ -41,14 +42,14 @@ public class CourseDto extends DomainObjectDto {
@NotNull(message = "Student's list is required") @NotNull(message = "Student's list is required")
@Valid @Valid
private List<Long> studentIds; private List<UserDto> students;
public CourseDto(String name, Integer capacity, LanguageTypeDto languageTypeDto, ProficiencyLevelDto proficiencyLevelDto) { public CourseDto(String name, Integer capacity, LanguageTypeDto languageTypeDto, ProficiencyLevelDto proficiencyLevelDto) {
this.name = name; this.name = name;
this.capacity = capacity; this.capacity = capacity;
this.language = languageTypeDto; this.language = languageTypeDto;
this.proficiency = proficiencyLevelDto; this.proficiency = proficiencyLevelDto;
this.studentIds = new ArrayList<>(); this.students = new ArrayList<>();
} }
} }
package org.fuseri.model.dto.course; package org.fuseri.model.dto.course;
/**
* An enum representing language proficiency levels based on the CEFR standard.
*/
public enum ProficiencyLevelDto { public enum ProficiencyLevelDto {
A1,
A2, A1("Beginner"),
B1, A2("Elementary"),
B2, B1("Intermediate"),
C1, B2("Upper Intermediate"),
C2, C1("Advanced"),
C1N, C2("Proficient"),
C2N C1N("Advanced Native speaker"),
} C2N("Proficient Native speaker");
private final String description;
/**
* Constructor for LanguageLevel enum.
*
* @param description a String representing a brief description of the language proficiency level
*/
ProficiencyLevelDto(String description) {
this.description = description;
}
/**
* Returns a brief description of the language proficiency level.
*
* @return a String representing the description of the language proficiency level
*/
public String getDescription() {
return description;
}
}
\ No newline at end of file
...@@ -2,6 +2,7 @@ package org.fuseri.model.dto.user; ...@@ -2,6 +2,7 @@ package org.fuseri.model.dto.user;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
...@@ -10,15 +11,21 @@ import lombok.Setter; ...@@ -10,15 +11,21 @@ import lombok.Setter;
@Setter @Setter
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@EqualsAndHashCode
public class AddressDto { public class AddressDto {
@NotBlank @NotBlank
private String country; private String country;
@NotBlank @NotBlank
private String city; private String city;
@NotBlank @NotBlank
private String street; private String street;
@NotBlank @NotBlank
private String houseNumber; private String houseNumber;
@NotBlank @NotBlank
private String zip; private String zip;
} }
...@@ -4,25 +4,43 @@ import jakarta.validation.Valid; ...@@ -4,25 +4,43 @@ import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.fuseri.model.dto.course.LanguageTypeDto;
import org.fuseri.model.dto.course.ProficiencyLevelDto;
import java.util.Map;
@Getter @Getter
@Setter @Setter
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class UserCreateDto { public class UserCreateDto {
@NotBlank @NotBlank
private String username; private String username;
@NotBlank @NotBlank
private String password; private String password;
@NotBlank @NotBlank
private String email; private String email;
@NotBlank @NotBlank
private String firstName; private String firstName;
@NotBlank @NotBlank
private String lastName; private String lastName;
@NotNull @NotNull
@Valid @Valid
private AddressDto address; private AddressDto address;
@NotNull
private UserType userType;
@NotNull
@Valid
private Map<LanguageTypeDto, ProficiencyLevelDto> languageProficiency;
} }
package org.fuseri.model.dto.user; package org.fuseri.model.dto.user;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.EqualsAndHashCode;
import org.fuseri.model.dto.common.DomainObjectDto; import org.fuseri.model.dto.common.DomainObjectDto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.fuseri.model.dto.common.DomainObjectDto; import org.fuseri.model.dto.course.LanguageTypeDto;
import org.fuseri.model.dto.course.ProficiencyLevelDto;
import java.util.Map;
@Getter @Getter
@Setter @Setter
@EqualsAndHashCode(callSuper = false)
public class UserDto extends DomainObjectDto { public class UserDto extends DomainObjectDto {
@NotBlank @NotBlank
private String username; private String username;
@NotBlank @NotBlank
private String email; private String email;
@NotBlank @NotBlank
private String firstName; private String firstName;
@NotBlank @NotBlank
private String lastName; private String lastName;
@Valid
private AddressDto address; private AddressDto address;
@NotNull
private UserType userType;
@NotNull
@Valid
private Map<LanguageTypeDto, ProficiencyLevelDto> languageProficiency;
public UserDto(String username, String email, String firstName, String lastName, AddressDto address) { public UserDto(String username, String email, String firstName, String lastName, AddressDto address, UserType userType) {
setId(0L);
this.username = username; this.username = username;
this.email = email; this.email = email;
this.firstName = firstName; this.firstName = firstName;
this.lastName = lastName; this.lastName = lastName;
this.address = address; this.address = address;
this.userType = userType;
} }
} }
...@@ -9,8 +9,10 @@ import lombok.Setter; ...@@ -9,8 +9,10 @@ import lombok.Setter;
@Setter @Setter
@AllArgsConstructor @AllArgsConstructor
public class UserLoginDto { public class UserLoginDto {
@NotBlank @NotBlank
private String username; private String username;
@NotBlank @NotBlank
private String password; private String password;
} }
package org.fuseri.model.dto.user;
public enum UserType {
ADMIN,
STUDENT,
LECTURER
}
...@@ -2,7 +2,6 @@ package org.fuseri.modulecertificate.service; ...@@ -2,7 +2,6 @@ package org.fuseri.modulecertificate.service;
import org.fuseri.model.dto.certificate.CertificateCreateDto; import org.fuseri.model.dto.certificate.CertificateCreateDto;
import org.fuseri.model.dto.certificate.CertificateDto;
import org.fuseri.model.dto.certificate.CertificateSimpleDto; import org.fuseri.model.dto.certificate.CertificateSimpleDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
......
...@@ -8,6 +8,7 @@ import org.fuseri.model.dto.course.LanguageTypeDto; ...@@ -8,6 +8,7 @@ import org.fuseri.model.dto.course.LanguageTypeDto;
import org.fuseri.model.dto.course.ProficiencyLevelDto; import org.fuseri.model.dto.course.ProficiencyLevelDto;
import org.fuseri.model.dto.user.AddressDto; import org.fuseri.model.dto.user.AddressDto;
import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserDto;
import org.fuseri.model.dto.user.UserType;
import org.fuseri.modulecertificate.service.CertificateFacade; import org.fuseri.modulecertificate.service.CertificateFacade;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers; import org.mockito.ArgumentMatchers;
...@@ -34,9 +35,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. ...@@ -34,9 +35,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
class CertificateControllerTests { class CertificateControllerTests {
private final UserDto USER = new UserDto("novakovat", private final UserDto USER = new UserDto("novakovat",
"novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); "novakova@gamil.com", "Tereza", "Nováková", new AddressDto(), UserType.STUDENT);
private final CourseDto COURSE = new CourseDto("A1", 10, LanguageTypeDto.ENGLISH, private final CourseDto COURSE = new CourseDto("AJ1", 10,
ProficiencyLevelDto.A1); LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1);
private final CertificateCreateDto certificateCreateDto = new CertificateCreateDto(USER, COURSE);
private final CertificateSimpleDto certificateDto = new CertificateSimpleDto(0L, USER.getId(), private final CertificateSimpleDto certificateDto = new CertificateSimpleDto(0L, USER.getId(),
Instant.now(), COURSE.getId(), "", ""); Instant.now(), COURSE.getId(), "", "");
...@@ -180,4 +182,3 @@ class CertificateControllerTests { ...@@ -180,4 +182,3 @@ class CertificateControllerTests {
.andExpect(jsonPath("$.content").isEmpty()); .andExpect(jsonPath("$.content").isEmpty());
} }
} }
...@@ -7,6 +7,7 @@ import org.fuseri.model.dto.course.LanguageTypeDto; ...@@ -7,6 +7,7 @@ import org.fuseri.model.dto.course.LanguageTypeDto;
import org.fuseri.model.dto.course.ProficiencyLevelDto; import org.fuseri.model.dto.course.ProficiencyLevelDto;
import org.fuseri.model.dto.user.AddressDto; import org.fuseri.model.dto.user.AddressDto;
import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserDto;
import org.fuseri.model.dto.user.UserType;
import org.fuseri.modulecertificate.service.CertificateFacade; import org.fuseri.modulecertificate.service.CertificateFacade;
import org.fuseri.modulecertificate.service.CertificateMapper; import org.fuseri.modulecertificate.service.CertificateMapper;
import org.fuseri.modulecertificate.service.CertificateService; import org.fuseri.modulecertificate.service.CertificateService;
...@@ -32,9 +33,9 @@ import static org.mockito.Mockito.when; ...@@ -32,9 +33,9 @@ import static org.mockito.Mockito.when;
@AutoConfigureMockMvc @AutoConfigureMockMvc
final class CertificateFacadeTests { final class CertificateFacadeTests {
private final UserDto USER = new UserDto("novakovat", private final UserDto USER = new UserDto("novakovat",
"novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); "novakova@gamil.com", "Tereza", "Nováková", new AddressDto(), UserType.STUDENT);
private final CourseDto COURSE = new CourseDto("A1", 10, LanguageTypeDto.ENGLISH, private final CourseDto COURSE = new CourseDto("AJ1", 10,
ProficiencyLevelDto.A1); LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1);
private final CertificateCreateDto certificateCreateDto = new CertificateCreateDto(USER, COURSE); private final CertificateCreateDto certificateCreateDto = new CertificateCreateDto(USER, COURSE);
private final CertificateSimpleDto certificateDto = new CertificateSimpleDto(0L, USER.getId(), private final CertificateSimpleDto certificateDto = new CertificateSimpleDto(0L, USER.getId(),
Instant.now(), COURSE.getId(), "", ""); Instant.now(), COURSE.getId(), "", "");
......
...@@ -4,8 +4,10 @@ import org.fuseri.model.dto.certificate.CertificateCreateDto; ...@@ -4,8 +4,10 @@ import org.fuseri.model.dto.certificate.CertificateCreateDto;
import org.fuseri.model.dto.certificate.CertificateSimpleDto; import org.fuseri.model.dto.certificate.CertificateSimpleDto;
import org.fuseri.model.dto.course.CourseDto; import org.fuseri.model.dto.course.CourseDto;
import org.fuseri.model.dto.course.LanguageTypeDto; import org.fuseri.model.dto.course.LanguageTypeDto;
import org.fuseri.model.dto.course.ProficiencyLevelDto;
import org.fuseri.model.dto.user.AddressDto; import org.fuseri.model.dto.user.AddressDto;
import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserDto;
import org.fuseri.model.dto.user.UserType;
import org.fuseri.modulecertificate.service.CertificateMapper; import org.fuseri.modulecertificate.service.CertificateMapper;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -23,9 +25,9 @@ import java.util.List; ...@@ -23,9 +25,9 @@ import java.util.List;
final class CertificateMapperTests { final class CertificateMapperTests {
private final UserDto USER = new UserDto("novakovat", private final UserDto USER = new UserDto("novakovat",
"novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); "novakova@gamil.com", "Tereza", "Nováková", new AddressDto(), UserType.STUDENT);
private final CourseDto COURSE = new CourseDto("name",10, LanguageTypeDto.ENGLISH, private final CourseDto COURSE = new CourseDto("AJ1", 10,
org.fuseri.model.dto.course.ProficiencyLevelDto.B2); LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1);
private final Instant instant = Instant.now(); private final Instant instant = Instant.now();
private final String fileName = "fileName"; private final String fileName = "fileName";
private final String file = "file"; private final String file = "file";
......
...@@ -35,9 +35,9 @@ final class CertificateServiceTests { ...@@ -35,9 +35,9 @@ final class CertificateServiceTests {
private CertificateService certificateService; private CertificateService certificateService;
private final UserDto USER = new UserDto("novakovat", private final UserDto USER = new UserDto("novakovat",
"novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); "novakova@gamil.com", "Tereza", "Nováková", new AddressDto(), UserType.STUDENT);
private final CourseDto COURSE = new CourseDto("A1", 10, LanguageTypeDto.ENGLISH, private final CourseDto COURSE = new CourseDto("AJ1", 10,
ProficiencyLevelDto.A1); LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1);
private final Certificate certificate = new Certificate(USER.getId(), private final Certificate certificate = new Certificate(USER.getId(),
Instant.now(), COURSE.getId(), "file", "fileName"); Instant.now(), COURSE.getId(), "file", "fileName");
private final List<Certificate> certificates = List.of(certificate, certificate); private final List<Certificate> certificates = List.of(certificate, certificate);
......
package org.fuseri.modulelanguageschool;
import org.fuseri.modulelanguageschool.user.Address;
import org.fuseri.modulelanguageschool.user.User;
import org.fuseri.modulelanguageschool.user.UserService;
import org.fuseri.modulelanguageschool.user.UserType;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@RequiredArgsConstructor
@Component
public class DataInitializer implements ApplicationRunner {
private final UserService userService;
@Override
public void run(ApplicationArguments args) {
User user = User.builder()
.email("test@email.com")
.firstName("John")
.lastName("Doe")
.username("johnD")
.password("password")
.userType(UserType.ADMIN).address(Address.builder()
.city("Brno")
.country("CZ")
.street("Hrnčírska")
.houseNumber("99")
.build())
.build();
userService.create(user);
}
}
package org.fuseri.modulelanguageschool.common; package org.fuseri.modulelanguageschool.common;
import org.fuseri.model.dto.common.DomainObjectDto; import org.fuseri.model.dto.common.DomainObjectDto;
import org.fuseri.model.dto.common.Result;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import java.util.List; import java.util.List;
...@@ -15,11 +13,7 @@ public interface DomainMapper<T extends DomainObject, S extends DomainObjectDto> ...@@ -15,11 +13,7 @@ public interface DomainMapper<T extends DomainObject, S extends DomainObjectDto>
List<S> toDtoList(List<T> entities); List<S> toDtoList(List<T> entities);
@Mappings({ default Page<S> toDtoPage(Page<T> entities) {
@Mapping(target = "total", expression = "java(source.getTotalElements())"), return new PageImpl<>(toDtoList(entities.getContent()), entities.getPageable(), entities.getTotalPages());
@Mapping(target = "page", expression = "java(source.getNumber())"), }
@Mapping(target = "pageSize", expression = "java(source.getSize())"),
@Mapping(target = "items", expression = "java(toDtoList(source.getContent()))")
})
Result<S> toResult(Page<T> source);
} }
package org.fuseri.modulelanguageschool.common; package org.fuseri.modulelanguageschool.common;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
...@@ -26,4 +27,27 @@ public abstract class DomainService<T extends DomainObject> { ...@@ -26,4 +27,27 @@ public abstract class DomainService<T extends DomainObject> {
public Page<T> findAll(int page) { public Page<T> findAll(int page) {
return getRepository().findAll(PageRequest.of(page, DEFAULT_PAGE_SIZE)); return getRepository().findAll(PageRequest.of(page, DEFAULT_PAGE_SIZE));
} }
/**
* Delete an entity with specified id
* @param id id of the entity to delete
*/
public void delete(long id) {
getRepository().deleteById(id);
}
/**
* Update an entity
*
* @param id the entity ID
* @param entity the entity to update
* @return the updated entity
*/
public T update(Long id, T entity) {
if (!getRepository().existsById(id)) {
throw new EntityNotFoundException("Entity with id " + entity.getId() + " not found.");
}
entity.setId(id);
return getRepository().save(entity);
}
} }
...@@ -6,6 +6,7 @@ import org.fuseri.modulelanguageschool.common.DomainObject; ...@@ -6,6 +6,7 @@ import org.fuseri.modulelanguageschool.common.DomainObject;
import org.fuseri.modulelanguageschool.user.User; import org.fuseri.modulelanguageschool.user.User;
import java.util.List; import java.util.List;
import java.util.Set;
@Getter @Getter
@Setter @Setter
...@@ -28,6 +29,7 @@ public class Course extends DomainObject { ...@@ -28,6 +29,7 @@ public class Course extends DomainObject {
@ManyToMany @ManyToMany
private List<User> students; private List<User> students;
private boolean finished = false;
public void enrolStudent(User student) { public void enrolStudent(User student) {
students.add(student); students.add(student);
} }
...@@ -35,4 +37,15 @@ public class Course extends DomainObject { ...@@ -35,4 +37,15 @@ public class Course extends DomainObject {
public void expelStudent(User student) { public void expelStudent(User student) {
students.remove(student); students.remove(student);
} }
public Course(String name, Integer capacity, Language language, ProficiencyLevel proficiency) {
this.name = name;
this.capacity = capacity;
this.language = language;
this.proficiency = proficiency;
}
public void setFinished(boolean finished) {
this.finished = finished;
}
} }
...@@ -170,8 +170,8 @@ public class CourseController { ...@@ -170,8 +170,8 @@ public class CourseController {
@ApiResponse(code = 200, message = "Successfully enrolled student in course"), @ApiResponse(code = 200, message = "Successfully enrolled student in course"),
@ApiResponse(code = 404, message = "Course not found") @ApiResponse(code = 404, message = "Course not found")
}) })
public ResponseEntity<CourseDto> enrol(@PathVariable Long id, @RequestBody UserDto student) { public ResponseEntity<CourseDto> enrol(@PathVariable Long id, @RequestParam Long studentId) {
CourseDto updatedCourse = courseFacade.enrol(id, student); CourseDto updatedCourse = courseFacade.enrol(id, studentId);
return ResponseEntity.ok(updatedCourse); return ResponseEntity.ok(updatedCourse);
} }
......
...@@ -6,6 +6,7 @@ import org.fuseri.model.dto.course.LanguageTypeDto; ...@@ -6,6 +6,7 @@ import org.fuseri.model.dto.course.LanguageTypeDto;
import org.fuseri.model.dto.course.ProficiencyLevelDto; import org.fuseri.model.dto.course.ProficiencyLevelDto;
import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserDto;
import org.fuseri.modulelanguageschool.user.UserMapper; import org.fuseri.modulelanguageschool.user.UserMapper;
import org.fuseri.modulelanguageschool.user.UserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
...@@ -18,22 +19,18 @@ import java.util.List; ...@@ -18,22 +19,18 @@ import java.util.List;
@Service @Service
@Transactional @Transactional
public class CourseFacade { public class CourseFacade {
private final CourseService courseService;
private final UserService userService;
private final CourseMapper courseMapper;
private final UserMapper userMapper;
@Autowired @Autowired
private CourseService courseService; public CourseFacade(CourseService courseService, UserService userService, CourseMapper courseMapper, UserMapper userMapper) {
this.courseService = courseService;
@Autowired this.userService = userService;
private CourseMapper courseMapper; this.courseMapper = courseMapper;
this.userMapper = userMapper;
@Autowired }
private UserMapper userMapper;
// @Autowired
// public CourseFacade(CourseService courseService, CourseMapper courseMapper, UserMapper userMapper) {
// this.courseService = courseService;
// this.courseMapper = courseMapper;
// this.userMapper = userMapper;
// }
@Transactional @Transactional
public CourseDto create(CourseCreateDto dto) { public CourseDto create(CourseCreateDto dto) {
...@@ -69,8 +66,9 @@ public class CourseFacade { ...@@ -69,8 +66,9 @@ public class CourseFacade {
return courseMapper.mapToList(courseService.findAll(Language.valueOf(lang.name()), ProficiencyLevel.valueOf(prof.name()))); return courseMapper.mapToList(courseService.findAll(Language.valueOf(lang.name()), ProficiencyLevel.valueOf(prof.name())));
} }
public CourseDto enrol(Long id, UserDto student) { public CourseDto enrol(Long id, Long studentId) {
return courseMapper.mapToDto(courseService.enrol(id, userMapper.fromDto(student))); var student = userService.find(studentId);
return courseMapper.mapToDto(courseService.enrol(id, student));
} }
public CourseDto expel(Long id, UserDto student) { public CourseDto expel(Long id, UserDto student) {
......
...@@ -9,6 +9,10 @@ import java.util.List; ...@@ -9,6 +9,10 @@ import java.util.List;
@Repository @Repository
public interface CourseRepository extends JpaRepository<Course, Long> { public interface CourseRepository extends JpaRepository<Course, Long> {
@Query("SELECT c FROM Course c left join fetch User u WHERE c.language = ?1 AND u.userType!=\"ADMIN\"")
Course getById(Long id);
@Query("SELECT c FROM Course c WHERE c.language = ?1") @Query("SELECT c FROM Course c WHERE c.language = ?1")
List<Course> findAllByLang(Language language); List<Course> findAllByLang(Language language);
......
...@@ -8,6 +8,7 @@ import lombok.*; ...@@ -8,6 +8,7 @@ import lombok.*;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode
@Embeddable @Embeddable
public class Address { public class Address {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment