belongsTo(Nation::class); } public function province() { return $this->belongsTo(Province::class); } public function city() { return $this->belongsTo(City::class); } public function birth_nation() { return $this->belongsTo(Nation::class); } public function birth_province() { return $this->belongsTo(Province::class); } public function birth_city() { return $this->belongsTo(City::class); } public function cards() { return $this->hasMany(MemberCard::class); } public function categories() { return $this->hasMany(MemberCategory::class); } public function certificates() { return $this->hasMany(MemberCertificate::class); } public function isActive() { // Se uno ha una tessera o meno compare nella lista degli utenti (attivo/disattivo), // per il certificato medico compare la data di scadenza sempre nella lista utenti. // Se uno invece ha eseguito i pagamenti, al posto del bottone abbiamo detto che mettiamo la scritta (iscritto (ha pagato), //in sospeso (stato legato alla validità o meno della tessera o del certificato medico, non iscritto (non ha pagato). Io questo ho capito. $hasCard = $this->isSubscribed()["status"]; $hasCertificate = $this->hasCertificate()["status"]; $ret = array('status' => 0, 'status_text' => 'Non iscritto', 'date' => ''); $records = \App\Models\Record::where('member_id', $this->id)->where('type', 'IN')->with('causal')->get(); foreach($records as $record) { if ($record->causal->user_status == 1) { if ($record->date < date('Y-m-d', strtotime('+1 year'))) $ret = array('status' => 2, 'status_text' => 'Iscritto', 'date' => $newDate = date('Y-m-d', strtotime($record->date. ' + 1 years'))); // if (!$hasCard || !$hasCertificate) if (!$hasCertificate) $ret = array('status' => 1,'status_text' => 'In sospeso', 'date' => $newDate = date('Y-m-d', strtotime($record->date. ' + 1 years'))); } } return $ret; } public function isSubscribed() { $ret = array('status' => false, 'date' => ''); $cards = \App\Models\MemberCard::where('member_id', $this->id)->with('card')->orderBy('expire_date')->get(); foreach($cards as $card) { if ($card->card->use_for_user_check) { $ret = array('status' => $card->expire_date > date("Y-m-d"), 'date' => $card->expire_date); } } return $ret; } public function hasCertificate() { $ret = array('status' => false, 'date' => ''); $certificates = \App\Models\MemberCertificate::where('member_id', $this->id)->orderBy('expire_date')->get(); foreach($certificates as $certificate) { $ret = array('status' => $certificate->expire_date > date("Y-m-d"), 'date' => $certificate->expire_date); } return $ret; } public function getMoney() { $ret = 0; // Soldi virtuali caricati $records = \App\Models\Record::where('member_id', $this->id)->where('type', 'IN')->with('causal')->get(); foreach($records as $record) { if ($record->causal->money == 1) { $ret += $record->amount; } } // Soldi virtuali spesi $records = \App\Models\Record::where('member_id', $this->id)->where('type', 'IN')->with('payment_method')->get(); foreach($records as $record) { if ($record->payment_method->money == 1) { $ret -= $record->amount; } } return $ret; } }