1 | package project.educatum.service.impl;
|
---|
2 |
|
---|
3 | import org.springframework.stereotype.Service;
|
---|
4 | import project.educatum.model.Admin;
|
---|
5 | import project.educatum.model.Subject;
|
---|
6 | import project.educatum.model.exceptions.AdminNotFoundException;
|
---|
7 | import project.educatum.model.exceptions.SubjectNotFoundException;
|
---|
8 | import project.educatum.repository.AdminRepository;
|
---|
9 | import project.educatum.repository.SubjectRepository;
|
---|
10 | import project.educatum.service.SubjectService;
|
---|
11 |
|
---|
12 | import java.util.*;
|
---|
13 | import java.util.stream.Collectors;
|
---|
14 |
|
---|
15 | @Service
|
---|
16 | public class SubjectServiceImpl implements SubjectService {
|
---|
17 |
|
---|
18 | private final SubjectRepository subjectsRepository;
|
---|
19 | private final AdminRepository adminRepository;
|
---|
20 |
|
---|
21 | public SubjectServiceImpl(SubjectRepository subjectsRepository, AdminRepository adminRepository) {
|
---|
22 | this.subjectsRepository = subjectsRepository;
|
---|
23 | this.adminRepository = adminRepository;
|
---|
24 | }
|
---|
25 |
|
---|
26 | @Override
|
---|
27 | public List<Subject> findAll() {
|
---|
28 | return this.subjectsRepository.findAll()
|
---|
29 | .stream()
|
---|
30 | .sorted(Comparator.comparing(Subject::getName))
|
---|
31 | .collect(Collectors.toList());
|
---|
32 | }
|
---|
33 |
|
---|
34 | @Override
|
---|
35 | public List<Subject> findAllByNameLike(String name) {
|
---|
36 | if (name != null) {
|
---|
37 | return this.subjectsRepository.findAllByNameContainingIgnoreCase(name);
|
---|
38 | } else {
|
---|
39 | return this.subjectsRepository.findAll();
|
---|
40 | }
|
---|
41 | }
|
---|
42 |
|
---|
43 | @Override
|
---|
44 | public void delete(Integer id) {
|
---|
45 | Subject p = subjectsRepository.findById(id).orElseThrow(SubjectNotFoundException::new);
|
---|
46 | subjectsRepository.delete(p);
|
---|
47 | }
|
---|
48 |
|
---|
49 | @Override
|
---|
50 | public Optional<Subject> findById(Integer id) {
|
---|
51 | return subjectsRepository.findById(id);
|
---|
52 | }
|
---|
53 |
|
---|
54 | @Override
|
---|
55 | public List<Subject> findAllByNameAndTeacherLike(String name, List<Subject> subjects) {
|
---|
56 | List<Subject> searchedSubjects = subjectsRepository.findAllByNameContainingIgnoreCase(name);
|
---|
57 | Set<Subject> result = new HashSet<>();
|
---|
58 | for (Subject p : searchedSubjects) {
|
---|
59 | for (Subject p2 : subjects)
|
---|
60 | if (p.getId().equals(p2.getId())) result.add(p2);
|
---|
61 | }
|
---|
62 | return new ArrayList<>(result);
|
---|
63 | }
|
---|
64 |
|
---|
65 | @Override
|
---|
66 | public Subject create(String ime) {
|
---|
67 | Admin admin = adminRepository.findById(1).orElseThrow(AdminNotFoundException::new);
|
---|
68 | Subject subject = new Subject(ime, admin);
|
---|
69 | return this.subjectsRepository.save(subject);
|
---|
70 | }
|
---|
71 |
|
---|
72 | @Override
|
---|
73 | public Subject findByName(String name) {
|
---|
74 | return subjectsRepository.findByName(name);
|
---|
75 | }
|
---|
76 | }
|
---|