1
1
package com .csaba79coder .bestprotocol .model .representative .service ;
2
2
3
3
import com .csaba79coder .bestprotocol .model .Availability ;
4
+ import com .csaba79coder .bestprotocol .model .PreviousJobTitleTranslationModel ;
4
5
import com .csaba79coder .bestprotocol .model .RepresentativeAdminModel ;
5
6
import com .csaba79coder .bestprotocol .model .RepresentativeTranslationManagerModel ;
6
7
import com .csaba79coder .bestprotocol .model .government .entity .Government ;
7
8
import com .csaba79coder .bestprotocol .model .government .entity .GovernmentTranslation ;
8
- import com .csaba79coder .bestprotocol .model .government .persistence .GovernmentRepository ;
9
9
import com .csaba79coder .bestprotocol .model .government .persistence .GovernmentTranslationRepository ;
10
+ import com .csaba79coder .bestprotocol .model .government .persistence .PreviousJobTitleTranslationRepository ;
10
11
import com .csaba79coder .bestprotocol .model .representative .entity .Representative ;
11
12
import com .csaba79coder .bestprotocol .model .representative .entity .RepresentativeTranslation ;
12
13
import com .csaba79coder .bestprotocol .model .representative .persistence .RepresentativeRepository ;
20
21
21
22
import java .util .List ;
22
23
import java .util .NoSuchElementException ;
23
- import java .util .Optional ;
24
+ import java .util .UUID ;
24
25
import java .util .stream .Collectors ;
25
26
26
27
@ Service
29
30
public class RepresentativeService {
30
31
31
32
private final RepresentativeRepository representativeRepository ;
32
- private final GovernmentRepository governmentRepository ;
33
33
private final GovernmentTranslationRepository governmentTranslationRepository ;
34
34
private final RepresentativeTranslationRepository representativeTranslationRepository ;
35
+ private final PreviousJobTitleTranslationRepository previousJobTitleTranslationRepository ;
35
36
36
37
public RepresentativeAdminModel addNewRepresentative (String languageShortName , String name , String jobTitle , String government , String secretairat , String address , String phoneNumber , String email , MultipartFile image , String note ) {
37
38
return Mapper .mapRepresentativeEntityToAdminModel (representativeRepository .save (Mapper .mapFieldIntoEntity (languageShortName , name , jobTitle , government , secretairat , address , phoneNumber , email , image , note )));
38
39
}
39
40
40
41
public List <RepresentativeAdminModel > renderAllRepresentatives (String languageShortName ) {
41
- return representativeRepository .findAllByLanguageShortName ( languageShortName )
42
+ return representativeRepository .findAll ( )
42
43
.stream ()
43
- .map (representative -> getRepresentativeWithTranslation (languageShortName ))
44
+ .map (representative -> getRepresentativeWithTranslation (representative . getId (), languageShortName ))
44
45
.collect (Collectors .toList ());
45
46
}
46
47
@@ -55,42 +56,62 @@ public Government findGovernmentByName(String government) {
55
56
}
56
57
57
58
public List <RepresentativeAdminModel > renderAllRepresentativesByGovernmentId (String languageShortName , Long governmentId ) {
58
- return representativeRepository .findRepresentativeByLanguageShortNameAndGovernmentId ( languageShortName , governmentId )
59
+ return representativeRepository .findRepresentativeByGovernmentId ( governmentId )
59
60
.stream ()
60
- .map (representative -> getRepresentativeWithTranslation (languageShortName ))
61
+ .map (representative -> getRepresentativeWithTranslation (representative . getId (), languageShortName ))
61
62
.collect (Collectors .toList ());
62
63
}
63
64
64
- private RepresentativeAdminModel getRepresentativeWithTranslation (String languageShortName ) {
65
- Representative currentRepresentative = representativeRepository . findRepresentativeByLanguageShortName ( languageShortName );
66
- Optional < GovernmentTranslation > governmentTranslation = governmentTranslationRepository . findGovernmentTranslationById ( currentRepresentative . getGovernment (). getId ( ));
67
- governmentTranslation . ifPresent ( translation -> currentRepresentative . setGovernment ( translation .getGovernment ()) );
65
+ private RepresentativeAdminModel getRepresentativeWithTranslation (UUID representativeId , String languageShortName ) {
66
+ // TODO previous job title list!
67
+ Representative currentRepresentative = representativeRepository . findById ( representativeId ). orElseThrow (() -> new NoSuchElementException ( "Representative not found" ));
68
+ GovernmentTranslation governmentTranslation = governmentTranslationRepository . findByGovernmentIdAndLanguageShortName ( currentRepresentative .getGovernment (). getId (), languageShortName );
68
69
RepresentativeTranslation currentTranslation = representativeTranslationRepository .findRepresentativeTranslationByLanguageShortNameAndRepresentativeId (languageShortName , currentRepresentative .getId ());
69
- RepresentativeTranslationManagerModel model = new RepresentativeTranslationManagerModel ();
70
- model .setName (currentTranslation .getName ());
71
- model .setLanguageShortName (currentTranslation .getLanguageShortName ());
72
- model .setAddress (currentTranslation .getAddress ());
73
- // TODO country to api contract
74
- model .setJobTitle (currentTranslation .getJobTitle ());
75
- model .setSecretairat (currentTranslation .getSecretairat ());
76
- // TODO previous jobtitle store in database
77
- model .setPreviousJobTitle (null );
78
- model .setNote (currentTranslation .getNote ());
79
- model .setSecretNote (currentTranslation .getSecretNote ());
80
- model .setCountry (currentTranslation .getCountry ());
81
- return new RepresentativeAdminModel ()
82
- .id (currentRepresentative .getId ())
83
- .createdAt (String .valueOf (currentRepresentative .getCreatedAt ()))
84
- .updatedAt (String .valueOf (currentRepresentative .getUpdatedAt ()))
85
- .createdBy (currentRepresentative .getCreatedBy ())
86
- .updatedBy (currentRepresentative .getUpdatedBy ())
87
- .representativeTranslation (model )
88
- .government (Mapper .mapGovernmentTranslationToAdminModel (governmentTranslation .get ()))
89
- .phoneNumber (currentRepresentative .getPhoneNumber ())
90
- .email (currentRepresentative .getEmail ())
91
- .image (ImageUtil .decompressImage (currentRepresentative .getImage ()))
92
- // TODO add to api contract the secret note!
93
- //.note(currentRepresentative.getNote())
94
- .availability (Availability .valueOf (currentRepresentative .getAvailability ().name ()));
70
+
71
+ if (currentTranslation != null ) {
72
+ RepresentativeTranslationManagerModel model = new RepresentativeTranslationManagerModel ();
73
+ model .setId (currentTranslation .getId ());
74
+ model .setName (currentTranslation .getName ());
75
+ model .setLanguageShortName (currentTranslation .getLanguageShortName ());
76
+ model .setAddress (currentTranslation .getAddress ());
77
+ model .setJobTitle (currentTranslation .getJobTitle ());
78
+ model .setSecretairat (currentTranslation .getSecretairat ());
79
+ model .setNote (currentTranslation .getNote ());
80
+ model .setSecretNote (currentTranslation .getSecretNote ());
81
+ model .setCountry (currentTranslation .getCountry ());
82
+ return new RepresentativeAdminModel ()
83
+ .id (currentRepresentative .getId ())
84
+ .createdAt (String .valueOf (currentRepresentative .getCreatedAt ()))
85
+ .updatedAt (String .valueOf (currentRepresentative .getUpdatedAt ()))
86
+ .createdBy (currentRepresentative .getCreatedBy ())
87
+ .updatedBy (currentRepresentative .getUpdatedBy ())
88
+ .representativeTranslation (model )
89
+ .government (Mapper .mapGovernmentTranslationToAdminModel (governmentTranslation ))
90
+ .phoneNumber (currentRepresentative .getPhoneNumber ())
91
+ .email (currentRepresentative .getEmail ())
92
+ .image (ImageUtil .decompressImage (currentRepresentative .getImage ()))
93
+ .previousJobTitle (previousJobTitleTranslationRepository .findByRepresentativeAndLanguageShortName (currentRepresentative , languageShortName )
94
+ .stream ()
95
+ .map (previousJobTitleTranslation -> {
96
+ PreviousJobTitleTranslationModel jobTitle = new PreviousJobTitleTranslationModel ();
97
+ jobTitle .setId (previousJobTitleTranslation .getId ());
98
+ jobTitle .setName (previousJobTitleTranslation .getName ());
99
+ jobTitle .setLanguageShortName (previousJobTitleTranslation .getLanguageShortName ());
100
+ return jobTitle ;
101
+ })
102
+ .toList ())
103
+ .availability (Availability .valueOf (currentRepresentative .getAvailability ().name ()));
104
+ } else {
105
+ return new RepresentativeAdminModel ()
106
+ .id (currentRepresentative .getId ())
107
+ .createdAt (String .valueOf (currentRepresentative .getCreatedAt ()))
108
+ .updatedAt (String .valueOf (currentRepresentative .getUpdatedAt ()))
109
+ .createdBy (currentRepresentative .getCreatedBy ())
110
+ .updatedBy (currentRepresentative .getUpdatedBy ())
111
+ .phoneNumber (currentRepresentative .getPhoneNumber ())
112
+ .email (currentRepresentative .getEmail ())
113
+ .image (ImageUtil .decompressImage (currentRepresentative .getImage ()))
114
+ .availability (Availability .valueOf (currentRepresentative .getAvailability ().name ()));
115
+ }
95
116
}
96
117
}
0 commit comments