1 package fr.paris.lutece.plugins.extend.modules.rating.service.validator;
2
3 import javax.inject.Inject;
4 import javax.inject.Named;
5 import javax.servlet.http.HttpServletRequest;
6
7 import org.apache.commons.lang3.StringUtils;
8
9 import fr.paris.lutece.plugins.extend.modules.rating.business.config.RatingExtenderConfig;
10 import fr.paris.lutece.plugins.extend.modules.rating.service.extender.RatingResourceExtender;
11 import fr.paris.lutece.plugins.extend.modules.rating.util.constants.RatingConstants;
12 import fr.paris.lutece.plugins.extend.modules.rating.util.constants.RatingUtils.RatingType;
13 import fr.paris.lutece.plugins.extend.service.extender.config.IResourceExtenderConfigService;
14 import fr.paris.lutece.portal.service.security.LuteceUser;
15 import fr.paris.lutece.portal.service.util.AppLogService;
16 import fr.paris.lutece.portal.service.util.AppPathService;
17 import fr.paris.lutece.portal.service.util.AppPropertiesService;
18
19 public class RatingValidationService implements IRatingValidationService {
20
21 private static final String PROPERTIES_ERROR_URL="rating.errorUrl";
22 @Inject
23 @Named( RatingConstants.BEAN_CONFIG_SERVICE )
24 private IResourceExtenderConfigService _configService;
25
26
27
28
29 @Override
30 public String validateRating(HttpServletRequest request, LuteceUser user, String strIdResource,
31 String strResourceTypeKey, float fRatingValue) {
32
33
34 RatingExtenderConfig config = _configService.find( RatingResourceExtender.RESOURCE_EXTENDER,
35 strIdResource, strResourceTypeKey );
36 if( config.getRatingType().equals( RatingType.SIMPLE_RATING_TYPE.getType( ) ))
37 {
38 if (fRatingValue != 1 )
39 {
40
41 AppLogService.error("The value {} for type SIMPLE_RATING_TYPE of evaluation is not valid", fRatingValue, new RuntimeException(" SIMPLE_RATING_TYPE Exception "));
42 return getErrorUrl( request );
43 }
44
45 }else if( config.getRatingType( ).equals( RatingType.STAR_RATING_TYPE.getType( )))
46 {
47 if (fRatingValue <= 0 || fRatingValue > 4 || fRatingValue % 0.5 != 0 )
48 {
49 AppLogService.error("The value {} for type STAR_RATING_TYPE of evaluation is not valid", fRatingValue, new RuntimeException(" STAR_RATING_TYPE Exception "));
50 return getErrorUrl( request );
51 }
52
53 }else if( config.getRatingType( ).equals(RatingType.THUMB_RATING_TYPE.getType( )))
54 {
55 if (fRatingValue != 1 && fRatingValue != -1)
56 {
57 AppLogService.error("The value {} for type THUMB_RATING_TYPE of evaluation is not valid", fRatingValue, new RuntimeException(" THUMB_RATING_TYPE Exception "));
58
59 return getErrorUrl( request );
60 }
61 }
62
63 return null;
64 }
65
66 private String getErrorUrl( HttpServletRequest request ) {
67
68 String strDefaultErrorUrl = AppPathService.getBaseUrl( request ) + AppPropertiesService.getProperty( PROPERTIES_ERROR_URL );
69 if ( StringUtils.isEmpty( strDefaultErrorUrl ) )
70 {
71
72 strDefaultErrorUrl = "/";
73 }
74
75 return strDefaultErrorUrl;
76 }
77
78 }