Skip to content

Commit

Permalink
Merge pull request #52 from wimdetr/Feature28
Browse files Browse the repository at this point in the history
waterschade
  • Loading branch information
wimdetr authored May 16, 2017
2 parents 94a0eac + 6a23206 commit d070099
Show file tree
Hide file tree
Showing 70 changed files with 1,601 additions and 309 deletions.
4 changes: 3 additions & 1 deletion nbproject/project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ javac.source=1.8
javac.target=1.8
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
${build.classes.dir}:\
${libs.junit_4.classpath}:\
${libs.hamcrest.classpath}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=
Expand Down
4 changes: 3 additions & 1 deletion src/META-INF/persistence.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
<class>domein.Admin</class>
<class>domein.Doelgroep</class>
<class>domein.Departement</class>
<class>domein.Email</class>
<class>domein.EmailJobCoach</class>
<class>domein.AdminMail</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/kairos?zeroDateTimeBehavior=convertToNull"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
Expand Down
109 changes: 109 additions & 0 deletions src/controllers/AdminMailLeftComponent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package controllers;

import domein.AdminMail;
import domein.repository.AdminRepository;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Calendar;
import javafx.beans.property.ObjectProperty;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;

/**
*
* @author wimde
*/
public class AdminMailLeftComponent extends VBox {

@FXML
private Label afzenderLabel;

@FXML
private Label datumLabel;

@FXML
private Label onderwerpLabel;

@FXML
private Label inhoudLabel;

@FXML
private HBox headerBox;

private AdminMail mail;

private ObjectProperty<Node> emailView;

private Schermbeheer beheer;

public AdminMailLeftComponent(AdminMail o, ObjectProperty<Node> emailView, Schermbeheer beheer) {
this.beheer = beheer;
this.emailView = emailView;
mail = o;
FXMLLoader loader = new FXMLLoader(getClass().getResource("/gui/AdminMailLeftComponent.fxml"));
loader.setRoot(this);
loader.setController(this);
try {
loader.load();
} catch (IOException ex) {
throw new RuntimeException(ex.getMessage());
}
fillData();
}

private void fillData() {
afzenderLabel.setText(mail.getAfzender().getVoornaam() + " " + mail.getAfzender().getNaam());
if (mail.getIsGelezen()) {
headerBox.getStyleClass().add("topBarRead");
} else {
headerBox.getStyleClass().add("topBarUnRead");

}
DateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY");
DateFormat hourFormat = new SimpleDateFormat("HH:mm");
Date verzendDate = mail.getVerzendDatum();
String dateString;

Date date = new Date();
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date);
cal2.setTime(verzendDate);
boolean sameDay = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR)
&& cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);
if (sameDay) {
dateString = hourFormat.format(verzendDate);
} else {
dateString = dateFormat.format(verzendDate);

}

datumLabel.setText(dateString);
onderwerpLabel.setText(mail.getOnderwerp());
inhoudLabel.setText(mail.getInhoud());
}

@FXML
void openMail(MouseEvent event) {
if (!mail.getIsGelezen()) {
headerBox.getStyleClass().remove("topBarUnRead");
headerBox.getStyleClass().add("topBarRead");
AdminRepository repo = beheer.getDc().getAdminRepo();
mail.setIsGelezen(true);
repo.modifyMail(mail);
}
emailView.set(new AdminMailRightComponent(beheer, this, mail));
}
}
73 changes: 73 additions & 0 deletions src/controllers/AdminMailRightComponent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package controllers;

import domein.AdminMail;
import domein.JobCoach;
import java.io.IOException;
import javafx.beans.property.ObjectProperty;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;

/**
*
* @author wimde
*/
public class AdminMailRightComponent extends VBox {

@FXML
private Label headerVeld;

@FXML
private Text inhoudVeld;

private AdminMail mail;

private AdminMailLeftComponent left;

private Schermbeheer beheer;

public AdminMailRightComponent(Schermbeheer beheer, AdminMailLeftComponent left, AdminMail o) {
this.beheer = beheer;
mail = o;
this.left = left;
FXMLLoader loader = new FXMLLoader(getClass().getResource("/gui/AdminMailRightComponent.fxml"));
loader.setRoot(this);
loader.setController(this);
try {
loader.load();
} catch (IOException ex) {
throw new RuntimeException(ex.getMessage());
}
fillData();
}

private void fillData() {
headerVeld.setText(mail.getAfzender().getVoornaam() + " " + mail.getAfzender().getNaam() + " - " + mail.getOnderwerp());
inhoudVeld.setText(mail.getInhoud());
}

@FXML
void doBeantwoord(ActionEvent event) {
beheer.plaatsPopUpScherm(new EmailVerzendenScherm(beheer,mail), "Mail Verzenden");
}

@FXML
void doVerwijder(ActionEvent event) {
VBox leftbox = (VBox) left.getParent(); //emailBox
leftbox.getChildren().remove(left);
this.getChildren().removeAll(this.getChildren());
beheer.getDc().getAdminRepo().deleteMail(mail);
beheer.getDc().getAdmin().getMails().remove(mail);
}
}
59 changes: 59 additions & 0 deletions src/controllers/AdminMailScherm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package controllers;

import domein.Admin;
import java.io.IOException;
import java.net.URL;
import java.util.Comparator;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;

/**
*
* @author wimde
*/
public class AdminMailScherm extends BorderPane implements Initializable{

@FXML
private VBox emailBox;

@FXML
private ScrollPane emailScrollPane;


private Schermbeheer beheer;

AdminMailScherm(Schermbeheer schermBeheer) {
beheer = schermBeheer;
FXMLLoader loader = new FXMLLoader(getClass().getResource("/gui/AdminMailScherm.fxml"));
loader.setRoot(this);
loader.setController(this);
try {
loader.load();
} catch (IOException ex) {
throw new RuntimeException(ex.getMessage());
}


}


@Override
public void initialize(URL location, ResourceBundle resources) {
Admin admin = beheer.getDc().getAdmin();
admin.getMails().stream().sorted(Comparator.reverseOrder()).forEach(o -> {
emailBox.getChildren().add(new AdminMailLeftComponent(o,this.centerProperty(),beheer));
});
}
}
101 changes: 101 additions & 0 deletions src/controllers/EmailVerzendenScherm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package controllers;

import domein.AdminMail;
import domein.Email;
import domein.JobCoach;
import domein.repository.EmailRepository;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Alert;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import util.MailVerzender;

/**
*
* @author wimde
*/
public class EmailVerzendenScherm extends BorderPane {

@FXML
private TextField onderwerpVeld;

@FXML
private Label errorLabel;

@FXML
private TextArea inhoudVeld;

@FXML
private CheckBox emailCheckBox;

private Schermbeheer beheer;

private List<JobCoach> ontvangers;

public EmailVerzendenScherm(Schermbeheer beheer, AdminMail mail) {
this(beheer, Arrays.asList(mail.getAfzender()));
onderwerpVeld.setText("Re:"+mail.getOnderwerp());
inhoudVeld.setText(mail.getInhoud());
}

public EmailVerzendenScherm(Schermbeheer beheer, List<JobCoach> coaches) {
this.beheer = beheer;
ontvangers = coaches;
FXMLLoader loader = new FXMLLoader(getClass().getResource("/gui/EmailVerzendenScherm.fxml"));
loader.setRoot(this);
loader.setController(this);
try {
loader.load();
} catch (IOException ex) {
throw new RuntimeException(ex.getMessage());
}
}

@FXML
void doCancel(ActionEvent event) {
beheer.sluitPopUpScherm();
}

@FXML
void doVerzend(ActionEvent event) {
String onderwerp = onderwerpVeld.getText();
String inhoud = inhoudVeld.getText();
EmailRepository repo = beheer.getDc().getEmailRepo();
Email e = new Email(beheer.getDc().getAdmin(), onderwerp, inhoud);

Task<Void> task = new Task<Void>() {
@Override
protected Void call() throws Exception {
repo.sendMail(e, ontvangers);
if (emailCheckBox.isSelected()) {
ontvangers.forEach(o -> MailVerzender.sendMail(o.getEmail(), onderwerp, inhoud));
}
return null;
}
};
Thread th = new Thread(task);
th.setDaemon(true);
th.start();
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Email(s) verzonden");
alert.setHeaderText("Email(s) verzonden");
alert.setContentText("De email(s) zijn succesvol verzonden!");
alert.showAndWait();
beheer.sluitPopUpScherm();
}

}
Loading

0 comments on commit d070099

Please sign in to comment.