Roundmail::checkReminder automailing system
This commit is contained in:
parent
6aad1a7ab2
commit
1f5e056b7f
18 changed files with 269 additions and 116 deletions
|
|
@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
|||
use App\Roundmail;
|
||||
use App\User;
|
||||
use App\Round;
|
||||
use App\Season;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Mail\RoundmailMailer;
|
||||
|
|
@ -30,7 +31,7 @@ class RoundmailController extends Controller
|
|||
$fields['topic'] = $mail_db->topic;
|
||||
|
||||
$sender = User::where('id','=',$mail_db->user_id)->first();
|
||||
$sender_name="(Gelöschter Anwender)";
|
||||
$sender_name="Automailer";
|
||||
if ($sender) { $sender_name=$sender->name; }
|
||||
$fields['sender'] = $sender_name;
|
||||
|
||||
|
|
@ -98,23 +99,30 @@ class RoundmailController extends Controller
|
|||
$missingTippMailList = implode(",",$missingTippMailList);
|
||||
$missingJokerMailList = implode(",",$missingJokerMailList);
|
||||
$adminMailList = implode(",",$adminMailList);
|
||||
|
||||
$tippSpielLink="http://hoschis-tippspiel.de/tipps#".Round::getFirstTippableRound()->id;
|
||||
$tippSpielLink = Round::getTippSpielLink();
|
||||
|
||||
$topic="";
|
||||
$mail_message="";
|
||||
$sender_name=Auth::user()->name;
|
||||
$sender_name="Automailer";
|
||||
$recipients="";
|
||||
$viewmode=false;
|
||||
if ($mail_id>-1) {
|
||||
$viewmode=true;
|
||||
|
||||
$mail = Roundmail::where('id','=',$mail_id)->first();
|
||||
|
||||
$send_date = $mail->send_date;
|
||||
$topic = $mail->topic;
|
||||
$mail_message = str_replace('<br/>','\n',$mail->message);
|
||||
|
||||
Log::info("Before:");
|
||||
Log::info($mail->message);
|
||||
//$mail_message = str_replace('<br/>','\n', $mail->message);
|
||||
$mail_message = $mail->message;
|
||||
Log::info("After:");
|
||||
Log::info($mail_message);
|
||||
$recipients = $mail->recipients;
|
||||
$sender = User::where('id','=',$mail->user_id)->first();
|
||||
$sender_name = $sender->name;
|
||||
if ($sender) {$sender_name = $sender->name;}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -147,13 +155,20 @@ class RoundmailController extends Controller
|
|||
}
|
||||
*/
|
||||
|
||||
|
||||
$r = new RoundmailMailer();
|
||||
$r->user_id = Auth::user()->id;
|
||||
$r->sender_email = Auth::user()->email;
|
||||
$r->sender_name = Auth::user()->name;
|
||||
$r->send_date = Carbon\Carbon::now();
|
||||
$r->recipients = request('recipients');
|
||||
|
||||
Log::info("Recipients:".$r->recipients);
|
||||
|
||||
$r->topic = request('topic');
|
||||
$r->mail_message = str_replace("\n","<br/>", request('message'));
|
||||
$r->mail_message = str_replace("\r","",str_replace("\n","<br/>", request('message')));
|
||||
Log::info("Recipients:");
|
||||
Log::info($r->recipients);
|
||||
\Mail::to(explode(",",$r->recipients))->send($r);
|
||||
|
||||
// Die hier ist nur für die DB
|
||||
$rm = new RoundMail();
|
||||
|
|
@ -164,7 +179,7 @@ class RoundmailController extends Controller
|
|||
$rm->message=$r->mail_message;
|
||||
$rm->save();
|
||||
|
||||
\Mail::to(explode(",",$r->recipients))->send($r);
|
||||
|
||||
|
||||
// TODO: refactor, loop is also used in index method.
|
||||
// COPY/PASTE, please refactor!
|
||||
|
|
@ -177,7 +192,7 @@ class RoundmailController extends Controller
|
|||
$fields['topic'] = $mail_db->topic;
|
||||
|
||||
$sender = User::where('id','=',$mail_db->user_id)->first();
|
||||
$sender_name="(Gelöschter Anwender)";
|
||||
$sender_name="Automailer";
|
||||
if ($sender) { $sender_name=$sender->name; }
|
||||
$fields['sender'] = $sender_name;
|
||||
|
||||
|
|
@ -186,11 +201,58 @@ class RoundmailController extends Controller
|
|||
$mails=array_reverse($mails);
|
||||
|
||||
return view('roundmails.index',compact('mails'));
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function checkReminder() {
|
||||
Log::info("RoundmailController::checkReminder was triggered");
|
||||
|
||||
$currentSeason = Season::getCurrent();
|
||||
$users = User::whereNull('deleted')->get();
|
||||
|
||||
Log::info("Usercount: ".sizeof($users));
|
||||
$emailsOfUsersWithIncompleteTipps=array();
|
||||
foreach($users as $user) {
|
||||
if (User::hasMissingTipp($user->id) || User::hasMissingJoker($user->id)) {
|
||||
if ($user->gets_reminders) {
|
||||
array_push($emailsOfUsersWithIncompleteTipps, $user->email);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$firstTippableRound = Round::getFirstTippableRound();
|
||||
if (!$firstTippableRound) {
|
||||
Log::info("RoundmailController::checkReminder: No tippable round detected, automailing aborted");
|
||||
return;
|
||||
}
|
||||
|
||||
$WARNING_HOURS_OFFSET=48;
|
||||
if (!$firstTippableRound->isInLockWarningTime($WARNING_HOURS_OFFSET)) {
|
||||
Log::info("RoundmailController->checkRemninder: skipping Reminder Mail because Lock is further away than ".$WARNING_HOURS_OFFSET." hours.");
|
||||
return;
|
||||
}
|
||||
|
||||
$roundLockTime = $firstTippableRound->getLockTime();
|
||||
|
||||
$r = new RoundmailMailer();
|
||||
$r->user_id = 0;
|
||||
$r->sender_email="info@hoschis-tippspiel.de";
|
||||
$r->sender_name="Hoschis Tippspiel";
|
||||
$r->send_date = Carbon\Carbon::now();
|
||||
$r->recipients = implode(",", $emailsOfUsersWithIncompleteTipps);
|
||||
$r->topic = "Fehlende Tipps/Joker";
|
||||
$r->mail_message = "Es fehlen noch Tipps/Joker für: " . $firstTippableRound->name . "<br/>Die Runde sperrt sich: " . $roundLockTime . "<br/><br/>Link zum Spiel: " . Round::getTippSpielLink();
|
||||
Log::info("Sending Reminder Mails");
|
||||
|
||||
\Mail::to($emailsOfUsersWithIncompleteTipps)->send($r);
|
||||
|
||||
// Die hier ist nur für die DB
|
||||
$rm = new RoundMail();
|
||||
$rm->send_date=$r->send_date;
|
||||
$rm->recipients=$r->recipients;
|
||||
$rm->user_id=$r->user_id;
|
||||
$rm->topic=$r->topic;
|
||||
$rm->message=$r->mail_message;
|
||||
$rm->save();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue