1 /* 2 * Copyright (c) 2002-2023, Mairie de 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.identity.service; 35 36 import java.util.List; 37 import java.util.Map; 38 39 import javax.servlet.http.HttpServletRequest; 40 41 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.common.IdentityDto; 42 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.contract.ServiceContractSearchResponse; 43 import fr.paris.lutece.plugins.identitystore.v3.web.rs.dto.search.DuplicateSearchResponse; 44 import fr.paris.lutece.plugins.mydashboard.modules.identity.business.AttributeCategory; 45 import fr.paris.lutece.plugins.mydashboard.modules.identity.business.DashboardIdentity; 46 import fr.paris.lutece.portal.service.util.AppException; 47 48 /** 49 * The Interface IDashBoardIdentityService. 50 */ 51 public interface IDashBoardIdentityService { 52 53 54 /** 55 * Gets the dash board identity 56 * 57 * @param strApplicationCode the str application code 58 * @return the dash board identity 59 * @throws AppException the app exception 60 */ 61 DashboardIdentity getDashBoardIdentity(String strApplicationCode) throws AppException; 62 63 /** 64 * Gets the dash board identity. 65 * 66 * @param strApplicationCode the str application code 67 * @param strGuid the user guid 68 * @return the dash board identity 69 * @throws AppException the app exception 70 */ 71 DashboardIdentity getDashBoardIdentity(String strApplicationCode, String strGuid) throws AppException; 72 73 /** 74 * Check fields format of dashboardIdentity. 75 * 76 * @param dashboardIdentity dashboardIdentity to check 77 * @param request the httpServletrequest 78 * @param bOnlyCheckMandatory true if only mandatory file must be checked 79 * @return a Map of errors 80 */ 81 Map<String,String> checkDashboardIdentityFields(DashboardIdentity dashboardIdentity, HttpServletRequest request, 82 boolean bOnlyCheckMandatory); 83 84 85 86 /** 87 * Check fields format of dashboardIdentity. 88 * 89 * @param dashboardIdentity dashboardIdentity to check 90 * @param request the httpServletrequest 91 * @param bOnlyCheckMandatory true if only mandatory file must be checked 92 * @param attributeCategory only check attributeCategory 93 * @return a Map of errors 94 */ 95 Map<String,String> checkDashboardIdentityFields(DashboardIdentity dashboardIdentity, HttpServletRequest request, 96 boolean bOnlyCheckMandatory,AttributeCategory attributeCategory); 97 98 99 100 101 /** 102 * Update identitity using dashboardinformations. 103 * 104 * @param dashboardIdentity the dashboard identity 105 * @param bUpdateOnlyManadtory Only Update mandatory Informations 106 * @throws AppException the app exception 107 */ 108 void updateDashboardIdentity(DashboardIdentity dashboardIdentity, boolean bUpdateOnlyManadtory) throws AppException; 109 110 111 /** 112 * Update identitity using dashboardinformations. 113 * 114 * @param dashboardIdentity the dashboard identity 115 * @param bUpdateOnlyManadtory Only Update mandatory Informations 116 * @param attributeCategory update only DashbordIdentity Attribute in this Category 117 * @throws AppException the app exception 118 */ 119 void updateDashboardIdentity(DashboardIdentity dashboardIdentity, boolean bUpdateOnlyManadtory,AttributeCategory attributeCategory) throws AppException; 120 121 /** 122 * Return an IdentityDTO object wich contains only identity fields to update 123 * @param dashboardIdentity the dashboard Identity 124 * @param bUpdateOnlyManadtory only madantarory field must be updated 125 * @return an IdentityDTO object wich contains only identity fields to update 126 */ 127 IdentityDto getIdentityToUpdate(DashboardIdentity dashboardIdentity,boolean bUpdateOnlyManadtory); 128 129 /** 130 * Populate dashboard identity. 131 * 132 * @param dashboardIdentity the identity 133 * @param request the request 134 */ 135 void populateDashboardIdentity ( DashboardIdentity dashboardIdentity, HttpServletRequest request ); 136 137 138 /** 139 * Populate dashboard identity. 140 * 141 * @param dashboardIdentity the identity 142 * @param request the request 143 * @param attributeCategory update only DashbordIdentity Attribute in this Category 144 */ 145 void populateDashboardIdentity ( DashboardIdentity dashboardIdentity, HttpServletRequest request ,AttributeCategory attributeCategory); 146 147 /** 148 * Search suspicious identities 149 * @param dashboardIdentity 150 * @param listRules 151 * @return suspicious identities 152 */ 153 DuplicateSearchResponse getSuspiciousIdentities( DashboardIdentity dashboardIdentity, List<String> listRules ); 154 155 /** 156 * Return true if exist suspicious identities 157 * @param dashboardIdentity 158 * @param listRules 159 * @return true if exist suspicious identities 160 */ 161 boolean existSuspiciousIdentities ( DashboardIdentity dashboardIdentity, List<String> listRules ); 162 163 /** 164 * {@inheritDoc} 165 */ 166 boolean needCertification(String strApplicationCode, String strGuid, DashboardIdentity dashboardIdentity, List<String> listAttributesNeedCertification, int nLevelMin) 167 throws AppException; 168 169 /** 170 * Get active service contract 171 * @param strApplicationCode 172 * @return active service contract 173 */ 174 ServiceContractSearchResponse getActiveServiceContract( String strApplicationCode ); 175 176 /** 177 * {@inheritDoc} 178 */ 179 Map<String, String> checkDashboardIdentityFieldsFromServiceContract(DashboardIdentity dashboardIdentity, 180 HttpServletRequest request, boolean bOnlyCheckMandatory, String strAppCode); 181 }