|
|
@@ -6,6 +6,8 @@ use Illuminate\Support\Facades\Redirect;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Artisan;
|
|
|
+use Illuminate\Support\Facades\Log;
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
|--------------------------------------------------------------------------
|
|
|
@@ -30,7 +32,7 @@ Route::get('/login', function () {
|
|
|
|
|
|
Route::post('/login', function () {
|
|
|
|
|
|
- if(\Auth::attempt(array('email' => $_POST["email"], 'password' => $_POST["password"])))
|
|
|
+ if(Auth::attempt(array('email' => $_POST["email"], 'password' => $_POST["password"])))
|
|
|
{
|
|
|
return Redirect::to('/dashboard');
|
|
|
}
|
|
|
@@ -255,22 +257,66 @@ Route::group(['middleware' => 'auth'],function(){
|
|
|
$allScadIds = [];
|
|
|
|
|
|
foreach ($scadenzaValues as $filterValue) {
|
|
|
- if ($filterValue == "1")
|
|
|
- $scadIds = \App\Models\MemberCertificate::where('expire_date', '<', date("Y-m-d"))->pluck('member_id')->toArray();
|
|
|
- else if ($filterValue == "2")
|
|
|
- $scadIds = \App\Models\MemberCertificate::where('expire_date', '>=', date("Y-m-d"))
|
|
|
- ->where('expire_date', '<=', date("Y-m-d", strtotime("+1 month")))
|
|
|
- ->pluck('member_id')->toArray();
|
|
|
- else if ($filterValue == "3")
|
|
|
+ if ($filterValue == "1") {
|
|
|
+ $memberLatestCerts = DB::table('member_certificates')
|
|
|
+ ->select('member_id', DB::raw('MAX(expire_date) as latest_expire_date'))
|
|
|
+ ->groupBy('member_id')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ $expiredMemberIds = [];
|
|
|
+ foreach ($memberLatestCerts as $cert) {
|
|
|
+ if (date('Y-m-d', strtotime($cert->latest_expire_date)) < date('Y-m-d')) {
|
|
|
+ $expiredMemberIds[] = $cert->member_id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $scadIds = $expiredMemberIds;
|
|
|
+
|
|
|
+ Log::info("Expired certificates filter - member count: " . count($scadIds));
|
|
|
+ Log::info("Expired certificates member IDs: " . implode(", ", $scadIds));
|
|
|
+ } else if ($filterValue == "2") {
|
|
|
+ $memberLatestCerts = DB::table('member_certificates')
|
|
|
+ ->select('member_id', DB::raw('MAX(expire_date) as latest_expire_date'))
|
|
|
+ ->groupBy('member_id')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ $expiringMemberIds = [];
|
|
|
+ foreach ($memberLatestCerts as $cert) {
|
|
|
+ $expireDate = date('Y-m-d', strtotime($cert->latest_expire_date));
|
|
|
+ $today = date('Y-m-d');
|
|
|
+ $oneMonthLater = date('Y-m-d', strtotime("+1 month"));
|
|
|
+
|
|
|
+ if ($expireDate >= $today && $expireDate <= $oneMonthLater) {
|
|
|
+ $expiringMemberIds[] = $cert->member_id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $scadIds = $expiringMemberIds;
|
|
|
+ } else if ($filterValue == "3") {
|
|
|
$scadIds = \App\Models\Member::whereNotIn('id', \App\Models\MemberCertificate::pluck('member_id'))->pluck('id')->toArray();
|
|
|
- else if ($filterValue == "4")
|
|
|
- $scadIds = \App\Models\MemberCertificate::where('expire_date', '>', date("Y-m-d", strtotime("+1 month")))->pluck('member_id')->toArray();
|
|
|
+ } else if ($filterValue == "4") {
|
|
|
+ $memberLatestCerts = DB::table('member_certificates')
|
|
|
+ ->select('member_id', DB::raw('MAX(expire_date) as latest_expire_date'))
|
|
|
+ ->groupBy('member_id')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ $validMemberIds = [];
|
|
|
+ foreach ($memberLatestCerts as $cert) {
|
|
|
+ $expireDate = date('Y-m-d', strtotime($cert->latest_expire_date));
|
|
|
+ $oneMonthLater = date('Y-m-d', strtotime("+1 month"));
|
|
|
+
|
|
|
+ if ($expireDate > $oneMonthLater) {
|
|
|
+ $validMemberIds[] = $cert->member_id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $scadIds = $validMemberIds;
|
|
|
+ }
|
|
|
|
|
|
$allScadIds = array_merge($allScadIds, $scadIds);
|
|
|
}
|
|
|
|
|
|
$allScadIds = array_unique($allScadIds);
|
|
|
|
|
|
+ Log::info("Total members after filterScadenza: " . count($allScadIds));
|
|
|
+
|
|
|
$x = $x->whereIn('id', $allScadIds);
|
|
|
}
|
|
|
if ($_GET["filterStatus"] != "null")
|
|
|
@@ -340,6 +386,18 @@ Route::group(['middleware' => 'auth'],function(){
|
|
|
else
|
|
|
$x = $x->get();
|
|
|
|
|
|
+ $latestCertificates = [];
|
|
|
+ foreach ($x as $member) {
|
|
|
+ $latestCert = \App\Models\MemberCertificate::where('member_id', $member->id)
|
|
|
+ ->orderBy('expire_date', 'desc')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ if ($latestCert) {
|
|
|
+ $latestCertificates[$member->id] = $latestCert->expire_date;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Log::info($latestCertificates);
|
|
|
+
|
|
|
foreach($x as $idx => $r)
|
|
|
{
|
|
|
|
|
|
@@ -360,7 +418,23 @@ Route::group(['middleware' => 'auth'],function(){
|
|
|
// $has_certificate = $r->hasCertificate();
|
|
|
$y = '';
|
|
|
|
|
|
- if ($r->certificate_date != '') {
|
|
|
+ if (isset($latestCertificates[$r->id])) {
|
|
|
+ Log::info("Using latest certificate for member " . $r->id);
|
|
|
+ $latest_date = $latestCertificates[$r->id];
|
|
|
+ $status = '';
|
|
|
+
|
|
|
+ if ($latest_date < date("Y-m-d")) {
|
|
|
+ $status = "0"; // Expired
|
|
|
+ } else if ($latest_date <= date("Y-m-d", strtotime("+1 month"))) {
|
|
|
+ $status = "1"; // Expiring soon
|
|
|
+ } else {
|
|
|
+ $status = "2"; // Valid
|
|
|
+ }
|
|
|
+
|
|
|
+ $y = $status . "|" . date("d/m/Y", strtotime($latest_date));
|
|
|
+ } else if ($r->certificate_date != '') {
|
|
|
+ Log::info("Member " . $r->id . " not found in latest certificates array");
|
|
|
+
|
|
|
$status = '';
|
|
|
|
|
|
if ($r->certificate_date < date("Y-m-d")) {
|
|
|
@@ -1296,34 +1370,64 @@ Route::group(['middleware' => 'auth'],function(){
|
|
|
|
|
|
foreach ($scadenzaValues as $filterValue) {
|
|
|
if ($filterValue == "1") {
|
|
|
- $scadIds = \App\Models\MemberCertificate::where('expire_date', '<', date("Y-m-d"))
|
|
|
- ->pluck('member_id')
|
|
|
- ->toArray();
|
|
|
- $allScadIds = array_merge($allScadIds, $scadIds);
|
|
|
- }
|
|
|
- else if ($filterValue == "2") {
|
|
|
- $scadIds = \App\Models\MemberCertificate::where('expire_date', '>=', date("Y-m-d"))
|
|
|
- ->where('expire_date', '<=', date("Y-m-d", strtotime("+1 month")))
|
|
|
- ->pluck('member_id')
|
|
|
- ->toArray();
|
|
|
- $allScadIds = array_merge($allScadIds, $scadIds);
|
|
|
- }
|
|
|
- else if ($filterValue == "3") {
|
|
|
+ $memberLatestCerts = DB::table('member_certificates')
|
|
|
+ ->select('member_id', DB::raw('MAX(expire_date) as latest_expire_date'))
|
|
|
+ ->groupBy('member_id')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ $expiredMemberIds = [];
|
|
|
+ foreach ($memberLatestCerts as $cert) {
|
|
|
+ if (date('Y-m-d', strtotime($cert->latest_expire_date)) < date('Y-m-d')) {
|
|
|
+ $expiredMemberIds[] = $cert->member_id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $allScadIds = array_merge($allScadIds, $expiredMemberIds);
|
|
|
+
|
|
|
+ Log::info("Course members - Expired certificates filter - member count: " . count($expiredMemberIds));
|
|
|
+ } else if ($filterValue == "2") {
|
|
|
+ $memberLatestCerts = DB::table('member_certificates')
|
|
|
+ ->select('member_id', DB::raw('MAX(expire_date) as latest_expire_date'))
|
|
|
+ ->groupBy('member_id')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ $expiringMemberIds = [];
|
|
|
+ foreach ($memberLatestCerts as $cert) {
|
|
|
+ $expireDate = date('Y-m-d', strtotime($cert->latest_expire_date));
|
|
|
+ $today = date('Y-m-d');
|
|
|
+ $oneMonthLater = date('Y-m-d', strtotime("+1 month"));
|
|
|
+
|
|
|
+ if ($expireDate >= $today && $expireDate <= $oneMonthLater) {
|
|
|
+ $expiringMemberIds[] = $cert->member_id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $allScadIds = array_merge($allScadIds, $expiringMemberIds);
|
|
|
+ } else if ($filterValue == "3") {
|
|
|
$scadIds = \App\Models\Member::whereNotIn('id', \App\Models\MemberCertificate::pluck('member_id'))
|
|
|
->pluck('id')
|
|
|
->toArray();
|
|
|
$allScadIds = array_merge($allScadIds, $scadIds);
|
|
|
- }
|
|
|
- else if ($filterValue == "4") {
|
|
|
- $scadIds = \App\Models\MemberCertificate::where('expire_date', '>', date("Y-m-d", strtotime("+1 month")))
|
|
|
- ->pluck('member_id')
|
|
|
- ->toArray();
|
|
|
- $allScadIds = array_merge($allScadIds, $scadIds);
|
|
|
+ } else if ($filterValue == "4") {
|
|
|
+ $memberLatestCerts = DB::table('member_certificates')
|
|
|
+ ->select('member_id', DB::raw('MAX(expire_date) as latest_expire_date'))
|
|
|
+ ->groupBy('member_id')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ $validMemberIds = [];
|
|
|
+ foreach ($memberLatestCerts as $cert) {
|
|
|
+ $expireDate = date('Y-m-d', strtotime($cert->latest_expire_date));
|
|
|
+ $oneMonthLater = date('Y-m-d', strtotime("+1 month"));
|
|
|
+
|
|
|
+ if ($expireDate > $oneMonthLater) {
|
|
|
+ $validMemberIds[] = $cert->member_id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $allScadIds = array_merge($allScadIds, $validMemberIds);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Remove duplicates
|
|
|
$allScadIds = array_unique($allScadIds);
|
|
|
+ Log::info("Course members - Total members after filterCertificateScadenza: " . count($allScadIds));
|
|
|
|
|
|
// Apply filter using the collected IDs
|
|
|
$datas = $datas->whereIn('member_id', $allScadIds);
|