diff --git a/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java b/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java
index 3ef6b62..f4acc61 100644
--- a/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java
+++ b/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java
@@ -18,6 +18,9 @@
******************************************************************************/
package org.celstec.arlearn2.delegators;
+import org.celstec.arlearn2.beans.account.Account;
+import org.celstec.arlearn2.beans.run.Run;
+
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
@@ -37,7 +40,8 @@
public class MailDelegator extends GoogleDelegator {
private static final Logger logger = Logger.getLogger(ActionDelegator.class.getName());
- private static final long MILLIS_PER_DAY = 1 * 5 * 60 * 1000L; // 5 minutes
+ private static final long MINUTES = 1; // 1 minute
+ private static final long MILLIS_PER_DAY = 1 * MINUTES * 60 * 1000L;
public MailDelegator(String authtoken) {
super(authtoken);
@@ -121,12 +125,20 @@ public void sendReminders(org.celstec.arlearn2.beans.run.Message message, String
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
- String content = "You have missed a message from "+message.getSenderId()+" in the last week.";
- String message_missed = message.getBody();
+ AccountDelegator ad = new AccountDelegator(this);
+ RunDelegator rd = new RunDelegator(this);
+
+ Account account = ad.getContactDetails(message.getSenderProviderId() + ":" + message.getSenderId());
+ Run run = rd.getRun(message.getRunId());
+
+ String content = "You have missed a message in "+run.getTitle()+" in the last "+MINUTES+" minutes.";
+ String message_missed = ""+account.getName()+": "+message.getBody();
+ String button = "Catch up now!";
+ String email_header = "Message missed - DojoIBL";
+ String subject = "("+run.getTitle()+") Someone sent a message in DojoIBL";
String from = "titogelo@gmail.com";
- String fromName = "DojoIBL board";
-// String toMail = account.getEmail();
+ String fromName = account.getGivenName()+" (DojoIBL)";
String msgBody = "";
msgBody += "";
@@ -413,7 +425,7 @@ public void sendReminders(org.celstec.arlearn2.beans.run.Message message, String
msgBody += "
";
msgBody += "";
msgBody += "";
- msgBody += "Weekly digest - DojoIBL";
+ msgBody += email_header;
msgBody += " | ";
msgBody += "
";
msgBody += "";
@@ -439,7 +451,7 @@ public void sendReminders(org.celstec.arlearn2.beans.run.Message message, String
msgBody += "
";
msgBody += "";
msgBody += "";
- msgBody += "Catch up now!";
+ msgBody += button;
msgBody += " | ";
msgBody += "
";
msgBody += "";
@@ -454,7 +466,7 @@ public void sendReminders(org.celstec.arlearn2.beans.run.Message message, String
msgBody += "";
@@ -496,7 +508,7 @@ public void sendReminders(org.celstec.arlearn2.beans.run.Message message, String
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(from));
msg.addRecipient(Message.RecipientType.BCC, new InternetAddress(from));
- msg.setSubject("Someone sent a message in DojoIBL");
+ msg.setSubject(subject);
final MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(msgBody, "text/html");
diff --git a/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java b/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java
index 104965a..6581d5a 100644
--- a/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java
+++ b/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java
@@ -1,9 +1,13 @@
package org.celstec.arlearn2.delegators;
+import com.google.appengine.api.taskqueue.Queue;
+import com.google.appengine.api.taskqueue.QueueFactory;
+import com.google.appengine.api.taskqueue.TaskOptions;
import org.celstec.arlearn2.api.Service;
import org.celstec.arlearn2.beans.account.Account;
import org.celstec.arlearn2.beans.run.Message;
import org.celstec.arlearn2.beans.run.MessageList;
+import org.celstec.arlearn2.beans.run.Run;
import org.celstec.arlearn2.beans.run.RunAccess;
import org.celstec.arlearn2.jdo.manager.MessageManager;
import org.celstec.arlearn2.jdo.manager.ThreadManager;
@@ -13,7 +17,9 @@
public class MessageDelegator extends GoogleDelegator {
private static final Logger logger = Logger.getLogger(MessageDelegator.class.getName());
- private static final long MILLIS_PER_DAY = 1 * 5 * 60 * 1000L; // 1 minute
+ private static final long HOURS = 1; // hours
+ private static final long MINUTES = 60; // minutes
+ private static final long MILLIS_PER_DAY = HOURS * MINUTES * 60 * 1000L;
public MessageDelegator(Service service) {
super(service);
@@ -41,19 +47,14 @@ public Message createMessage(Message message) {
* last 1 minutes.
* */
-// Queue q = QueueFactory.getDefaultQueue();
+ Queue q = QueueFactory.getDefaultQueue();
//// Queue q = QueueFactory.getQueue(String.valueOf(message.getRunId()));
// q.purge();
//
//// q.deleteTask(String.valueOf(message.getRunId()));
-//
-//
-//
-// q.add(TaskOptions.Builder.withUrl("/setTimerEmailNotification").countdownMillis(MILLIS_PER_DAY)
-// .param("token", this.getAuthToken())
-// .param("name", String.valueOf(message.getRunId())));
RunAccessDelegator rad = new RunAccessDelegator(this);
+ RunDelegator rd = new RunDelegator(this);
NotificationDelegator nd = new NotificationDelegator(this);
MailDelegator md = new MailDelegator(this);
AccountDelegator ad = new AccountDelegator(this);
@@ -77,7 +78,27 @@ public Message createMessage(Message message) {
nd.broadcast(returnMessage, ra.getAccount());
}
- md.sendReminders(returnMessage, email_list);
+ Run run = rd.getRun(message.getRunId());
+
+
+ if(run.getAvoidNotification() == null){
+ run.setAvoidNotification(0l);
+ rd.updateRun(run, run.getRunId());
+ }
+
+ // 0l = false
+ // 1l = true
+
+ if (run.getAvoidNotification() != 1l){
+ md.sendReminders(returnMessage, email_list);
+
+ q.add(TaskOptions.Builder.withUrl("/setTimerEmailNotification").countdownMillis(MILLIS_PER_DAY)
+ .param("token", this.getAuthToken())
+ .param("name", String.valueOf(message.getRunId())));
+ run.setAvoidNotification(1l);
+ rd.updateRun(run, run.getRunId());
+ }
+
return returnMessage;
}
diff --git a/src/main/java/org/celstec/arlearn2/jdo/classes/RunJDO.java b/src/main/java/org/celstec/arlearn2/jdo/classes/RunJDO.java
index 85b7164..21efdfc 100644
--- a/src/main/java/org/celstec/arlearn2/jdo/classes/RunJDO.java
+++ b/src/main/java/org/celstec/arlearn2/jdo/classes/RunJDO.java
@@ -55,6 +55,9 @@ public class RunJDO extends RunClass{
@Persistent
private String code;
+ @Persistent
+ private Long avoidNotification;
+
public Long getRunId() {
return id.getId();
}
@@ -140,6 +143,11 @@ public void setCode(String code) {
this.code = code;
}
+ public Long getAvoidNotification() {
+ return avoidNotification;
+ }
-
+ public void setAvoidNotification(Long avoidNotification) {
+ this.avoidNotification = avoidNotification;
+ }
}
diff --git a/src/main/java/org/celstec/arlearn2/jdo/manager/RunManager.java b/src/main/java/org/celstec/arlearn2/jdo/manager/RunManager.java
index 75e8f58..e87febf 100644
--- a/src/main/java/org/celstec/arlearn2/jdo/manager/RunManager.java
+++ b/src/main/java/org/celstec/arlearn2/jdo/manager/RunManager.java
@@ -48,6 +48,10 @@ public static Long addRun(String title, String owner, Long gameId, Long runId, L
runJdo.setServerCreationTime(serverCreationTime);
runJdo.setLastModificationDate(serverCreationTime);
runJdo.setPayload(new Text(run.toString()));
+
+ runJdo.setCode(run.getCode());
+ runJdo.setAvoidNotification(run.getAvoidNotification());
+
if (run.getRunConfig() != null) {
runJdo.setTagId(run.getRunConfig().getNfcTag());
}
@@ -70,6 +74,8 @@ public static Long addRun(Run run) {
runJdo.setLastModificationDate(run.getServerCreationTime());
runJdo.setPayload(new Text(run.toString()));
runJdo.setCode(run.getCode());
+ runJdo.setAvoidNotification(run.getAvoidNotification());
+
if (run.getRunConfig() != null) {
runJdo.setTagId(run.getRunConfig().getNfcTag());
}
@@ -166,6 +172,10 @@ public static void updateRun(long runId, Run run) {
jdo.setServerCreationTime(run.getServerCreationTime());
jdo.setDeleted(false);
jdo.setCode(run.getCode());
+
+ jdo.setAvoidNotification(run.getAvoidNotification());
+
+
if (run.getRunConfig() != null) {
jdo.setTagId(run.getRunConfig().getNfcTag());
}
@@ -198,6 +208,7 @@ private static Run toBean(RunJDO jdo) {
run.setServerCreationTime(jdo.getServerCreationTime());
run.setLastModificationDate(jdo.getLastModificationDate());
run.setCode(jdo.getCode());
+ run.setAvoidNotification(jdo.getAvoidNotification());
return run;
}
diff --git a/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java b/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java
index edb46e3..2b9e0e6 100644
--- a/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java
+++ b/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java
@@ -18,18 +18,14 @@
******************************************************************************/
package org.celstec.arlearn2.tasks;
-import org.celstec.arlearn2.beans.account.Account;
-import org.celstec.arlearn2.beans.run.RunAccess;
-import org.celstec.arlearn2.delegators.*;
+import org.celstec.arlearn2.beans.run.Run;
+import org.celstec.arlearn2.delegators.RunDelegator;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -48,27 +44,35 @@ protected void doGet(HttpServletRequest request, HttpServletResponse resp) throw
token = request.getParameter("token");
runId = Long.parseLong(request.getParameter("name"));
- RunAccessDelegator rad = new RunAccessDelegator(token);
- AccountDelegator ad = new AccountDelegator(token);
- NotificationDelegator nd = new NotificationDelegator(token);
- MailDelegator md = new MailDelegator(token);
- for(RunAccess ra: rad.getRunAccess(runId).getRunAccess()) {
- Account account1 = ad.getContactDetails(ra.getAccount());
-
- DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
- Date date = new Date();
- System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
-
-// md.sendReminders("HOLA", ra.getAccount());
-
- // if(Math.abs(account1.getLastModificationDate() - date.getTime()) < MILLIS_PER_DAY){
- // System.out.print("["+account1.getEmail()+"] "+account1.getName()+" login less than 1 minutes ago");
- // }else{
- // System.out.print("["+account1.getEmail()+"] "+account1.getName()+" login more than 1 minutes ago");
- // }
- }
+ RunDelegator rd = new RunDelegator(token);
+
+ Run run = rd.getRun(runId);
+ run.setAvoidNotification(0l);
+ rd.updateRun(run, run.getRunId());
+
+
+// AccountDelegator ad = new AccountDelegator(token);
+// NotificationDelegator nd = new NotificationDelegator(token);
+// MailDelegator md = new MailDelegator(token);
+//
+// for(RunAccess ra: rad.getRunAccess(runId).getRunAccess()) {
+//
+// Account account1 = ad.getContactDetails(ra.getAccount());
+//
+// DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+// Date date = new Date();
+// System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
+//
+//// md.sendReminders("HOLA", ra.getAccount());
+//
+// // if(Math.abs(account1.getLastModificationDate() - date.getTime()) < MILLIS_PER_DAY){
+// // System.out.print("["+account1.getEmail()+"] "+account1.getName()+" login less than 1 minutes ago");
+// // }else{
+// // System.out.print("["+account1.getEmail()+"] "+account1.getName()+" login more than 1 minutes ago");
+// // }
+// }
} catch (Exception e) {
diff --git a/src/main/webapp/src/components/home/home.template.html b/src/main/webapp/src/components/home/home.template.html
index a3550f3..1719fe3 100644
--- a/src/main/webapp/src/components/home/home.template.html
+++ b/src/main/webapp/src/components/home/home.template.html
@@ -47,7 +47,7 @@
Clone
- Teacher view
+ Teacher view
|
diff --git a/src/main/webapp/src/components/run/run.service.js b/src/main/webapp/src/components/run/run.service.js
index 70e3727..c0b9bf2 100644
--- a/src/main/webapp/src/components/run/run.service.js
+++ b/src/main/webapp/src/components/run/run.service.js
@@ -96,6 +96,9 @@ angular.module('DojoIBL')
////////////////////////////////////////
if(runAsJson.runId)
dataCache.put(runAsJson.runId, runAsJson);
+
+ runAsJson.avoidNotification = 0;
+
return newrun.$save();
},
updateRun: function(runAsJson){