@ -14,14 +14,15 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Transactional ;
import org.springframework.util.StringUtils ;
import org.springframework.web.bind.annotation.ExceptionHandler ;
import ru.ulstu.conference.service.ConferenceService ;
import ru.ulstu.configuration.ApplicationProperties ;
import ru.ulstu.core.error.EntityIdIsNullException ;
import ru.ulstu.core.jpa.OffsetablePageRequest ;
import ru.ulstu.core.model.BaseEntity ;
import ru.ulstu.core.model.UserActivity ;
import ru.ulstu.core.model.response.PageableItems ;
import ru.ulstu.core.model.response.Response ;
import ru.ulstu.ping.model.Ping ;
import ru.ulstu.ping.service.PingService ;
import ru.ulstu.user.error.UserActivationError ;
import ru.ulstu.user.error.UserBlockedException ;
import ru.ulstu.user.error.UserEmailExistsException ;
@ -54,6 +55,7 @@ import java.util.ArrayList;
import java.util.Collections ;
import java.util.Comparator ;
import java.util.Date ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
import java.util.Objects ;
@ -76,6 +78,7 @@ public class UserService implements UserDetailsService {
private final TimetableService timetableService ;
private final ConferenceService conferenceService ;
private final UserSessionService userSessionService ;
private final PingService pingService ;
public UserService ( UserRepository userRepository ,
PasswordEncoder passwordEncoder ,
@ -83,6 +86,7 @@ public class UserService implements UserDetailsService {
UserMapper userMapper ,
MailService mailService ,
ApplicationProperties applicationProperties ,
@Lazy PingService pingService ,
@Lazy ConferenceService conferenceRepository ,
@Lazy UserSessionService userSessionService ) throws ParseException {
this . userRepository = userRepository ;
@ -94,6 +98,7 @@ public class UserService implements UserDetailsService {
this . conferenceService = conferenceRepository ;
this . timetableService = new TimetableService ( ) ;
this . userSessionService = userSessionService ;
this . pingService = pingService ;
}
private User getUserByEmail ( String email ) {
@ -396,6 +401,31 @@ public class UserService implements UserDetailsService {
return ImmutableMap . of ( "users" , usersInfoNow , "error" , err ) ;
}
public Map < String , Integer > getActivitiesPings ( Integer userId ,
String activityName ) {
User user = null ;
if ( userId ! = null ) {
user = findById ( userId ) ;
}
Map < String , Integer > activitiesPings = new HashMap < > ( ) ;
for ( Ping ping : pingService . getPings ( activityName ) ) {
UserActivity activity = ping . getActivity ( ) ;
if ( user ! = null & & ! activity . getActivityUsers ( ) . contains ( user ) ) {
continue ;
}
if ( activitiesPings . containsKey ( activity . getTitle ( ) ) ) {
activitiesPings . put ( activity . getTitle ( ) , activitiesPings . get ( activity . getTitle ( ) ) + 1 ) ;
} else {
activitiesPings . put ( activity . getTitle ( ) , 1 ) ;
}
}
return activitiesPings ;
}
public void blockUser ( int userId ) {
User userToBlock = findById ( userId ) ;
userToBlock . setBlocker ( getCurrentUser ( ) ) ;