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.web;
35
36 import java.util.Collection;
37 import java.util.HashMap;
38 import java.util.List;
39 import java.util.Map;
40 import java.util.stream.Collectors;
41
42 import javax.servlet.http.HttpServletRequest;
43
44 import org.apache.commons.lang3.math.NumberUtils;
45
46 import fr.paris.lutece.api.user.User;
47 import fr.paris.lutece.plugins.appointment.service.AppointmentPlugin;
48 import fr.paris.lutece.plugins.appointment.service.AppointmentResourceIdService;
49 import fr.paris.lutece.plugins.appointment.service.AppointmentUtilities;
50 import fr.paris.lutece.plugins.appointment.service.FormService;
51 import fr.paris.lutece.plugins.appointment.web.dto.AppointmentFormDTO;
52 import fr.paris.lutece.portal.business.user.AdminUser;
53 import fr.paris.lutece.portal.service.admin.AdminUserService;
54 import fr.paris.lutece.portal.service.dashboard.DashboardComponent;
55 import fr.paris.lutece.portal.service.plugin.Plugin;
56 import fr.paris.lutece.portal.service.plugin.PluginService;
57 import fr.paris.lutece.portal.service.rbac.RBACService;
58 import fr.paris.lutece.portal.service.template.AppTemplateService;
59 import fr.paris.lutece.portal.service.util.AppPathService;
60 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
61 import fr.paris.lutece.util.html.HtmlTemplate;
62
63
64
65
66
67
68
69 public class AppointmentFormDashboardComponent extends DashboardComponent
70 {
71
72 private static final String MARK_URL = "url";
73 private static final String MARK_ICON = "icon";
74 private static final String MARK_APPOINTMENTFORM_LIST = "appointmentform_list";
75 private static final String MARK_PERMISSION_CREATE = "permission_create";
76 private static final String MARK_BASE_URL = "baseUrl";
77 private static final String MARK_AVAILABLE_SUFFIX = "_available";
78
79
80 private static final String VIEW_PERMISSIONS_FORM = "permissions";
81
82
83 private static final String PARAMETER_APPOINTMENT = "appointment";
84
85
86 private static final String TEMPLATE_DASHBOARD = "/admin/plugins/appointment/appointment_form_dashboard.html";
87
88
89
90
91 @Override
92 public String getDashboardData( AdminUser user, HttpServletRequest request )
93 {
94 Collection<Plugin> pluginsList = PluginService.getPluginList( );
95 List<AppointmentFormDTO> listAppointmentForm = FormService.buildAllAppointmentFormLight( );
96 listAppointmentForm = ( List<AppointmentFormDTO> ) AdminWorkgroupService.getAuthorizedCollection( listAppointmentForm, ( User ) user );
97 listAppointmentForm = listAppointmentForm.stream( ).sorted( ( a1, a2 ) -> a1.getTitle( ).compareTo( a2.getTitle( ) ) ).collect( Collectors.toList( ) );
98 Map<String, Object> model = new HashMap<>( );
99 Plugin plugin = PluginService.getPlugin( AppointmentPlugin.PLUGIN_NAME );
100 model.put( MARK_APPOINTMENTFORM_LIST, RBACService.getAuthorizedCollection( listAppointmentForm, AppointmentResourceIdService.PERMISSION_VIEW_FORM,
101 ( User ) AdminUserService.getAdminUser( request ) ) );
102 model.put( MARK_ICON, plugin.getIconUrl( ) );
103 model.put( MARK_BASE_URL, AppPathService.getProdUrl( request ) );
104 model.put( MARK_URL, AppointmentFormJspBean.getURLManageAppointmentForms( request ) );
105 model.put( MARK_PERMISSION_CREATE, String.valueOf(
106 RBACService.isAuthorized( AppointmentFormDTO.RESOURCE_TYPE_CREATE, NumberUtils.INTEGER_ZERO.toString( ) , AppointmentResourceIdService.PERMISSION_CREATE_FORM, ( User ) user ) ) );
107 for( Plugin currentPlugin : pluginsList )
108 {
109 if ( currentPlugin.getName().contains( PARAMETER_APPOINTMENT ))
110 {
111 model.put( currentPlugin.getName( ).replaceAll( "-","_" ) + MARK_AVAILABLE_SUFFIX, currentPlugin.isInstalled( ) );
112 }
113 }
114
115 model.put( VIEW_PERMISSIONS_FORM, AppointmentUtilities.getPermissions( listAppointmentForm, AdminUserService.getAdminUser( request ) ) );
116 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_DASHBOARD, AdminUserService.getLocale( request ), model );
117 return template.getHtml( );
118 }
119
120 }