View Javadoc
1   /*
2    * Copyright (c) 2002-2022, City of Paris
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    *
9    *  1. Redistributions of source code must retain the above copyright notice
10   *     and the following disclaimer.
11   *
12   *  2. Redistributions in binary form must reproduce the above copyright notice
13   *     and the following disclaimer in the documentation and/or other materials
14   *     provided with the distribution.
15   *
16   *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17   *     contributors may be used to endorse or promote products derived from
18   *     this software without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   *
32   * License 1.0
33   */
34  package fr.paris.lutece.plugins.mydashboard.modules.notification.web;
35  
36  import java.util.HashMap;
37  import java.util.List;
38  import java.util.Locale;
39  import java.util.Map;
40  
41  import javax.inject.Inject;
42  import javax.inject.Named;
43  import javax.servlet.http.HttpServletRequest;
44  import javax.servlet.http.HttpSession;
45  
46  import org.apache.commons.lang3.StringUtils;
47  
48  import fr.paris.lutece.plugins.mydashboard.modules.notification.business.Notification;
49  import fr.paris.lutece.plugins.mydashboard.modules.notification.service.INotificationService;
50  import fr.paris.lutece.plugins.mydashboard.modules.notification.service.NotificationService;
51  import fr.paris.lutece.plugins.mydashboard.modules.notification.util.NotificationConstants;
52  import fr.paris.lutece.plugins.mydashboard.service.MyDashboardComponent;
53  import fr.paris.lutece.portal.service.i18n.I18nService;
54  import fr.paris.lutece.portal.service.security.LuteceUser;
55  import fr.paris.lutece.portal.service.security.SecurityService;
56  import fr.paris.lutece.portal.service.template.AppTemplateService;
57  import fr.paris.lutece.portal.service.util.AppPropertiesService;
58  import fr.paris.lutece.portal.web.util.LocalizedPaginator;
59  import fr.paris.lutece.util.html.AbstractPaginator;
60  import fr.paris.lutece.util.html.HtmlTemplate;
61  
62  /**
63   * 
64   * MyDashboardComponentAllNotification
65   *
66   */
67  public class MyDashboardComponentAllNotification extends MyDashboardComponent
68  {
69  
70      /**
71       * 
72       */
73      private static final long serialVersionUID = 8297192924908575568L;
74  
75      private static final String TEMPLATE_ALL_NOTIFICATION_LIST = "skin/plugins/mydashboard/modules/notification/dashboard_all_notification.html";
76      private static final String DASHBOARD_COMPONENT_ID = "notification.myDashboardComponentAllNotification";
77      private static final String MESSAGE_COMPONENT_DESCRIPTION = "module.mydashboard.notification.myDashboardComponentAllNotification.description";
78  
79      @Inject
80      @Named( NotificationService.BEAN_NAME )
81      private INotificationService _notificationService;
82  
83      @Override
84      public String getDashboardData( HttpServletRequest request )
85      {
86          LuteceUser user = SecurityService.getInstance( ).getRegisteredUser( request );
87          String strPanel = request.getParameter( NotificationConstants.PARAMETER_PANEL );
88          boolean isPanelAll = StringUtils.isNotEmpty( strPanel ) && strPanel.equals( NotificationConstants.MES_NOTIFICATIONS );
89  
90          if ( user != null && isPanelAll )
91          {
92              Map<String, Object> model = new HashMap<>( );
93  
94              HttpSession session = request.getSession( true );
95  
96              String strCurrentPageIndex = session.getAttribute( NotificationConstants.CURRENT_PAGE_INDEX ) != null
97                      ? (String) session.getAttribute( NotificationConstants.CURRENT_PAGE_INDEX )
98                      : null;
99              
100             strCurrentPageIndex = AbstractPaginator.getPageIndex( request, AbstractPaginator.PARAMETER_PAGE_INDEX, strCurrentPageIndex );
101             session.setAttribute( NotificationConstants.CURRENT_PAGE_INDEX, strCurrentPageIndex );
102 
103             int nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( NotificationConstants.PROPERTY_NUMBER_OF_DEMAND_PER_PAGE, 10 );
104 
105             List<Notification> listNotification = _notificationService.findNotificationsByUser( user.getName( ), null );
106 
107             // PAGINATOR
108             LocalizedPaginator<Notification> paginator = new LocalizedPaginator<>( listNotification, nDefaultItemsPerPage,
109                     AppPropertiesService.getProperty( NotificationConstants.PROPERTY_URL_MES_NOTIFICATIONS ), AbstractPaginator.PARAMETER_PAGE_INDEX,
110                     strCurrentPageIndex, request.getLocale( ) );
111 
112             model.put( NotificationConstants.MARK_NB_ITEMS_PER_PAGE, "" + nDefaultItemsPerPage );
113             model.put( NotificationConstants.MARK_PAGINATOR, paginator );
114             model.put( NotificationConstants.MARK_NOTIFICATION_LIST, paginator.getPageItems( ) );
115 
116             HtmlTemplate htmTemplate = AppTemplateService.getTemplate( TEMPLATE_ALL_NOTIFICATION_LIST, request.getLocale( ), model );
117 
118             return htmTemplate.getHtml( );
119         }
120 
121         return StringUtils.EMPTY;
122     }
123 
124     @Override
125     public String getComponentId( )
126     {
127         return DASHBOARD_COMPONENT_ID;
128     }
129 
130     @Override
131     public String getComponentDescription( Locale locale )
132     {
133         return I18nService.getLocalizedString( MESSAGE_COMPONENT_DESCRIPTION, locale );
134     }
135 
136 }