1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.appointment.modules.management.service;
35
36 import java.util.HashMap;
37 import java.util.List;
38 import java.util.Map;
39 import java.util.function.Function;
40 import java.util.stream.Collectors;
41
42 import javax.inject.Inject;
43
44 import org.springframework.beans.factory.annotation.Autowired;
45
46 import fr.paris.lutece.plugins.appointment.business.category.Category;
47 import fr.paris.lutece.plugins.appointment.business.category.CategoryHome;
48 import fr.paris.lutece.plugins.appointment.business.form.Form;
49 import fr.paris.lutece.plugins.appointment.business.form.FormHome;
50 import fr.paris.lutece.plugins.appointment.modules.management.business.search.AppointmentSearchItem;
51 import fr.paris.lutece.plugins.appointment.modules.management.business.search.MultiviewFilter;
52 import fr.paris.lutece.plugins.appointment.modules.management.service.search.AppointmentSearchEngine;
53 import fr.paris.lutece.plugins.appointment.modules.management.service.search.AppointmentSortConfig;
54 import fr.paris.lutece.plugins.workflowcore.business.state.State;
55 import fr.paris.lutece.plugins.workflowcore.business.state.StateFilter;
56 import fr.paris.lutece.plugins.workflowcore.service.state.StateService;
57
58 public class AppointmentSearchService implements IAppointmentSearchService
59 {
60 public static final String BEAN_NAME = "appointment-management.appointmentSearchService";
61
62 @Inject
63 private AppointmentSearchEngine _searchEngine;
64
65 @Autowired( required = false )
66 private StateService _stateService;
67
68 @Override
69 public int search( List<AppointmentSearchItem> results, MultiviewFilter filter, int nStartIndex, int nPageSize, AppointmentSortConfig sortConfig )
70 {
71 int nbResults = _searchEngine.getSearchResult( results, filter, nStartIndex, nPageSize, sortConfig );
72 Map<Integer, Form> mapForms = FormHome.findAllForms( ).stream( ).collect( Collectors.toMap( Form::getIdForm, Function.identity( ) ) );
73 Map<Integer, State> mapState = new HashMap<>( );
74 Map<Integer, Category> mapCategory = CategoryHome.findAllCategories( ).stream( )
75 .collect( Collectors.toMap( Category::getIdCategory, Function.identity( ) ) );
76
77 if ( _stateService != null )
78 {
79 List<State> stateList = _stateService.getListStateByFilter( new StateFilter( ) );
80 mapState = stateList.stream( ).collect( Collectors.toMap( State::getId, Function.identity( ) ) );
81 }
82
83 for ( AppointmentSearchItem item : results )
84 {
85 Form form = mapForms.get( item.getIdForm( ) );
86 State state = mapState.get( item.getIdState( ) );
87 Category category = mapCategory.get( item.getIdCategory( ) );
88
89 if ( form != null )
90 {
91 item.setFormTitle( form.getTitle( ) );
92 }
93 if ( state != null )
94 {
95 item.setStateTitle( state.getName( ) );
96 }
97 if ( category != null )
98 {
99 item.setCategoryTitle( category.getLabel( ) );
100 }
101 }
102 return nbResults;
103 }
104 }