|
@@ -149,6 +149,16 @@ class Member extends Component
|
|
|
public $already_existing = false;
|
|
public $already_existing = false;
|
|
|
public $tabOrder = ['dati', 'tesseramento', 'corsi', 'gruppi'];
|
|
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 = [
|
|
protected $rules = [
|
|
|
'first_name' => 'required',
|
|
'first_name' => 'required',
|
|
|
'last_name' => 'required',
|
|
'last_name' => 'required',
|
|
@@ -694,6 +704,7 @@ class Member extends Component
|
|
|
|
|
|
|
|
$this->loadMemberCards();
|
|
$this->loadMemberCards();
|
|
|
$this->loadMemberCourses();
|
|
$this->loadMemberCourses();
|
|
|
|
|
+ $this->loadMemberPresences();
|
|
|
$this->loadMemberCategories();
|
|
$this->loadMemberCategories();
|
|
|
$this->loadMemberCertificates();
|
|
$this->loadMemberCertificates();
|
|
|
|
|
|
|
@@ -739,6 +750,106 @@ class Member extends Component
|
|
|
// return view('livewire.member');
|
|
// 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)
|
|
public function showDetailF($id)
|
|
|
{
|
|
{
|
|
|
if (!isset($_GET["from"]) && $this->from == '')
|
|
if (!isset($_GET["from"]) && $this->from == '')
|
|
@@ -1633,6 +1744,8 @@ class Member extends Component
|
|
|
$this->course_months[] = array("m" => $z->m, "status" => $z->status);
|
|
$this->course_months[] = array("m" => $z->m, "status" => $z->status);
|
|
|
}
|
|
}
|
|
|
$this->courseDataId = $memberCourse->id;
|
|
$this->courseDataId = $memberCourse->id;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
$this->updateCourse = true;
|
|
$this->updateCourse = true;
|
|
|
$this->addCourse = false;
|
|
$this->addCourse = false;
|
|
|
$this->emit('setEditCorso', true);
|
|
$this->emit('setEditCorso', true);
|
|
@@ -1662,6 +1775,100 @@ class Member extends Component
|
|
|
'months' => json_encode($this->course_months),
|
|
'months' => json_encode($this->course_months),
|
|
|
'when' => json_encode($this->course_when)
|
|
'when' => json_encode($this->course_when)
|
|
|
]);
|
|
]);
|
|
|
|
|
+
|
|
|
|
|
+ $course_name = '';
|
|
|
|
|
+ // Se il corso ha associato una categoria iscrivo anche al gruppo
|
|
|
|
|
+ $c = \App\Models\Course::findOrFail($this->course_course_id);
|
|
|
|
|
+ if ($c) {
|
|
|
|
|
+ if ($c->category_id > 0) {
|
|
|
|
|
+ \App\Models\MemberCategory::create([
|
|
|
|
|
+ 'member_id' => $this->dataId,
|
|
|
|
|
+ 'category_id' => $c->category_id,
|
|
|
|
|
+ 'date' => \Carbon\Carbon::now()
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+ $course_name = $c->name;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $days = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
|
|
|
|
|
+
|
|
|
|
|
+ //foreach($this->course_months as $m)
|
|
|
|
|
+ //{
|
|
|
|
|
+
|
|
|
|
|
+ $from = date("Y-m-d", strtotime($c->date_from));
|
|
|
|
|
+ $to = date("Y-m-d", strtotime($c->date_to));
|
|
|
|
|
+
|
|
|
|
|
+ $endDate = strtotime($to);
|
|
|
|
|
+
|
|
|
|
|
+ foreach($this->course_when as $d)
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ foreach($d["day"] as $dd)
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ $day = '';
|
|
|
|
|
+ switch ($dd) {
|
|
|
|
|
+ case 'lun':
|
|
|
|
|
+ $day = $days[0];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'mar':
|
|
|
|
|
+ $day = $days[1];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'mer':
|
|
|
|
|
+ $day = $days[2];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'gio':
|
|
|
|
|
+ $day = $days[3];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'ven':
|
|
|
|
|
+ $day = $days[4];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'sab':
|
|
|
|
|
+ $day = $days[5];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'dom':
|
|
|
|
|
+ $day = $days[6];
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ $day = '';
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($day != '')
|
|
|
|
|
+ {
|
|
|
|
|
+ for($i = strtotime($day, strtotime($from)); $i <= $endDate; $i = strtotime('+1 week', $i))
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ // Controllo che non esiste un corso così
|
|
|
|
|
+ $exist = \App\Models\Calendar::where('from', date('Y-m-d ' . $d["from"] . ":00", $i))->where('to', date('Y-m-d ' . $d["to"] . ":00", $i))->where('name', $course_name)->first();
|
|
|
|
|
+
|
|
|
|
|
+ if (!$exist && !in_array(date('Y-m-d', $i), $this->festivita))
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ // Creo il calendario del corso
|
|
|
|
|
+ $calendar = new \App\Models\Calendar();
|
|
|
|
|
+ $calendar->course_id = $this->course_course_id;
|
|
|
|
|
+ $calendar->court_id = null;
|
|
|
|
|
+ $calendar->name = $course_name;
|
|
|
|
|
+ $calendar->course_type_id = null;
|
|
|
|
|
+ $calendar->course_duration_id = null;
|
|
|
|
|
+ $calendar->course_frequency_id = null;
|
|
|
|
|
+ $calendar->course_level_id = null;
|
|
|
|
|
+ $calendar->instructor_id = null;
|
|
|
|
|
+ $calendar->from = date('Y-m-d ' . $d["from"] . ":00", $i);
|
|
|
|
|
+ $calendar->to = date('Y-m-d ' . $d["to"] . ":00", $i);
|
|
|
|
|
+ $calendar->note = '';
|
|
|
|
|
+ $calendar->status = 0;
|
|
|
|
|
+ $calendar->save();
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
session()->flash('success', 'Corso aggiornato');
|
|
session()->flash('success', 'Corso aggiornato');
|
|
|
$this->resetCourseFields();
|
|
$this->resetCourseFields();
|
|
|
$this->updateCourse = false;
|
|
$this->updateCourse = false;
|