|
|
@@ -149,6 +149,16 @@ class Member extends Component
|
|
|
public $already_existing = false;
|
|
|
public $tabOrder = ['dati', 'tesseramento', 'corsi', 'gruppi'];
|
|
|
|
|
|
+ public $presenceYears = [];
|
|
|
+ public $presenceTitle = [];
|
|
|
+ public $member_presences = [];
|
|
|
+
|
|
|
+ public $totals = 0;
|
|
|
+ public $presenze = 0;
|
|
|
+ public $assenze = 0;
|
|
|
+ public $annullate = 0;
|
|
|
+ public $recuperi = 0;
|
|
|
+
|
|
|
protected $rules = [
|
|
|
'first_name' => 'required',
|
|
|
'last_name' => 'required',
|
|
|
@@ -694,6 +704,7 @@ class Member extends Component
|
|
|
|
|
|
$this->loadMemberCards();
|
|
|
$this->loadMemberCourses();
|
|
|
+ $this->loadMemberPresences();
|
|
|
$this->loadMemberCategories();
|
|
|
$this->loadMemberCertificates();
|
|
|
|
|
|
@@ -739,6 +750,106 @@ class Member extends Component
|
|
|
// return view('livewire.member');
|
|
|
}
|
|
|
|
|
|
+ public function loadMemberPresences()
|
|
|
+ {
|
|
|
+
|
|
|
+ $this->member_presences = [];
|
|
|
+
|
|
|
+ // Carico tutti i calendar_id delle presenza
|
|
|
+ $presences = \App\Models\Presence::where('member_id', $this->dataId)->where('status', '<>', 99)->pluck('calendar_id')->toArray();
|
|
|
+ $presences_annullate = \App\Models\Presence::where('member_id', $this->dataId)->where('status', 99)->pluck('calendar_id')->toArray();
|
|
|
+
|
|
|
+ $course_ids = array();
|
|
|
+ // Tutti i calendari
|
|
|
+ $calendars = \App\Models\Calendar::whereNull('manual')->orderBy('from')->get();
|
|
|
+
|
|
|
+ $this->totals = 0;
|
|
|
+ $this->presenze = 0;
|
|
|
+ $this->assenze = 0;
|
|
|
+ $this->annullate = 0;
|
|
|
+ $this->recuperi = 0;
|
|
|
+
|
|
|
+ foreach($calendars as $calendar)
|
|
|
+ {
|
|
|
+ $days = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
|
|
|
+ $dow = date('w', strtotime($calendar->from));
|
|
|
+ $d = $days[$dow];
|
|
|
+
|
|
|
+ // Elenco corsi per tipologia in base al calendario
|
|
|
+ $courses = \App\Models\Course::where('name', $calendar->name)->where('date_from', '<=', $calendar->from)->where('date_to', '>=', $calendar->to)->pluck('id')->toArray();
|
|
|
+
|
|
|
+ // Elenco utenti iscritti al corso "padre"
|
|
|
+ if (\App\Models\MemberCourse::where('when', 'like', "%" . $d . "%")->whereIn('course_id', $courses)->where('member_id', $this->dataId)->first())
|
|
|
+ {
|
|
|
+ $status = '';
|
|
|
+ if (in_array($calendar->id, $presences))
|
|
|
+ {
|
|
|
+ $status = "<span style=\"color:green\">Prezenza ordinaria</span>";
|
|
|
+ $this->presenze += 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (in_array($calendar->id, $presences_annullate))
|
|
|
+ {
|
|
|
+ $status = "<span style=\"color:gray\">Annullata</span>";
|
|
|
+ $this->annullate += 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (date("Ymd") > date("Ymd", strtotime($calendar->from)))
|
|
|
+ {
|
|
|
+ $status = "<span style=\"color:red\">Assenza</span>";
|
|
|
+ $this->assenze += 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($calendar->status == 99)
|
|
|
+ {
|
|
|
+ $status = "<span style=\"color:gray\">Annullata</span>";
|
|
|
+ $this->annullate += 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->member_presences[] = array('calendar_id' => $calendar->id, 'from' => $calendar->from, 'to' => $calendar->to, 'status' => $status);//\App\Models\Presence::where('member_id', $this->dataId)->get();
|
|
|
+ }
|
|
|
+
|
|
|
+ //$courses = array(1);
|
|
|
+ foreach($courses as $c)
|
|
|
+ {
|
|
|
+ $course_ids[] = $c;
|
|
|
+ }
|
|
|
+
|
|
|
+ //$course_ids = array_push($course_ids, $courses);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // Manuali (recuperi)
|
|
|
+ $calendar_recuperi = \App\Models\Calendar::where('manual', 1)->pluck('id')->toArray();
|
|
|
+ $presences_recuperi = \App\Models\Presence::whereIn('calendar_id', $calendar_recuperi)->where('member_id', $this->dataId)->get();
|
|
|
+ foreach($presences_recuperi as $p)
|
|
|
+ {
|
|
|
+ $this->member_presences[] = array('calendar_id' => $p->calendar->id, 'from' => $p->calendar->from, 'to' => $p->calendar->to, 'status' => '<span style=\"color:violet\">Recupero</span>');//\App\Models\Presence::where('member_id', $this->dataId)->get();
|
|
|
+ $this->recuperi += 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $sortVariable='from';
|
|
|
+ usort(
|
|
|
+ $this->member_presences,
|
|
|
+ fn(array $a, array $b): int => $a[$sortVariable] <=> $b[$sortVariable]
|
|
|
+ );
|
|
|
+
|
|
|
+ //usort($this->member_presences, $this->cmp);
|
|
|
+ //usort($this->member_presences, function ($a, $b) { return $a['from'] > $b['from']; });
|
|
|
+
|
|
|
+ $this->presenceYears = \App\Models\Course::whereIn('id', $course_ids)->orderBy('year')->groupBy('year')->pluck('year')->toArray();
|
|
|
+ $this->presenceTitle = \App\Models\Course::whereIn('id', $course_ids)->orderBy('name')->groupBy('name')->pluck('name')->toArray();
|
|
|
+
|
|
|
+
|
|
|
+ // return view('livewire.member');
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
public function showDetailF($id)
|
|
|
{
|
|
|
if (!isset($_GET["from"]) && $this->from == '')
|