Docs + email sending
This commit is contained in:
		
							
								
								
									
										97
									
								
								buisnesslogic/src/main/java/com/plannaplan/models/EmailAcceptedData.java
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										97
									
								
								buisnesslogic/src/main/java/com/plannaplan/models/EmailAcceptedData.java
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,97 @@ | ||||
| package com.plannaplan.models; | ||||
|  | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.plannaplan.entities.Groups; | ||||
|  | ||||
| /** | ||||
|  * Instance to keep data to send in mail about accepted courses results | ||||
|  */ | ||||
| public class EmailAcceptedData { | ||||
|     private List<Groups> accepted; | ||||
|     private List<Groups> removed; | ||||
|  | ||||
|     public EmailAcceptedData() { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * creates instance of class | ||||
|      *  | ||||
|      * @param accepted list of groups that user joined to | ||||
|      * @param removed  lsit of groups that user failed to join | ||||
|      */ | ||||
|     public EmailAcceptedData(List<Groups> accepted, List<Groups> removed) { | ||||
|         this.accepted = accepted; | ||||
|         this.removed = removed; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * get list of removed assignments | ||||
|      *  | ||||
|      * @return removed assingments | ||||
|      */ | ||||
|     public List<Groups> getRemoved() { | ||||
|         return removed; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * set list of removed assignments | ||||
|      *  | ||||
|      * @param removed list of removed assignments | ||||
|      */ | ||||
|     public void setRemoved(List<Groups> removed) { | ||||
|         this.removed = removed; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * get list of accepted assignments | ||||
|      *  | ||||
|      * @return accepted assingments | ||||
|      */ | ||||
|     public List<Groups> getAccepted() { | ||||
|         return accepted; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * set list of accepted assignments | ||||
|      *  | ||||
|      * @param removed list of accepted assignments | ||||
|      */ | ||||
|     public void setAccepted(List<Groups> accepted) { | ||||
|         this.accepted = accepted; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * it creates and return email message body | ||||
|      *  | ||||
|      * @return string with emiale massage | ||||
|      */ | ||||
|     public String getEmailMessage() { | ||||
|         String response = "Akceptacja Twoich przedmiotów właśnie dobiegła końca.\n\n"; | ||||
|         if (this.accepted != null && this.accepted.size() > 0) { | ||||
|             response += "Zatwierdzone grupy: \n"; | ||||
|             Iterator<Groups> iterator = accepted.iterator(); | ||||
|             while (iterator.hasNext()) { | ||||
|                 final Groups gorup = iterator.next(); | ||||
|                 final String courseName = gorup.getCourseId() != null ? gorup.getCourseId().getName() | ||||
|                         : "Nieznana grupa"; | ||||
|                 response += (" - " + courseName + " - " + gorup.getType() + "\n"); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|         if (this.removed != null && this.removed.size() > 0) { | ||||
|             response += "Usunięte grupy: \n"; | ||||
|             Iterator<Groups> iterator = removed.iterator(); | ||||
|             while (iterator.hasNext()) { | ||||
|                 final Groups gorup = iterator.next(); | ||||
|                 final String courseName = gorup.getCourseId() != null ? gorup.getCourseId().getName() | ||||
|                         : "Nieznana grupa"; | ||||
|                 response += (" - " + courseName + " - " + gorup.getType() + "\n"); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|         return response; | ||||
|     } | ||||
| } | ||||
| @@ -1,5 +1,6 @@ | ||||
| package com.plannaplan.services; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
|  | ||||
| @@ -7,6 +8,7 @@ import com.plannaplan.entities.Assignment; | ||||
| import com.plannaplan.entities.Commision; | ||||
| import com.plannaplan.entities.Groups; | ||||
| import com.plannaplan.entities.User; | ||||
| import com.plannaplan.models.EmailAcceptedData; | ||||
| import com.plannaplan.repositories.AssignmentRepository; | ||||
|  | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -28,6 +30,9 @@ public class AssignmentService { | ||||
|     @Autowired | ||||
|     private UserService userService; | ||||
|  | ||||
|     @Autowired | ||||
|     private EmailService emailService; | ||||
|  | ||||
|     public AssignmentService() { | ||||
|     } | ||||
|  | ||||
| @@ -65,11 +70,19 @@ public class AssignmentService { | ||||
|         return this.repo.findById(id); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * this method will activate accept algorythm for all students. Algorythm is | ||||
|      * takeing each student in order defined by ranking and accept for him groups | ||||
|      * that are joinable for him | ||||
|      */ | ||||
|     public void callAcceptAlgorythm() { | ||||
|         final List<User> students = this.userService.getStudentsSortedByRanking(); | ||||
|  | ||||
|         students.forEach(e -> { | ||||
|             final Optional<Commision> com = this.service.getNewestCommision(e); | ||||
|             final List<Groups> accepted = new ArrayList<>(); | ||||
|             final List<Groups> removed = new ArrayList<>(); | ||||
|  | ||||
|             if (com.isPresent()) { | ||||
|                 final List<Assignment> assignments = this.getCommisionAssignments(com.get()); | ||||
|                 assignments.forEach(a -> { | ||||
| @@ -77,9 +90,13 @@ public class AssignmentService { | ||||
|                     if (group.getCapacity() > group.getRegisteredStudents().size()) { | ||||
|                         e.claimGroup(group); | ||||
|                         this.userService.save(e); | ||||
|                         accepted.add(group); | ||||
|                     } else { | ||||
|                         removed.add(group); | ||||
|                     } | ||||
|                 }); | ||||
|             } | ||||
|             this.emailService.sendAcceptationResult(e, new EmailAcceptedData(accepted, removed)); | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,8 @@ | ||||
| package com.plannaplan.services; | ||||
|  | ||||
| import com.plannaplan.entities.User; | ||||
| import com.plannaplan.models.EmailAcceptedData; | ||||
|  | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.mail.SimpleMailMessage; | ||||
| @@ -35,4 +38,20 @@ public class EmailService { | ||||
|         mailMessage.setText(message); | ||||
|         emailSender.send(mailMessage); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * sends email with infromation about accepted groups | ||||
|      *  | ||||
|      * @param user user to send a mail | ||||
|      * @param data EmailAcceptedData instance containing informations about accepted | ||||
|      *             and removed groups | ||||
|      */ | ||||
|     public void sendAcceptationResult(User user, EmailAcceptedData data) { | ||||
|         SimpleMailMessage mailMessage = new SimpleMailMessage(); | ||||
|         mailMessage.setFrom(appEmail); | ||||
|         mailMessage.setTo(user.getEmail()); | ||||
|         mailMessage.setSubject("[PlanNaPlan] Akceptacja przedmiotów"); | ||||
|         mailMessage.setText(data.getEmailMessage()); | ||||
|         emailSender.send(mailMessage); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -85,6 +85,10 @@ public class AssignmentServiceTest { | ||||
|         System.out.println("-X_-x-x-x-_X-x-x-x-X_-x-x-x-"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * This test will also sand a mail to users as a side effect. U can check them | ||||
|      * in mailcater | ||||
|      */ | ||||
|     @Test | ||||
|     @DirtiesContext(methodMode = MethodMode.BEFORE_METHOD) | ||||
|     public void shouldNotAcceptForOnePerson() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user