source: src/main/java/mk/ukim/finki/wp/db/service/SupportTicketService.java

Last change on this file was 5ea00d7, checked in by Malek Alavi <malekalavi7@…>, 6 days ago

Initial project upload

  • Property mode set to 100644
File size: 2.8 KB
Line 
1package mk.ukim.finki.wp.db.service;
2
3import lombok.RequiredArgsConstructor;
4import mk.ukim.finki.wp.db.entity.SupportTicket;
5import mk.ukim.finki.wp.db.entity.user.Administrator;
6import mk.ukim.finki.wp.db.entity.user.User;
7import mk.ukim.finki.wp.db.entity.user.UserEntity;
8import mk.ukim.finki.wp.db.entity.user.enums.Role;
9import mk.ukim.finki.wp.db.repository.AdministratorRepository;
10import mk.ukim.finki.wp.db.repository.SupportTicketRepository;
11import mk.ukim.finki.wp.db.repository.UserEntityRepository;
12import mk.ukim.finki.wp.db.repository.UserRepository;
13import org.springframework.stereotype.Service;
14
15import java.time.LocalDateTime;
16import java.util.List;
17import java.util.Random;
18
19@Service
20@RequiredArgsConstructor
21public class SupportTicketService {
22
23 private final SupportTicketRepository supportTicketRepository;
24 private final UserRepository userRepository;
25 private final UserEntityRepository userEntityRepository;
26 private final AdministratorRepository administratorRepository;
27
28 public List<SupportTicket> findAll(String email) {
29 UserEntity userEntity = userEntityRepository.findByEmail(email).get();
30
31 if(userEntity.getRole() == Role.ADMIN) {
32 return findAllByAdmin(userEntity);
33 } else {
34 return findAllByUser(userEntity);
35 }
36 }
37
38 public List<SupportTicket> findAllByUser(UserEntity userEntity) {
39 User user = userRepository.findById(userEntity.getId()).get();
40 return supportTicketRepository.findAllByUser(user);
41 }
42
43 public List<SupportTicket> findAllByAdmin(UserEntity userEntity) {
44 Administrator admin = administratorRepository.findById(userEntity.getId()).get();
45 return supportTicketRepository.findAllByAdmin(admin);
46 }
47
48 public void addSupportTicket(String email, String subject, String description) {
49 UserEntity userEntity = userEntityRepository.findByEmail(email).get();
50 User user = userRepository.findById(userEntity.getId()).get();
51
52 List<Administrator> admins = administratorRepository.findAll();
53
54 Random random = new Random();
55 Administrator assignedAdmin = admins.get(random.nextInt(admins.size()));
56
57 SupportTicket supportTicket = new SupportTicket();
58 supportTicket.setUser(user);
59 supportTicket.setAdmin(assignedAdmin);
60 supportTicket.setSubject(subject);
61 supportTicket.setDescription(description);
62 supportTicket.setStatus("UNRESOLVED");
63 supportTicket.setCreatedAt(LocalDateTime.now());
64 supportTicketRepository.save(supportTicket);
65 }
66
67 public void resolveSupportTicket(Integer ticketId) {
68 SupportTicket supportTicket = supportTicketRepository.findById(ticketId).get();
69 supportTicket.setStatus("RESOLVED");
70 supportTicketRepository.save(supportTicket);
71 }
72}
Note: See TracBrowser for help on using the repository browser.