feat: add classes of primary key for exam_result, training_result, order. add new exceptions. fix: all classes

This commit is contained in:
Володя 2024-12-08 21:09:51 +04:00
parent a252b18bcf
commit a2ff138e7f
32 changed files with 788 additions and 133 deletions

Binary file not shown.

View File

@ -30,6 +30,13 @@
<java.version>17</java.version> <java.version>17</java.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>3.2.4</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-data-jpa</artifactId>
@ -58,18 +65,6 @@
<build> <build>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
@ -84,5 +79,4 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -20,7 +20,7 @@ public class Achievement {
private int id; private int id;
@Column(name = "title", unique = true, nullable = false, length = 50) @Column(name = "title", unique = true, nullable = false, length = 20)
private String title ; private String title ;
@Column(name = "points", nullable = false, length = 3) @Column(name = "points", nullable = false, length = 3)

View File

@ -20,7 +20,7 @@ public class Benefit {
private int id; private int id;
@Column(name = "title", unique = true,nullable = false, length = 50) @Column(name = "title", unique = true,nullable = false, length = 20)
private String title ; private String title ;
@ManyToMany(mappedBy = "benefits") @ManyToMany(mappedBy = "benefits")

View File

@ -21,12 +21,12 @@ public class Exam {
private int id; private int id;
@Column(name = "title", unique = true, nullable = false, length = 50) @Column(name = "title", unique = true, nullable = false, length = 20)
private String title ; private String title ;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "exam") @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.REMOVE, mappedBy = "exam")
List<ExamResult> users; List<ExamResult> users;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "exam") @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.REMOVE, mappedBy = "exam")
List<TrainingExam> trainings; List<TrainingExam> trainings;
} }

View File

@ -5,27 +5,27 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import putBit.app.models.PrimaryKey.ExamResultPK;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@IdClass(ExamResultPK.class)
@Entity(name = "exam_results") @Entity(name = "exam_results")
public class ExamResult { public class ExamResult {
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Id
@ManyToOne @ManyToOne
@JoinColumn(name = "user_id", nullable = false) @JoinColumn(name = "user_id", nullable = false)
private User user ; private User user ;
@Id
@ManyToOne @ManyToOne
@JoinColumn(name = "exam_id", nullable = false) @JoinColumn(name = "exam_id", nullable = false)
private Exam exam ; private Exam exam ;
@Column(name = "points", nullable = false, length = 3) @Column(name = "points", nullable = false,unique = false, length = 3)
private int points ; private int points ;
} }

View File

@ -5,30 +5,31 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.Cascade;
import putBit.app.models.PrimaryKey.OrderPK;
import putBit.app.models.PrimaryKey.TrainingExamPK;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@IdClass(OrderPK.class)
@Entity(name = "orders") @Entity(name = "orders")
public class Order { public class Order {
@Id @Id
@GeneratedValue
@Column(name = "id")
private int id;
@OneToOne @OneToOne
@JoinColumn(name = "user_id", unique = true) @JoinColumn(name = "user_id", unique = true,nullable = false)
private User user; private User user;
@Id
@ManyToOne @ManyToOne
@JoinColumn(name = "training_id") @JoinColumn(name = "training_id",nullable = false)
Training training; private Training training;
@Column(name = "confirm", columnDefinition = "boolean") @Column(name = "confirm", columnDefinition = "boolean",nullable = false)
Boolean confirm = false; private Boolean confirm ;
@Column(name = "benefit", columnDefinition = "boolean") @Column(name = "benefit", columnDefinition = "boolean",nullable = false)
Boolean benefit = false; private Boolean benefit ;
} }

View File

@ -0,0 +1,24 @@
package putBit.app.models.PrimaryKey;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import putBit.app.models.Exam;
import putBit.app.models.User;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ExamResultPK implements Serializable {
private int user;
private int exam;
}

View File

@ -0,0 +1,21 @@
package putBit.app.models.PrimaryKey;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderPK implements Serializable {
private int user;
private int training;
}

View File

@ -0,0 +1,24 @@
package putBit.app.models.PrimaryKey;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import putBit.app.models.Exam;
import putBit.app.models.Training;
import putBit.app.models.User;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TrainingExamPK implements Serializable {
private int training;
private int exam;
}

View File

@ -20,7 +20,7 @@ public class Training {
@Column(name = "id") @Column(name = "id")
private int id; private int id;
@Column(name = "num", unique = true, nullable = false, length = 50) @Column(name = "num", unique = true, nullable = false, length = 11)
private String num ; private String num ;
@Column(name = "title", unique = true, nullable = false, length = 50) @Column(name = "title", unique = true, nullable = false, length = 50)
@ -29,7 +29,7 @@ public class Training {
@Column(name = "desc", nullable = false, length = 300) @Column(name = "desc", nullable = false, length = 300)
private String desc ; private String desc ;
@Column(name = "prof", unique = true, nullable = false, length = 300) @Column(name = "prof", nullable = false, length = 300)
private String prof ; private String prof ;
@Column(name = "basic_places", nullable = false, length = 3) @Column(name = "basic_places", nullable = false, length = 3)
@ -38,10 +38,10 @@ public class Training {
@Column(name = "benefit_places", nullable = false, length = 3) @Column(name = "benefit_places", nullable = false, length = 3)
private int benefit_places ; private int benefit_places ;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "training") @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.REMOVE, mappedBy = "training")
List<TrainingExam> exams; List<TrainingExam> exams;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "training") @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE, mappedBy = "training")
List<Order> orders; List<Order> orders;
} }

View File

@ -5,23 +5,23 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import putBit.app.models.PrimaryKey.TrainingExamPK;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@IdClass(TrainingExamPK.class)
@Entity(name = "training_exams") @Entity(name = "training_exams")
public class TrainingExam { public class TrainingExam {
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Id
@ManyToOne @ManyToOne
@JoinColumn(name = "training_id", nullable = false) @JoinColumn(name = "training_id", nullable = false)
private Training training ; private Training training ;
@Id
@ManyToOne @ManyToOne
@JoinColumn(name = "exam_id", nullable = false) @JoinColumn(name = "exam_id", nullable = false)
private Exam exam ; private Exam exam ;

View File

@ -7,7 +7,9 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import putBit.app.models.enums.Role; import putBit.app.models.enums.Role;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
@Data @Data
@ -35,67 +37,64 @@ public class User {
private String phone; private String phone;
@Column(name = "name", nullable = false, length = 30) @Column(name = "name", nullable = false, length = 80)
private String name; private String name;
@Column(name = "snils", unique = true, length = 11) @Column(name = "snils", unique = true, length = 11)
private String snils; private String snils;
@ManyToMany @ManyToMany(fetch = FetchType.EAGER)
@JoinTable( @JoinTable(
name = "user_achievements", name = "user_achievements",
joinColumns = @JoinColumn(name = "user_id"), joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "achievements_id")) inverseJoinColumns = @JoinColumn(name = "achievements_id"))
List<Achievement> achievements; Set<Achievement> achievements;
@ManyToMany @ManyToMany(fetch = FetchType.EAGER)
@JoinTable( @JoinTable(
name = "user_benefits", name = "user_benefits",
joinColumns = @JoinColumn(name = "user_id"), joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "benefits_id")) inverseJoinColumns = @JoinColumn(name = "benefits_id"))
List<Benefit> benefits; Set<Benefit> benefits;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "user") @OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.REMOVE, mappedBy = "user")
List<ExamResult> exams; List<ExamResult> exams;
@OneToOne(fetch = FetchType.EAGER, mappedBy = "user" ) @OneToOne(fetch = FetchType.EAGER,cascade = CascadeType.REMOVE, mappedBy = "user" )
Order order; Order order;
public void addAchievement(Achievement achievement){ public void addAchievement(Achievement achievement){
achievements.add(achievement); achievements.add(achievement);
} }
public void deleteAchievement(Achievement achievement){ public boolean deleteAchievement(Achievement achievement){
for(Achievement ach: for(Achievement ach:
achievements) achievements)
{ {
if (ach.getId() == achievement.getId()) { if (ach.getId() == achievement.getId()) {
achievements.remove(ach); achievements.remove(ach);
break; return true;
} }
} }
return false;
} }
public void clearAchievements(){
achievements.clear();
}
public void addBenefit(Benefit benefit){ public void addBenefit(Benefit benefit){
benefits.add(benefit); benefits.add(benefit);
} }
public void deleteBenefit(Benefit benefit){ public boolean deleteBenefit(Benefit benefit){
for(Benefit ben: for(Benefit ben:
benefits) benefits)
{ {
if (ben.getId() == benefit.getId()) { if (ben.getId() == benefit.getId()) {
benefits.remove(ben); benefits.remove(ben);
break; return true;
} }
} }
return false;
} }
public void clearBenefit(){
benefits.clear();
}
} }

View File

@ -6,6 +6,7 @@ import org.springframework.data.repository.query.Param;
import putBit.app.models.Achievement; import putBit.app.models.Achievement;
import putBit.app.models.Benefit; import putBit.app.models.Benefit;
import putBit.app.models.ExamResult; import putBit.app.models.ExamResult;
import putBit.app.models.User;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -13,7 +14,15 @@ import java.util.UUID;
public interface AchievementRepository extends JpaRepository<Achievement, Integer> { public interface AchievementRepository extends JpaRepository<Achievement, Integer> {
Optional<List<Achievement>> findAchievementsByUsersId(int userId); @Query(value = "select a.* from achievements a " +
"where a.id in (select ua.achievements_id from USER_ACHIEVEMENTS ua " +
"where ua.user_id = :id)", nativeQuery = true)
List<Achievement> findAchievementsByUsersId(@Param("id") int userId);
Optional<List<Achievement>> findAchievementsByUsersIdNot(int userId);
@Query(value = "select a.* from achievements a " +
"where a.id not in (select ua.achievements_id from USER_ACHIEVEMENTS ua " +
"where ua.user_id = :id)", nativeQuery = true)
List<Achievement> findAchievementsByUsersIdNot(@Param("id") int userId);
} }

View File

@ -1,14 +1,25 @@
package putBit.app.repositories; package putBit.app.repositories;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import putBit.app.models.Benefit; import putBit.app.models.Benefit;
import putBit.app.models.User;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
public interface BenefitRepository extends JpaRepository<Benefit, Integer> { public interface BenefitRepository extends JpaRepository<Benefit, Integer> {
Optional<List<Benefit>> findBenefitsByUsersId(int userId);
Optional<List<Benefit>> findBenefitsByUsersIdNot(int userId); @Query(value = "select b.* from benefits b " +
"where b.id in (select ub.benefits_id from USER_BENEFITS ub " +
"where ub.user_id = :id)", nativeQuery = true)
List<Benefit> findBenefitsByUsersId(@Param("id") int userId);
@Query(value = "select b.* from benefits b " +
"where b.id not in (select ub.benefits_id from USER_BENEFITS ub " +
"where ub.user_id = :id)", nativeQuery = true)
List<Benefit> findBenefitsByUsersIdNot(@Param("id") int userId);
} }

View File

@ -14,10 +14,10 @@ public interface ExamRepository extends JpaRepository<Exam, Integer> {
@Query(value = "select e.* from exams e " + @Query(value = "select e.* from exams e " +
"where e.id not in (select er.exam_id from exam_results er " + "where e.id not in (select er.exam_id from exam_results er " +
"where er.user_id = :id )", nativeQuery = true) "where er.user_id = :id )", nativeQuery = true)
Optional<List<Exam>> findByUserIdNot(@Param("id") int id); List<Exam> findByUserIdNot(@Param("id") int id);
@Query(value = "select e.* from exams e " + @Query(value = "select e.* from exams e " +
"where e.id not in (select te.exam_id from training_exams te " + "where e.id not in (select te.exam_id from training_exams te " +
"where te.training_id = :id )", nativeQuery = true) "where te.training_id = :id )", nativeQuery = true)
Optional<List<Exam>> findByTrainingIdNot(@Param("id") int id); List<Exam> findByTrainingIdNot(@Param("id") int id);
} }

View File

@ -3,11 +3,15 @@ package putBit.app.repositories;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import putBit.app.models.Exam; import putBit.app.models.Exam;
import putBit.app.models.ExamResult; import putBit.app.models.ExamResult;
import putBit.app.models.PrimaryKey.ExamResultPK;
import putBit.app.models.User; import putBit.app.models.User;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
public interface ExamResultRepository extends JpaRepository<ExamResult, Integer> { public interface ExamResultRepository extends JpaRepository<ExamResult, ExamResultPK> {
Optional<List<ExamResult>> findByUser(User user);
Optional<ExamResult> findByUserAndExam(User user, Exam exam);
List<ExamResult> findAllByUser(User user);
} }

View File

@ -4,18 +4,19 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import putBit.app.models.Order; import putBit.app.models.Order;
import putBit.app.models.PrimaryKey.OrderPK;
import putBit.app.models.Training; import putBit.app.models.Training;
import putBit.app.models.User; import putBit.app.models.User;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
public interface OrderRepository extends JpaRepository<Order, Integer> { public interface OrderRepository extends JpaRepository<Order, OrderPK> {
@Query(value = "select o.* from orders where " + @Query(value = "select o.* from orders where " +
"o.user_id = (select u.id from users u where " + "o.user_id = (select u.id from users u where " +
"u.name LIKE %:value% or u.snils like %:value%) " , nativeQuery = true) "u.name LIKE %:value% or u.snils like %:value%) " , nativeQuery = true)
Optional<List<Order>> findByUserInfo(@Param("value")String value); List<Order> findByUserInfo(@Param("value")String value);
Optional<List<Order>> findByBenefit(Boolean benefit); List<Order> findAllByBenefit(Boolean benefit);
} }

View File

@ -1,16 +1,16 @@
package putBit.app.repositories; package putBit.app.repositories;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import putBit.app.models.Benefit; import putBit.app.models.*;
import putBit.app.models.Order; import putBit.app.models.PrimaryKey.TrainingExamPK;
import putBit.app.models.Training;
import putBit.app.models.TrainingExam;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
public interface TrainingExamRepository extends JpaRepository<TrainingExam, Integer> { public interface TrainingExamRepository extends JpaRepository<TrainingExam, TrainingExamPK> {
Optional<List<TrainingExam>> findByTraining(Training training); List<TrainingExam> findAllByTraining(Training training);
Optional<TrainingExam> findByTrainingAndExam(Training training, Exam exam);
} }

View File

@ -9,5 +9,5 @@ import java.util.Optional;
public interface TrainingRepository extends JpaRepository<Training, Integer> { public interface TrainingRepository extends JpaRepository<Training, Integer> {
Optional<List<Training>> findByTitleContaining(String title); List<Training> findAllByTitleContaining(String title);
} }

View File

@ -11,5 +11,15 @@ import java.util.UUID;
public interface UserRepository extends JpaRepository<User, Integer> { public interface UserRepository extends JpaRepository<User, Integer> {
@Query(value = "select u.* from users u " +
"where u.id in (select ua.user_id from USER_ACHIEVEMENTS ua " +
"where ua.achievements_id = :id)", nativeQuery = true)
List<User> findUsersByAchievementsId(@Param("id")int AchievementId);
@Query(value = "select u.* from users u " +
"where u.id in (select ub.user_id from USER_BENEFITS ub " +
"where ub.benefits_id = :id)", nativeQuery = true)
List<User> findUsersByBenefitsId(@Param("id")int AchievementId);
Optional<User> findByEmailAndPassword(String email, String password); Optional<User> findByEmailAndPassword(String email, String password);
} }

View File

@ -6,6 +6,9 @@ import org.springframework.stereotype.Service;
import putBit.app.models.Achievement; import putBit.app.models.Achievement;
import putBit.app.models.User; import putBit.app.models.User;
import putBit.app.repositories.AchievementRepository; import putBit.app.repositories.AchievementRepository;
import putBit.app.repositories.UserRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import putBit.app.services.exceptions.ValidationException;
import java.util.List; import java.util.List;
@ -14,10 +17,16 @@ import java.util.List;
public class AchievementService { public class AchievementService {
private final AchievementRepository achievementRepository; private final AchievementRepository achievementRepository;
private final UserService userService;
private final UserRepository userRepository;
public Achievement create(Achievement achievement){ public Achievement create(Achievement achievement){
if(achievement.getTitle().isEmpty() || (achievement.getTitle().length() < 3 || achievement.getTitle().length() > 20 ) )
throw new ValidationException("Неверные данные");
if(achievement.getPoints() > 10 || achievement.getPoints() < 0 )
throw new ValidationException("Неверные данные");
Achievement newAchievement = Achievement.builder() Achievement newAchievement = Achievement.builder()
.title(achievement.getTitle()) .title(achievement.getTitle())
.points(achievement.getPoints()) .points(achievement.getPoints())
@ -27,11 +36,16 @@ public class AchievementService {
public Achievement findById(int id){ public Achievement findById(int id){
return achievementRepository.findById(id) return achievementRepository.findById(id)
.orElseThrow(() -> new ExecutionException("Достижение не найдено")); .orElseThrow(() -> new EntityNotFoundException("Достижение не найдено"));
} }
public Achievement update(Achievement achievement) public Achievement update(Achievement achievement)
{ {
if(achievement.getTitle().isEmpty() || (achievement.getTitle().length() < 3 || achievement.getTitle().length() > 20 ) )
throw new ValidationException("Неверные данные");
if(achievement.getPoints() > 10 || achievement.getPoints() < 0 )
throw new ValidationException("Неверные данные");
Achievement currentAchievement = findById(achievement.getId()); Achievement currentAchievement = findById(achievement.getId());
currentAchievement.setTitle(achievement.getTitle()); currentAchievement.setTitle(achievement.getTitle());
@ -41,6 +55,12 @@ public class AchievementService {
public Achievement delete(Achievement achievement){ public Achievement delete(Achievement achievement){
Achievement currentAchievement = findById(achievement.getId()); Achievement currentAchievement = findById(achievement.getId());
List<User> users = userRepository.findUsersByAchievementsId(achievement.getId());
for(User user:
users){
user.deleteAchievement(currentAchievement);
userRepository.save(user);
}
achievementRepository.delete(currentAchievement); achievementRepository.delete(currentAchievement);
return currentAchievement; return currentAchievement;
} }
@ -50,12 +70,10 @@ public class AchievementService {
} }
public List<Achievement> findByUser(User user){ public List<Achievement> findByUser(User user){
return achievementRepository.findAchievementsByUsersId(user.getId()) return achievementRepository.findAchievementsByUsersId(user.getId());
.orElseThrow(() -> new ExecutionException("Достижений не найдено"));
} }
public List<Achievement> findByUserNot(User user){ public List<Achievement> findByUserNot(User user){
return achievementRepository.findAchievementsByUsersIdNot(user.getId()) return achievementRepository.findAchievementsByUsersIdNot(user.getId());
.orElseThrow(() -> new ExecutionException("Достижений не найдено"));
} }
} }

View File

@ -7,6 +7,9 @@ import putBit.app.models.Achievement;
import putBit.app.models.Benefit; import putBit.app.models.Benefit;
import putBit.app.models.User; import putBit.app.models.User;
import putBit.app.repositories.BenefitRepository; import putBit.app.repositories.BenefitRepository;
import putBit.app.repositories.UserRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import putBit.app.services.exceptions.ValidationException;
import java.util.List; import java.util.List;
@ -16,10 +19,13 @@ public class BenefitService {
private final BenefitRepository benefitRepository; private final BenefitRepository benefitRepository;
private final UserService userService; private final UserRepository userRepository;
public Benefit create(Benefit benefit){ public Benefit create(Benefit benefit){
if(benefit.getTitle().isEmpty() || (benefit.getTitle().length() < 3 || benefit.getTitle().length() > 20 ) )
throw new ValidationException("Неверные данные");
Benefit newBenefit = Benefit.builder() Benefit newBenefit = Benefit.builder()
.title(benefit.getTitle()) .title(benefit.getTitle())
.build(); .build();
@ -28,19 +34,27 @@ public class BenefitService {
public Benefit findById(int id){ public Benefit findById(int id){
return benefitRepository.findById(id) return benefitRepository.findById(id)
.orElseThrow(() -> new ExecutionException("Льгота не найдена")); .orElseThrow(() -> new EntityNotFoundException("Льгота не найдена"));
} }
public Benefit update(Benefit benefit) public Benefit update(Benefit benefit)
{ {
Benefit currentBenefit = findById(benefit.getId()); if(benefit.getTitle().isEmpty() || (benefit.getTitle().length() < 3 || benefit.getTitle().length() > 20 ) )
throw new ValidationException("Неверные данные");
Benefit currentBenefit = findById(benefit.getId());
currentBenefit.setTitle(benefit.getTitle()); currentBenefit.setTitle(benefit.getTitle());
return benefitRepository.save(currentBenefit); return benefitRepository.save(currentBenefit);
} }
public Benefit delete(Benefit benefit){ public Benefit delete(Benefit benefit){
Benefit currentBenefit = findById(benefit.getId()); Benefit currentBenefit = findById(benefit.getId());
List<User> users = userRepository.findUsersByBenefitsId(benefit.getId());
for(User user:
users){
user.deleteBenefit(currentBenefit);
userRepository.save(user);
}
benefitRepository.delete(currentBenefit); benefitRepository.delete(currentBenefit);
return currentBenefit; return currentBenefit;
} }
@ -50,13 +64,11 @@ public class BenefitService {
} }
public List<Benefit> findByUser(User user){ public List<Benefit> findByUser(User user){
return benefitRepository.findBenefitsByUsersId(user.getId()) return benefitRepository.findBenefitsByUsersId(user.getId());
.orElseThrow(() -> new ExecutionException("Льгот не найдено"));
} }
public List<Benefit> findByUserNot(User user){ public List<Benefit> findByUserNot(User user){
return benefitRepository.findBenefitsByUsersIdNot(user.getId()) return benefitRepository.findBenefitsByUsersIdNot(user.getId());
.orElseThrow(() -> new ExecutionException("Льгот не найдено"));
} }
} }

View File

@ -5,18 +5,27 @@ import org.hibernate.sql.exec.ExecutionException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import putBit.app.models.Exam; import putBit.app.models.Exam;
import putBit.app.models.ExamResult; import putBit.app.models.ExamResult;
import putBit.app.models.PrimaryKey.ExamResultPK;
import putBit.app.models.User; import putBit.app.models.User;
import putBit.app.repositories.ExamResultRepository; import putBit.app.repositories.ExamResultRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import putBit.app.services.exceptions.ValidationException;
import java.util.List; import java.util.List;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class ExamResultService { public class ExamResultService {
private final ExamResultRepository examResultRepository; private final ExamResultRepository examResultRepository;
private final UserService userService; private final UserService userService;
private final ExamService examService; private final ExamService examService;
public ExamResult create(ExamResult examResult){ public ExamResult create(ExamResult examResult){
if(examResult.getPoints() > 100 || examResult.getPoints() < 0 )
throw new ValidationException("Неверные данные");
User user = userService.findById(examResult.getUser().getId()); User user = userService.findById(examResult.getUser().getId());
Exam exam = examService.findById(examResult.getExam().getId()); Exam exam = examService.findById(examResult.getExam().getId());
ExamResult newExam = ExamResult.builder() ExamResult newExam = ExamResult.builder()
@ -27,27 +36,32 @@ public class ExamResultService {
return examResultRepository.save(newExam); return examResultRepository.save(newExam);
} }
public ExamResult findById(int id){ public ExamResult findById(int userId, int examId){
return examResultRepository.findById(id) User user = userService.findById(userId);
.orElseThrow(() -> new ExecutionException("Экзамен не найден")); Exam exam = examService.findById(examId);
ExamResultPK pk = new ExamResultPK(user.getId(),exam.getId());
return examResultRepository.findById(pk)
.orElseThrow(() -> new EntityNotFoundException("Экзамен не найден"));
} }
public ExamResult update(ExamResult examResult) public ExamResult update(ExamResult examResult)
{ {
ExamResult currentExam = findById(examResult.getId()); if(examResult.getPoints() > 100 || examResult.getPoints() < 0 )
throw new ValidationException("Неверные данные");
ExamResult currentExam = findById(examResult.getUser().getId(),examResult.getExam().getId());
currentExam.setPoints(examResult.getPoints()); currentExam.setPoints(examResult.getPoints());
return examResultRepository.save(currentExam); return examResultRepository.save(currentExam);
} }
public ExamResult delete(ExamResult exam){ public ExamResult delete(int userId, int examId){
ExamResult currentExam = findById(exam.getId()); ExamResult currentExam = findById( userId, examId);
examResultRepository.delete(currentExam); examResultRepository.delete(currentExam);
return currentExam; return currentExam;
} }
public List<ExamResult> findByUser(User user){ public List<ExamResult> findByUser(User user){
User currentUser = userService.findById(user.getId()); User currentUser = userService.findById(user.getId());
return examResultRepository.findByUser(currentUser) return examResultRepository.findAllByUser(currentUser);
.orElseThrow(() -> new ExecutionException("Экзамен не найден"));
} }
} }

View File

@ -8,6 +8,8 @@ import putBit.app.models.Training;
import putBit.app.models.User; import putBit.app.models.User;
import putBit.app.models.enums.Role; import putBit.app.models.enums.Role;
import putBit.app.repositories.ExamRepository; import putBit.app.repositories.ExamRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import putBit.app.services.exceptions.ValidationException;
import java.util.List; import java.util.List;
@ -17,6 +19,10 @@ public class ExamService {
private final ExamRepository examRepository; private final ExamRepository examRepository;
public Exam create(Exam exam){ public Exam create(Exam exam){
if(exam.getTitle().isEmpty() || (exam.getTitle().length() < 3 || exam.getTitle().length() > 20 ) )
throw new ValidationException("Неверные данные");
Exam newExam = Exam.builder() Exam newExam = Exam.builder()
.title(exam.getTitle()) .title(exam.getTitle())
.build(); .build();
@ -25,11 +31,14 @@ public class ExamService {
public Exam findById(int id){ public Exam findById(int id){
return examRepository.findById(id) return examRepository.findById(id)
.orElseThrow(() -> new ExecutionException("Экзамен не найден")); .orElseThrow(() -> new EntityNotFoundException("Экзамен не найден"));
} }
public Exam update(Exam exam) public Exam update(Exam exam)
{ {
if(exam.getTitle().isEmpty() || (exam.getTitle().length() < 3 || exam.getTitle().length() > 20 ) )
throw new ValidationException("Неверные данные");
Exam currentExam = findById(exam.getId()); Exam currentExam = findById(exam.getId());
currentExam.setTitle(exam.getTitle()); currentExam.setTitle(exam.getTitle());
@ -46,13 +55,11 @@ public class ExamService {
return examRepository.findAll(); return examRepository.findAll();
} }
public List<Exam> findNotUser(User user){ public List<Exam> findNotUser(User user){
return examRepository.findByUserIdNot(user.getId()) return examRepository.findByUserIdNot(user.getId());
.orElseThrow(() -> new ExecutionException("Экзамен не найден"));
} }
public List<Exam> findNotTraining(Training training){ public List<Exam> findNotTraining(Training training){
return examRepository.findByTrainingIdNot(training.getId()) return examRepository.findByTrainingIdNot(training.getId());
.orElseThrow(() -> new ExecutionException("Экзамен не найден"));
} }
} }

View File

@ -6,7 +6,9 @@ import org.hibernate.service.NullServiceException;
import org.hibernate.sql.exec.ExecutionException; import org.hibernate.sql.exec.ExecutionException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import putBit.app.models.*; import putBit.app.models.*;
import putBit.app.models.PrimaryKey.OrderPK;
import putBit.app.repositories.OrderRepository; import putBit.app.repositories.OrderRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import java.util.List; import java.util.List;
@ -56,36 +58,35 @@ public class OrderService {
Order newOrder = Order.builder() Order newOrder = Order.builder()
.user(user) .user(user)
.training(training) .training(training)
.benefit(!user.getBenefits().isEmpty()) .benefit(user.getBenefits() != null && !user.getBenefits().isEmpty())
.confirm(false)
.build(); .build();
return orderRepository.save(newOrder); return orderRepository.save(newOrder);
} }
public Order findById(Order order){ public Order findById(int userId, int trainId){
return orderRepository.findById(order.getId()) OrderPK pk = new OrderPK(userId,trainId);
.orElseThrow(() -> new ExecutionException("Заявка не найдена")); return orderRepository.findById(pk)
.orElseThrow(() -> new EntityNotFoundException("Заявка не найдена"));
} }
public Order delete(Order order){ public Order delete(int userId, int trainId){
Order currentOrder = findById(order); Order currentOrder = findById(userId,trainId);
orderRepository.delete(currentOrder); orderRepository.delete(currentOrder);
return currentOrder; return currentOrder;
} }
public List<Order> findForBenefit(){ public List<Order> findForBenefit(){
return orderRepository.findByBenefit(true) return orderRepository.findAllByBenefit(true);
.orElseThrow(() -> new ExecutionException("Заявка не найдена"));
} }
public List<Order> findForBasic(){ public List<Order> findForBasic(){
return orderRepository.findByBenefit(false) return orderRepository.findAllByBenefit(false);
.orElseThrow(() -> new ExecutionException("Заявка не найдена"));
} }
public List<Order> findByNameOrSnils(String text){ public List<Order> findByNameOrSnils(String text){
return orderRepository.findByUserInfo(text) return orderRepository.findByUserInfo(text);
.orElseThrow(() -> new ExecutionException("Заявка не найдена"));
} }
} }

View File

@ -4,7 +4,10 @@ import lombok.RequiredArgsConstructor;
import org.hibernate.sql.exec.ExecutionException; import org.hibernate.sql.exec.ExecutionException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import putBit.app.models.*; import putBit.app.models.*;
import putBit.app.models.PrimaryKey.TrainingExamPK;
import putBit.app.repositories.TrainingExamRepository; import putBit.app.repositories.TrainingExamRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import putBit.app.services.exceptions.ValidationException;
import java.util.List; import java.util.List;
@ -16,6 +19,12 @@ public class TrainingExamService {
private final TrainingService trainingService; private final TrainingService trainingService;
public TrainingExam create(TrainingExam trainingExam){ public TrainingExam create(TrainingExam trainingExam){
if(trainingExam.getPoints() > 100 || trainingExam.getPoints() < 0 )
throw new ValidationException("Неверные данные");
Training training = trainingService.findById(trainingExam.getTraining().getId()); Training training = trainingService.findById(trainingExam.getTraining().getId());
Exam exam = examService.findById(trainingExam.getExam().getId()); Exam exam = examService.findById(trainingExam.getExam().getId());
TrainingExam newExam = TrainingExam.builder() TrainingExam newExam = TrainingExam.builder()
@ -26,28 +35,31 @@ public class TrainingExamService {
return trainingExamRepository.save(newExam); return trainingExamRepository.save(newExam);
} }
public TrainingExam findById(int id){ public TrainingExam findById(int trainId, int examId){
return trainingExamRepository.findById(id) TrainingExamPK pk = new TrainingExamPK(trainId,examId);
.orElseThrow(() -> new ExecutionException("Экзамен не найден")); return trainingExamRepository.findById(pk)
.orElseThrow(() -> new EntityNotFoundException("Экзамен не найден"));
} }
public TrainingExam update(TrainingExam trainingExam) public TrainingExam update(TrainingExam trainingExam)
{ {
TrainingExam currentExam = findById(trainingExam.getId()); if(trainingExam.getPoints() > 100 || trainingExam.getPoints() < 0 )
throw new ValidationException("Неверные данные");
TrainingExam currentExam = findById(trainingExam.getTraining().getId(),trainingExam.getExam().getId());
currentExam.setPoints(trainingExam.getPoints()); currentExam.setPoints(trainingExam.getPoints());
return trainingExamRepository.save(currentExam); return trainingExamRepository.save(currentExam);
} }
public TrainingExam delete(TrainingExam exam){ public TrainingExam delete(int trainId, int examId){
TrainingExam currentExam = findById(exam.getId()); TrainingExam currentExam = findById( trainId, examId);
trainingExamRepository.delete(currentExam); trainingExamRepository.delete(currentExam);
return currentExam; return currentExam;
} }
public List<TrainingExam> findByTraining(Training training){ public List<TrainingExam> findByTraining(Training training){
Training currentTraining = trainingService.findById(training.getId()); Training currentTraining = trainingService.findById(training.getId());
return trainingExamRepository.findByTraining(currentTraining) return trainingExamRepository.findAllByTraining(currentTraining);
.orElseThrow(() -> new ExecutionException("Экзамены не найден"));
} }
} }

View File

@ -7,6 +7,8 @@ import putBit.app.models.Exam;
import putBit.app.models.Training; import putBit.app.models.Training;
import putBit.app.models.User; import putBit.app.models.User;
import putBit.app.repositories.TrainingRepository; import putBit.app.repositories.TrainingRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import putBit.app.services.exceptions.ValidationException;
import java.util.List; import java.util.List;
@ -16,6 +18,21 @@ public class TrainingService {
private final TrainingRepository trainingRepository; private final TrainingRepository trainingRepository;
public Training create(Training training){ public Training create(Training training){
if(training.getTitle().isEmpty() || (training.getTitle().length() < 2 || training.getTitle().length() > 50 ) )
throw new ValidationException("Неверное название");
if(training.getNum().isEmpty() || (training.getNum().length() < 8 || training.getTitle().length() > 11 ) )
throw new ValidationException("Неверный номер");
if(training.getDesc().isEmpty() || (training.getDesc().length() < 10 || training.getDesc().length() > 300 ) )
throw new ValidationException("Неверное описание");
if(training.getProf().isEmpty() || (training.getProf().length() < 5 || training.getProf().length() > 300 ) )
throw new ValidationException("Неверные профессии");
if(training.getBasic_places() > 999 || training.getBasic_places() < 10 )
throw new ValidationException("Неверные базовые места");
if(training.getBenefit_places() > 999 || training.getBenefit_places() < 10 )
throw new ValidationException("Неверные льготные места");
Training newTraining = Training.builder() Training newTraining = Training.builder()
.title(training.getTitle()) .title(training.getTitle())
.num(training.getNum()) .num(training.getNum())
@ -29,11 +46,25 @@ public class TrainingService {
public Training findById(int id){ public Training findById(int id){
return trainingRepository.findById(id) return trainingRepository.findById(id)
.orElseThrow(() -> new ExecutionException("Направление не найдено")); .orElseThrow(() -> new EntityNotFoundException("Направление не найдено"));
} }
public Training update(Training training) public Training update(Training training)
{ {
if(training.getTitle().isEmpty() || (training.getTitle().length() < 2 || training.getTitle().length() > 50 ) )
throw new ValidationException("Неверное название");
if(training.getNum().isEmpty() || (training.getNum().length() < 8 || training.getNum().length() > 11 ) )
throw new ValidationException("Неверный номер");
if(training.getDesc().isEmpty() || (training.getDesc().length() < 10 || training.getDesc().length() > 300 ) )
throw new ValidationException("Неверное описание");
if(training.getProf().isEmpty() || (training.getProf().length() < 5 || training.getProf().length() > 300 ) )
throw new ValidationException("Неверные профессии");
if(training.getBasic_places() > 999 || training.getBasic_places() < 10 )
throw new ValidationException("Неверные базовые места");
if(training.getBenefit_places() > 999 || training.getBenefit_places() < 10 )
throw new ValidationException("Неверные льготные места");
Training currentTraining = findById(training.getId()); Training currentTraining = findById(training.getId());
currentTraining.setTitle(training.getTitle()); currentTraining.setTitle(training.getTitle());
@ -56,7 +87,6 @@ public class TrainingService {
} }
public List<Training> findByTitle(String title){ public List<Training> findByTitle(String title){
return trainingRepository.findByTitleContaining(title) return trainingRepository.findAllByTitleContaining(title);
.orElseThrow(() -> new ExecutionException("Направление не найдено"));
} }
} }

View File

@ -8,6 +8,8 @@ import putBit.app.models.Benefit;
import putBit.app.models.User; import putBit.app.models.User;
import putBit.app.models.enums.Role; import putBit.app.models.enums.Role;
import putBit.app.repositories.UserRepository; import putBit.app.repositories.UserRepository;
import putBit.app.services.exceptions.EntityNotFoundException;
import putBit.app.services.exceptions.ValidationException;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -18,6 +20,19 @@ public class UserService {
private final AchievementService achievementService; private final AchievementService achievementService;
public User create(User user){ public User create(User user){
if(user.getEmail().isEmpty() )
throw new ValidationException("Неверная почта");
if(user.getName().isEmpty() || (user.getName().length() < 3 || user.getName().length() > 80 ) )
throw new ValidationException("Неверное ФИО");
if(user.getSnils().length() != 11)
throw new ValidationException("Неверный снилс");
if(user.getPassword().isEmpty() || (user.getPassword().length() < 6 || user.getName().length() > 20 ) )
throw new ValidationException("Неверный пароль");
if(user.getPhone().length() != 11)
throw new ValidationException("Неверный номер телефона");
User newUser = User.builder() User newUser = User.builder()
.email(user.getEmail()) .email(user.getEmail())
.password(user.getPassword()) .password(user.getPassword())
@ -31,17 +46,29 @@ public class UserService {
public User findById(int id){ public User findById(int id){
return userRepository.findById(id) return userRepository.findById(id)
.orElseThrow(() -> new ExecutionException("Пользователь не найден")); .orElseThrow(() -> new EntityNotFoundException("Пользователь не найден"));
} }
public User auth(User user) public User auth(User user)
{ {
return userRepository.findByEmailAndPassword(user.getEmail(), user.getPassword()) return userRepository.findByEmailAndPassword(user.getEmail(), user.getPassword())
.orElseThrow(() -> new ExecutionException("Пользователь не найден")); .orElseThrow(() -> new EntityNotFoundException("Пользователь не найден"));
} }
public User update(User user) public User update(User user)
{ {
if(user.getEmail().isEmpty() )
throw new ValidationException("Неверная почта");
if(user.getName().isEmpty() || (user.getName().length() < 3 || user.getName().length() > 80 ) )
throw new ValidationException("Неверное ФИО");
if(user.getSnils().length() != 11)
throw new ValidationException("Неверный снилс");
if(user.getPassword().isEmpty() || (user.getPassword().length() < 6 || user.getName().length() > 20 ) )
throw new ValidationException("Неверный пароль");
if(user.getPhone().length() > 12 || user.getPhone().length() < 11)
throw new ValidationException("Неверный номер телефона");
User currentUser = findById(user.getId()); User currentUser = findById(user.getId());
if(!user.getName().isEmpty() && !currentUser.getName().equals(user.getName())) if(!user.getName().isEmpty() && !currentUser.getName().equals(user.getName()))
@ -73,14 +100,16 @@ public class UserService {
public User removeAchievement(User user,Achievement achievement){ public User removeAchievement(User user,Achievement achievement){
User currentUser = findById(user.getId()); User currentUser = findById(user.getId());
Achievement newAch = achievementService.findById(achievement.getId()); Achievement newAch = achievementService.findById(achievement.getId());
currentUser.deleteAchievement(newAch); if (!currentUser.deleteAchievement(newAch))
throw new RuntimeException("нет такой ачивки у этого человека");
return userRepository.save(currentUser); return userRepository.save(currentUser);
} }
public User removeBenefit(User user,Benefit benefit){ public User removeBenefit(User user,Benefit benefit){
User currentUser = findById(user.getId()); User currentUser = findById(user.getId());
Benefit newBen = benefitService.findById(benefit.getId()); Benefit newBen = benefitService.findById(benefit.getId());
currentUser.deleteBenefit(newBen); if (!currentUser.deleteBenefit(newBen))
throw new RuntimeException("нет такой ачивки у этого человека");
return userRepository.save(currentUser); return userRepository.save(currentUser);
} }
} }

View File

@ -0,0 +1,7 @@
package putBit.app.services.exceptions;
public class EntityNotFoundException extends RuntimeException {
public EntityNotFoundException(String text) {
super(String.format(text));
}
}

View File

@ -0,0 +1,7 @@
package putBit.app.services.exceptions;
public class ValidationException extends RuntimeException {
public ValidationException(String text) {
super(String.format(text));
}
}

View File

@ -1,13 +1,433 @@
package putBit.app; package putBit.app;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import putBit.app.models.*;
import putBit.app.models.enums.Role;
import putBit.app.services.*;
import java.util.ArrayList;
import java.util.List;
@SpringBootTest @SpringBootTest
class AppApplicationTests { class AppApplicationTests {
@Autowired
UserService userService;
@Autowired
ExamService examService;
@Autowired
ExamResultService examResultService;
@Autowired
BenefitService benefitService;
@Autowired
AchievementService achievementService;
@Autowired
TrainingService trainingService;
@Autowired
TrainingExamService trainingExamService;
@Autowired
OrderService orderService;
@Test @Test
void contextLoads() { void createUser() {
User us1 = User.builder()
.email("email1")
.password("12345678")
.phone("88005553535")
.role(Role.USER)
.name("Vova Morozov")
.snils("33322233344")
.build();
User us2 = User.builder()
.email("email2")
.password("12345678")
.phone("88005553535")
.role(Role.USER)
.name("Dima Redov")
.snils("11122233344")
.build();
User res1 = userService.create(us1);
User res2 = userService.create(us2);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
} }
@Test
void CreateExam(){
Exam ex1 = Exam.builder()
.title("Математика")
.build();
Exam ex2 = Exam.builder()
.title("Русский язык")
.build();
Exam ex3 = Exam.builder()
.title("Физика")
.build();
Exam ex4 = Exam.builder()
.title("Информатика")
.build();
Exam res1 = examService.create(ex1);
Exam res2 = examService.create(ex2);
Exam res3 = examService.create(ex3);
Exam res4 = examService.create(ex4);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
Assertions.assertNotNull(res3);
Assertions.assertNotNull(res4);
}
@Test
void CreateBenefit(){
Benefit bf1 = Benefit.builder()
.title("Инвалидность I")
.build();
Benefit bf2 = Benefit.builder()
.title("Инвалидность II")
.build();
Benefit bf3 = Benefit.builder()
.title("Инвалидность III")
.build();
Benefit res1 = benefitService.create(bf1);
Benefit res2 = benefitService.create(bf2);
Benefit res3 = benefitService.create(bf3);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
Assertions.assertNotNull(res3);
}
@Test
void CreateAchievements(){
Achievement ac1 = Achievement.builder()
.title("ГТО 1 степени")
.points(5)
.build();
Achievement ac2 = Achievement.builder()
.title("ГТО 2 степени")
.points(3)
.build();
Achievement ac3 = Achievement.builder()
.title("Красный диплом")
.points(7)
.build();
Achievement res1 = achievementService.create(ac1);
Achievement res2 = achievementService.create(ac2);
Achievement res3 = achievementService.create(ac3);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
Assertions.assertNotNull(res3);
}
@Test
void CreateExamResult(){
User us1 = userService.findById(1);
User us2 = userService.findById(52);
Exam ex1 = examService.findById(1);
Exam ex2 = examService.findById(2);
Exam ex3 = examService.findById(3);
ExamResult er1 = ExamResult.builder()
.user(us1)
.exam(ex1)
.points(30)
.build();
ExamResult er2 = ExamResult.builder()
.user(us1)
.exam(ex2)
.points(30)
.build();
ExamResult er3 = ExamResult.builder()
.user(us2)
.exam(ex2)
.points(50)
.build();
ExamResult er4 = ExamResult.builder()
.user(us2)
.exam(ex3)
.points(60)
.build();
var res1 = examResultService.create(er1);
var res2 = examResultService.create(er2);
var res3 = examResultService.create(er3);
var res4 = examResultService.create(er4);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
Assertions.assertNotNull(res3);
Assertions.assertNotNull(res4);
}
@Test
void CreateTraining() {
Training tr1 = Training.builder()
.title("ПИбд")
.num("09.09.01.01")
.desc("Типо программисты")
.prof("бэкендер, фронтендер, аналитикffff")
.basic_places(100)
.benefit_places(10)
.build();
Training tr2 = Training.builder()
.title("ИВТ")
.num("09.09.02")
.desc("Типо программисты-инженеры")
.prof("на заваод")
.basic_places(120)
.benefit_places(12)
.build();
Training tr3 = Training.builder()
.title("ИСЭ")
.num("09.09.03")
.desc("Типо программисты-инженеры")
.prof("цифровой экономист")
.basic_places(120)
.benefit_places(12)
.build();
var res1 = trainingService.create(tr1);
var res2 = trainingService.create(tr2);
var res3 = trainingService.create(tr3);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
Assertions.assertNotNull(res3);
}
@Test
void CreateTrainingExam(){
Training tr1 = trainingService.findById(1);
Training tr2 = trainingService.findById(2);
Exam ex1 = examService.findById(1);
Exam ex2 = examService.findById(2);
Exam ex3 = examService.findById(4);
TrainingExam te1 = TrainingExam.builder()
.training(tr1)
.exam(ex1)
.points(30)
.build();
TrainingExam te2 = TrainingExam.builder()
.training(tr1)
.exam(ex2)
.points(30)
.build();
TrainingExam te3 = TrainingExam.builder()
.training(tr2)
.exam(ex2)
.points(5)
.build();
TrainingExam te4 = TrainingExam.builder()
.training(tr2)
.exam(ex3)
.points(66)
.build();
var res1 = trainingExamService.create(te1);
var res2 = trainingExamService.create(te2);
var res3 = trainingExamService.create(te3);
var res4 = trainingExamService.create(te4);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
Assertions.assertNotNull(res3);
Assertions.assertNotNull(res4);
}
@Test
void CreateOrder(){
Training tr1 = trainingService.findById(1);
Training tr2 = trainingService.findById(3);
User us1 = userService.findById(2);
User us2 = userService.findById(2);
Order o1 = Order.builder()
.user(us1)
.training(tr1)
.build();
Order o2 = Order.builder()
.user(us2)
.training(tr2)
.build();
var res1 = orderService.create(o1);
var res2 = orderService.create(o2);
Assertions.assertNotNull(res1);
Assertions.assertNotNull(res2);
}
@Test
void updateUser(){
User us1 = userService.findById(1);
String oldName = us1.getName();
us1.setName(oldName + "Upd");
var res = userService.update(us1);
Assertions.assertNotNull(res);
}
@Test
void updateUserAdd(){
User us1 = userService.findById(1);
Achievement ach1 = achievementService.findById(1);
Achievement ach2 = achievementService.findById(2);
List<User> res = new ArrayList<>();
res.add(userService.addAchievement(us1, ach2));
res.add(userService.addAchievement(us1, ach1));
User us2 = userService.findById(52);
Benefit b1 = benefitService.findById(2);
Benefit b2 = benefitService.findById(3);
res.add(userService.addAchievement(us2, ach2));
res.add(userService.addBenefit(us2, b2));
res.add(userService.addBenefit(us1,b2));
Assertions.assertEquals(res.size(),4);
}
@Test
void updateUserRemove(){
User us1 = userService.findById(52);
Benefit b1 = benefitService.findById(3);
int countB = us1.getBenefits().size();
us1 = userService.removeBenefit(us1,b1);
Assertions.assertEquals(countB-1,us1.getBenefits().size());
}
@Test
void updateExam(){
Exam ex = examService.findById(1);
String oldName = ex.getTitle();
ex.setTitle(ex.getTitle() + "UPD");
var res = examService.update(ex);
Assertions.assertEquals(oldName + "UPD", res.getTitle());
}
@Test
void updateExamResult(){
ExamResult er = examResultService.findById(1,1);
er.setPoints(100);
var res = examResultService.update(er);
Assertions.assertEquals(100,res.getPoints());
}
@Test
void updateBenefit(){
Benefit b = benefitService.findById(1);
String oldName = b.getTitle();
b.setTitle(b.getTitle() + "UPD");
var res = benefitService.update(b);
Assertions.assertEquals(oldName + "UPD", res.getTitle());
}
@Test
void updateAchievement(){
Achievement b = achievementService.findById(1);
String oldName = b.getTitle();
b.setTitle(b.getTitle() + "UPD");
var res = achievementService.update(b);
Assertions.assertEquals(oldName + "UPD", res.getTitle());
}
@Test
void updateTraining(){
Training b = trainingService.findById(1);
String oldName = b.getTitle();
b.setTitle(b.getTitle() + "UPD");
var res = trainingService.update(b);
Assertions.assertEquals(oldName + "UPD", res.getTitle());
}
@Test
void updateTrainigExam(){
TrainingExam er = trainingExamService.findById(1,1);
er.setPoints(90);
var res = trainingExamService.update(er);
Assertions.assertEquals(110,res.getPoints());
}
@Test
void deleteExam(){
int countBefore = examService.findAll().size();
Exam ex = examService.findById(3);
examService.delete(ex);
int countAfter = examService.findAll().size();
Assertions.assertEquals(countBefore-1,countAfter);
}
@Test
void deleteBenefit(){
int countBefore = benefitService.findAll().size();
Benefit ex = benefitService.findById(3);
benefitService.delete(ex);
int countAfter = benefitService.findAll().size();
Assertions.assertEquals(countBefore-1,countAfter);
}
@Test
void deleteAchievement(){
int countBefore = achievementService.findAll().size();
Achievement ex = achievementService.findById(2);
achievementService.delete(ex);
int countAfter = achievementService.findAll().size();
Assertions.assertEquals(countBefore-1,countAfter);
}
@Test
void deleteExamResult(){
var res = examResultService.delete(1,1);
Assertions.assertEquals(1,res.getUser().getId());
}
@Test
void deleteTraining(){
int countBefore = trainingService.findAll().size();
Training ex = trainingService.findById(2);
trainingService.delete(ex);
int countAfter = trainingService.findAll().size();
Assertions.assertEquals(countBefore-1,countAfter);
}
@Test
void deleteTrainingExam(){
var res = trainingExamService.delete(1,1);
Assertions.assertEquals(1,res.getTraining().getId());
}
@Test
void deleteOrder(){
var res = orderService.delete(2,3);
System.out.println(res.getUser().getName());
}
} }