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 += ""; msgBody += ""; @@ -439,7 +451,7 @@ public void sendReminders(org.celstec.arlearn2.beans.run.Message message, String msgBody += ""; msgBody += ""; msgBody += ""; msgBody += ""; msgBody += ""; @@ -454,7 +466,7 @@ public void sendReminders(org.celstec.arlearn2.beans.run.Message message, String msgBody += "
"; msgBody += "
"; - msgBody += "Weekly digest - DojoIBL"; + msgBody += email_header; msgBody += "
"; - msgBody += "Catch up now!"; + msgBody += button; msgBody += "
"; msgBody += ""; - msgBody += ""; + msgBody += ""; msgBody += ""; msgBody += "
http://dojo-ibl.appspot.com/main.html#/home by the Open Universiteithttp://dojo-ibl.appspot.com - Welten Institute
"; 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){