...
2c)
implement ‘Do something’ in myAction (see 2b)
Note that ‘day_of_month’ is part of the TimerJob model but it is not implemented in scheduler.getJobByTime
Adding it is straightforward:
1) in app > services > SchedulerService.scala add day_of_month (or day)
2) in app > services > mongoldb > MongoDBSchedulerService.scala
2a) update
def getJobByTime(minute: Integer, hour: Integer, day_of_week: Integer, day: Integer): List[TimerJob] ={
val jobs = Jobs.find(
$and(
// either day exists AND the value is 'day' OR day does not exist
$or($and("day" $exists true, MongoDBObject("day" -> 1)),
// either day_of_week exists AND the value is 'day' OR day_of_week does not exist
$or($and("day_of_week" $exists true, MongoDBObject("day_of_week" -> 1)), "day_of_week" $exists false),
// either hour exists AND the value is 'hour' OR hour does not exist
$or($and("hour" $exists true, MongoDBObject("hour" -> 7)), "hour" $exists false),
// either minute exists AND the value is 'minute' OR minute does not exist
$or($and("minute" $exists true, MongoDBObject("minute" -> 0)), "minute" $exists false)
)
)
2b) update def
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
def updateJobTime(name: String, minute: Option[Integer], hour: Option[Integer], day_of_week: Option[Integer], day: Option[Integer], freq: Option[String]) = |
...
{ if (minute == None){ |
...
Jobs.dao.update(MongoDBObject("name" -> name), $unset("minute")) |
...
} else { Jobs.dao.update(MongoDBObject("name" -> name), $set("minute" -> minute)) |
...
} if (hour == None){ Jobs.dao.update(MongoDBObject("name" -> name), $unset("hour")) |
...
} else { Jobs.dao.update(MongoDBObject("name" -> name), $set("hour" -> hour)) |
...
} if (day_of_week == None){ |
...
Jobs.dao.update(MongoDBObject("name" -> name), $unset("day_of_week")) |
...
} else { Jobs.dao.update(MongoDBObject("name" -> name), $set("day_of_week" -> day_of_week)) |
...
} if (day == None){ Jobs.dao.update(MongoDBObject("name" -> name), $unset("day")) |
...
} else { Jobs.dao.update(MongoDBObject("name" -> name), $set("day" -> day)) |
...
} Jobs.dao.update(MongoDBObject("name" -> name), $set("frequency" -> freq)) } |
}
2c) update
add extra parameter (None) to updateEmailJob in UpdateJobTime
Testing:
1)
app > util > Mail.scala
in
def sendEmail(subject: String, user: Option[User], recipient: User, body: Html) {
if (recipient.email.isDefined) {
Logger.debug("Subject:" + subject + ", From:" + emailAddress(user) + ", Recipient: " + emailAddress(Some(recipient)) + ", Body:")
//sendEmail(subject, emailAddress(user), emailAddress(Some(recipient))::Nil, body)
sendEmail(subject, emailAddress(user), List("ondrejce@illinois.edu"), body)
}
}
2) securesocial.conf
override in custom.conf
use smtp only from nasa network
smtp.host=smtp.ncsa.illinois.edu
smtp.from="ondrejce@illinois.edu"
...