Final Roundmail system, show users with missing tips/jokers in playerlist as well.

This commit is contained in:
Torsten 2017-08-24 11:47:16 +02:00
parent 6d7ee1a47c
commit 70e28110cb
19 changed files with 3700 additions and 66 deletions

View file

@ -0,0 +1,231 @@
<?php
namespace App\Http\Controllers;
use App\Roundmail;
use App\User;
use Illuminate\Http\Request;
use App\Mail\RoundmailMailer;
use Auth;
use DB;
use Log;
use Carbon;
class RoundmailController extends Controller
{
public function index()
{
if (Auth::guest()) { return redirect("/"); }
if (!Auth::user()->admin) { return redirect("/"); }
$mails_db = Roundmail::all();
$mails=array();
foreach($mails_db as $mail_db) {
$fields=array();
$fields['id'] = $mail_db->id;
$fields['send_date'] = $mail_db->send_date;
$fields['topic'] = $mail_db->topic;
$sender = User::where('id','=',$mail_db->user_id)->first();
$sender_name="(Gelöschter Anwender)";
if ($sender) { $sender_name=$sender->name; }
$fields['sender'] = $sender_name;
array_push($mails,$fields);
}
$mails=array_reverse($mails);
return view('roundmails.index',compact('mails'));
}
public function show($mail_id) {
if (Auth::guest()) { return redirect("/"); }
if (!Auth::user()->admin) { return redirect("/"); }
$user_id=Auth::user()->id;
$users = DB::table('users')->where('deleted',null)->orderBy('lastname')->get();
$active_users=array();
$activeMailList=array();
$inactive_users=array();
$inactiveMailList=array();
$missingTippMailList=array();
$missingJokerMailList=array();
$adminMailList=array();
$topic="";
//TODO: umrüsten für Anzeige von Bestandsmails
$send_date = date("d.m.Y h:i:s", time());
Log::info("Users to check for missing tipps:" . sizeof($users));
foreach($users as $user) {
if (User::is_season_paid($user->id)) {
array_push($active_users,$user);
array_push($activeMailList,$user->email);
} else {
array_push($inactive_users, $user);
array_push($inactiveMailList,$user->email);
}
//Log::info("user-id=".$user->id.", ".$user->name);
//Log::info("Tipp: ".User::hasMissingTipp($user->id));
if (User::hasMissingTipp($user->id)) {
array_push($missingTippMailList,$user->email);
}
if (User::hasMissingJoker($user->id) ) {
array_push($missingJokerMailList,$user->email);
}
if ($user->admin==true) {
array_push($adminMailList,$user->email);
}
}
Log::info("Size of missingMailist=".sizeof($missingTippMailList));
$activeMailList = implode(",",$activeMailList);
$inactiveMailList = implode(",",$inactiveMailList);
$missingTippMailList = implode(",",$missingTippMailList);
$missingJokerMailList = implode(",",$missingJokerMailList);
$adminMailList = implode(",",$adminMailList);
$topic="";
$mail_message="";
$sender_name=Auth::user()->name;
$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);
$recipients = $mail->recipients;
$sender = User::where('id','=',$mail->user_id)->first();
$sender_name = $sender->name;
}
return view('roundmails.show',compact('mail_id','activeMailList','inactiveMailList','missingTippMailList','missingJokerMailList','adminMailList','send_date','user_id','topic', 'mail_message', 'recipients', 'sender_name','viewmode'));
}
public function send() {
if (Auth::guest()) { return redirect("/"); }
if (!Auth::user()->admin) { return redirect("/"); }
// Validate form
$this->validate(request(), [
'user_id' => 'required',
'send_date' => 'required',
'topic' => 'required',
'message' => 'required',
'recipients'=> 'required'
]);
Log::info("Preparing to send from user_id ".request('user_id'));
/*
foreach($users as $user) {
Log::info("Sending RoundmailMailer to: ".$user->name);
\Mail::to($user)->send(new RoundmailMailer);
}
*/
$u = new User(['email'=>'magus@zauberturm.de','name'=>'Torsten der Schneider']);
$r = new RoundmailMailer();
$r->user_id = Auth::user()->id;
$r->send_date = Carbon\Carbon::now();
$r->recipients = request('recipients');
$r->topic = request('topic');
$r->mail_message = str_replace("\n","<br/>", request('message'));
// 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();
\Mail::to(explode(",",$r->recipients))->send($r);
// COPY/PAST, please replace !
$user_id=Auth::user()->id;
$users = DB::table('users')->where('deleted',null)->orderBy('lastname')->get();
$active_users=array();
$activeMailList=array();
$inactive_users=array();
$inactiveMailList=array();
$users_with_missing_tips=array(); // $users_with_missing_tips (or jokers)
$missingMailList=array();
$adminMailList=array();
$topic="";
//TODO: umrüsten für Anzeige von Bestandsmails
$maildate = date("d.m.Y h:i:s", time());
foreach($users as $user) {
if (User::is_season_paid($user->id)) {
array_push($active_users,$user);
array_push($activeMailList,$user->email);
} else {
array_push($inactive_users, $user);
array_push($inactiveMailList,$user->email);
}
if (User::hasMissingJoker($user->id) || User::hasMissingTipp($user->id)) {
array_push($users_with_missing_tips,$user);
array_push($missingMailList,$user->email);
}
if ($user->admin) {
array_push($adminMailList,$user->email);
}
}
$activeMailList = implode(",",$activeMailList);
$inactiveMailList = implode(",",$inactiveMailList);
$missingMailList = implode(",",$missingMailList);
$adminMailList = implode(",",$adminMailList);
$round_id=-1;
return view('roundmails.show',compact('round_id','activeMailList','inactiveMailList','missingMailList','adminMailList','maildate','user_id','topic'));
}
}

View file

@ -7,6 +7,7 @@ use App\Season;
use App\Round;
use App\Game;
use App\User;
use App\Tipp;
use DB;
use Auth;
use Log;
@ -104,6 +105,8 @@ class RoundsController extends Controller
]);
// Sign them in
Tipp::createAllTips();
// Redirect to the home page
return redirect('/rounds');
}

View file

@ -16,6 +16,8 @@ use DB;
class TippsController extends Controller
{
//Duplicate from Tipps model
//TODO: Refactor usage to use only the Tipps version
public static function createTipps($user_id) {
$activeSeason = Season::getCurrent();
@ -45,6 +47,8 @@ class TippsController extends Controller
}
}
//Duplicate from Tipps model
//TODO: Refactor usage to use only the Tipps version
public static function createAllTips(){
$users = DB::table('users')->where('deleted',null)->get();
foreach($users as $user) {

View file

@ -10,7 +10,7 @@ use App\Round;
use App\Game;
use App\Tipp;
use App\Quota;
use App\Mail\Roundmail;
use App\Mail\RoundmailMailer;
use DB;
use Auth;
@ -24,6 +24,9 @@ class UsersController extends Controller
$roundname="";
$report="";
$result=User::hasMissingJoker(1);
Log::info("!!! =>".$result);
if (!$result) { Log::info("Joker is missing");}
$currentSeason=Season::getCurrent();
$display_rounds=array();
@ -51,19 +54,42 @@ class UsersController extends Controller
if (Auth::guest()) { return redirect("/"); }
if (!Auth::user()->admin) { return redirect("/"); }
$currentSeason=Season::getCurrent();
$active_user_count = sizeof( DB::table('payments')->where('season_id',$currentSeason->id)->whereNotNull('paid_date')->get() );
$total_user_count = sizeof( DB::table('payments')->where('season_id',$currentSeason->id)->get() );
$users = DB::table('users')->where('deleted',null)->orderBy('lastname')->get();
foreach($users as $user) {
Log::info($user->id);
foreach($users as $key => $user) {
// Log::info($users[0]->id);
// Log::info($key);
// Log::info($user->id);
//
// Log::info("------------------------------");
if (User::hasMissingTipp($user->id)) {
$users[$key]->missingTippText="Tipps fehlen";
$users[$key]->tippStyling="red";
} else {
$users[$key]->missingTippText="Runde getippt";
$users[$key]->tippStyling="green";
}
if (User::hasMissingJoker($user->id)) {
$users[$key]->missingJokerText="Joker fehlt";
$users[$key]->jokerStyling="red";
} else {
$users[$key]->missingJokerText="Joker gesetzt";
$users[$key]->jokerStyling="green";
}
}
return view('users.index', compact('users','active_user_count'));
return view('users.index', compact('users','active_user_count','total_user_count'));
}
/*
public function showUsers() {
@ -124,6 +150,8 @@ class UsersController extends Controller
Payment::set_payment_date(request('id'), $season_id, request('paid'));
Tipp::createAllTips();
return redirect('/users');
}
@ -406,12 +434,12 @@ class UsersController extends Controller
public function mailtest() {
// Works:
// $user = User::where('id','=',1)->first();
// \Mail::to($user)->send(new Roundmail);
// \Mail::to($user)->send(new RoundmailMailer);
$users = User::whereIn('id',array(1,2,7,57))->get();
$users = User::whereIn('id',array(1))->get();
foreach($users as $user) {
Log::info("Sending Roundmail to: ".$user->name);
\Mail::to($user)->send(new Roundmail);
Log::info("Sending RoundmailMailer to: ".$user->name);
\Mail::to($user)->send(new RoundmailMailer);
}
}