MOON
Server: Apache
System: Linux server10.mejorconweb.com 3.10.0-962.3.2.lve1.5.27.el7.x86_64 #1 SMP Sat Nov 30 02:18:52 EST 2019 x86_64
User: ser65kty (1085)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/ser65kty/cardedeu.serversmw.com/app/Models/User.php
<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;

use Laracasts\Flash\Flash;
use App\Models\Cita;
use App\Models\Entrevistador;
use Illuminate\Support\Str;
use App\Models\Curriculum;
use App\Models\Categoria;
use App\Models\Certificado;
use App\Models\Curso;
use Illuminate\Support\Facades\Auth;
use Mail;
use Carbon\Carbon;

class User extends Authenticatable
{
    /** @use HasFactory<\Database\Factories\UserFactory> */
    use HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'password',
        'type',
        'actiu',
        'cognom1',
        'cognom2',
        'conegut',
        'dniniepass',
        'datanaixement',
        'genere',
        'municipi',
        'codipostal',
        'telefon',
        'movil',
        'formacio',
        'discapacitat',
        'nameempresa',
        'carrec',
        'acceptapractiques',
        'tamany',
        'dniruta',
        'dardoruta',
        'vidalaboralruta',
        'curriculumruta',
        'curriculumruta2',
        'curriculumruta3',
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * Get the attributes that should be cast.
     *
     * @return array<string, string>
     */
    protected function casts(): array
    {
        return [
            'email_verified_at' => 'datetime',
            'password' => 'hashed',
        ];
    }

    public function citas(): HasMany
    {
        return $this->hasMany(Cita::class)->chaperone();
    }

    public function entrevistadors(): HasMany
    {
        return $this->hasMany(Entrevistador::class)->chaperone();
    }

    public function inscripcions(): HasMany
    {
        return $this->hasMany(Inscripcio::class)->chaperone();
    }

    public function inscripcionsborsas(): HasOne
    {
        return $this->hasOne(Inscripcionsborsa::class);
    }

    public function inscripcionstallers(): HasOne
    {
        return $this->hasOne(Inscripcionstaller::class);
    }

    public function ofertas(): HasMany
    {
        return $this->hasMany(Oferta::class)->chaperone();
    }

    public function curriculum(): HasOne
    {
        return $this->hasOne(Curriculum::class);
    }

    public function certificados(): HasMany
    {
        return $this->hasMany(Certificado::class)->chaperone();
    }

    public function sinformativas(): HasMany
    {
        return $this->hasMany(Sinformativa::class)->chaperone();
    }

    public function inscripcionscursos(): HasMany
    {
        return $this->hasMany(Inscripcionscurso::class)->chaperone();
    }

    public static function generatePassword()
    {
      // Generate random string and encrypt it. 
      return bcrypt(Str::password(35));
    }

    public function getselectcategorias($categoria,$user)
    {
        //dd($user);
        $existe = false;
        $listacategorias = unserialize($user->curriculum->categorias);
        if($listacategorias != false){
            foreach($listacategorias as $categoriaactual){
                $categoriaactualname = Categoria::find($categoriaactual)->name;
                if($categoriaactualname == $categoria->name){
                    $existe = true;
                }
            }
        }
        return $existe;
        
    }

    public function getcompetencies($user)
    {
        $usuario = User::find($user);
        if($usuario->curriculum->competencies != null){
            //dd($usuario->curriculum->competencies);
            $listacompetencies = unserialize($usuario->curriculum->competencies);
            //$listacompetencies = unserialize($listacompetencies);
                //dd($listacompetencies);
                if($listacompetencies != false){
                    foreach ($listacompetencies as $competencia) {
                        //dd($categoria);
                        $temporal = Competencia::find($competencia);
                        $competenciestitle[] = $temporal->title;
                        //dd($competenciestitle);
                    }
                }
                //dd($competenciestitle);
            return implode("<br>",$competenciestitle);
        }else{
            return null;
        }
    }

    public static function checkinscripciotaller($id)
    {
      $user = Auth::user();
      $inscripcionesdelusuarioeneltaller = Inscripcionstaller::where('user_id', $user->id)->where('curso_id', $id)->get();
      return $inscripcionesdelusuarioeneltaller;
    }

    public static function checkinscripciocurstallersolocurso($id)
    {
      $user = Auth::user();
      $inscripcionesdelusuarioeneltcurso = Inscripcionscurso::where('user_id', $user->id)->where('curso_id', $id)->first();
      return $inscripcionesdelusuarioeneltcurso;
    }

    public static function checkinscripciocursos($vullcursos)
    {
      //dd($vullcursos);
      $user = Auth::user();
      $inscripcionesdelusuarioenelcurso = Inscripcionscurso::where('user_id', $user->id)->whereIn('curso_id', $vullcursos)->first();
      //dd($inscripcionesdelusuarioenelcurso);
      return $inscripcionesdelusuarioenelcurso;
    }

    public static function checkinscripcioorientacio($user)
    {
      //$user = Auth::user();
      $inscripcionesdelusuarioenlaorientacion = Orientacion::where('user_id', $user->id)->get();
      return $inscripcionesdelusuarioenlaorientacion;
    }

    public static function quitarcursosyainscritos()
    {
      //dd($vullcursos);
      $user = Auth::user();
      /*$cursos = Curso::where('type', 'curs')->get();
      $cursosqueyatiene = Inscripcionscurso::where('user_id', $user->id)->get();
      //dd($cursosqueyatiene);
      foreach($cursosqueyatiene as $cursoquetieneactual){
        $cursos = $cursos->forget($cursoquetieneactual->curso_id);
      }*/


        $cursosall = Curso::where('type', 'curs')->get();
        $cursosqueyatiene = Inscripcionscurso::where('user_id', $user->id)->get();
        $existingIds = $cursosqueyatiene->pluck('curso_id')->toArray();
        /*$cursos = $cursosall->filter(function ($file) use ($existingIds) {
            return in_array($file->id, $existingIds);
        });*/
        $cursos = Curso::where('type', 'curs')->whereNotIn('id', $existingIds)->get();

      //dd($cursos);
      return $cursos;
    }

    public static function checksiyatienecita($id, $type, $cursoid = null)
    {
      //dd($type);
      $user = Auth::user();
      if ($type == 'borsa') {
        $yatienecita = Cita::where('user_id', $id)->where('type', 'borsa')->count();
        $yatienecita = $yatienecita > 0;
        //dd($yatienecita);
      }elseif($type == 'orientacio') {
        $yatienecita = Cita::where('user_id', $id)->where('type', 'orientacio')->count();
        $yatienecita = $yatienecita > 0;
        //dd($yatienecita);
      }else{
        $yatienecita = Cita::where('user_id', $id)->where('curso_id', 'cursoid')->count();
        $yatienecita = $yatienecita > 0;
      }
      //$inscripcionesdelusuarioenelcurso = Inscripcionscurso::where('user_id', $user->id)->whereIn('curso_id', $vullcursos)->first();
      //dd($inscripcionesdelusuarioenelcurso);
      return $yatienecita;
    }

    public static function checksitienesicurso($user, $cursoid)
    {
    $yatienecita = null;
    $curso = Curso::find($cursoid);
    //dd($curso);
    $sinformativas = Sinformativa::where('curso_id', $cursoid)->get();
    //dd($sinformativas);
    foreach ($sinformativas as $sinformativa) {
        $yatienecita = Sicita::where('user_id', $user->id)->where('sinformativa_id', $sinformativa->id)->count();
        $yatienecita = $yatienecita > 0;
    }
    
    //dd($yatienecita);
    return $yatienecita;
    }


    public static function sendInterescursEmail($user, $cursbucle)
    {
      $curso = Curso::find($cursbucle);

      Mail::send('emails.interescurs', ['user' => $user, 'curso' => $curso], function ($m) use ($user, $curso) {
        $m->to($user->email, $user->name)->subject("Sol·licitud d'inscripció al curs - Ajuntament de Cardedeu");
      });

      Mail::send('emails.avisoadmin-interescurs', ['user' => $user, 'curso' => $curso], function ($m) use ($user, $curso) {
            $m->to(config('constants.admin_mail'), 'La Mongia')->subject("Sol·licitud d'inscripció al curs - Ajuntament de Cardedeu");
          });
    }


    public static function checkplacessi($user, $cursoid)
    {

    $hihaplaceslliures = false;
    $sinformativa = Sinformativa::where('curso_id', $cursoid)->first();
    if($sinformativa){
        $placesocupades = Sicita::where('sinformativa_id', $sinformativa->id)->count();
        $hihaplaceslliures = $placesocupades < $sinformativa->places;
    }
        
    //dd($hihaplaceslliures);
    return $hihaplaceslliures;
    }

    public static function checkplacessiborsa($user, $sinformativa)
    {

    $placesocupades = Sicita::where('sinformativa_id', $sinformativa->id)->count();
    $hihaplaceslliures = $placesocupades < $sinformativa->places;
        
    //dd($hihaplaceslliures);
    return $hihaplaceslliures;
    }

    public static function checkdatesi($user, $cursoid)
    {

    $sinformativa = Sinformativa::where('curso_id', $cursoid)->first();
    $avui = Carbon::now();
    $datanopasada = $sinformativa->datetime > $avui;
    //dd($datanopasada);

    return $datanopasada;
    }


    public static function marcarcitasi($user, $cursoid)
    {
        $sinformativa = Sinformativa::where('curso_id', $cursoid)->first();
        $novasicita = new Sicita();
        $novasicita->user_id = $user->id;
        $novasicita->sinformativa_id = $sinformativa->id;
        $novasicita->save();
        //dd($novasicita);
    }

    public static function marcarcitasiborsa($user, $inscripcioborsa)
    {
        $sinformativas = Sinformativa::where('type', 'borsa')->where('siacabada', 0)->get();
        //dd($sinformativas);
        $sicitaguardada = false;
        foreach($sinformativas as $sinformativa) {
            if(($user->checkplacessiborsa($user, $sinformativa)) and ($sicitaguardada == false)){ //si hi ha places
                $novasiborsacita = new Sicita();
                $novasiborsacita->user_id = $user->id;
                $novasiborsacita->sinformativa_id = $sinformativa->id;
                $novasiborsacita->save();
                $sicitaguardada = true;
            }
        }
        if ($sicitaguardada == false) {
            Flash::error("No hi ha places a cap sessió informativa.");
            return redirect()->back();
        }else{
            $novasiborsacita->sendcitasimarcadaEmail($novasiborsacita);
        }
    }

    public static function sendsicitaEmail($user, $cursbucle)
    {
      $curso = Curso::find($cursbucle);
      $informativa = Sinformativa::where('curso_id', $cursbucle)->first();
      $fecha = $informativa->datetime;

      Mail::send('emails.citaalasicurs', ['user' => $user, 'curso' => $curso, 'fecha' => $fecha], function ($m) use ($user, $curso, $fecha) {
        $m->to($user->email, $user->name)->subject("Tens una cita a la sessió informativa - Ajuntament de Cardedeu");
      });

      Mail::send('emails.avisoadmin-citaalasicurs', ['user' => $user, 'curso' => $curso, 'fecha' => $fecha], function ($m) use ($user, $curso, $fecha) {
            $m->to(config('constants.admin_mail'), 'La Mongia')->subject("Hem rebut una cita a la sessió informativa - Ajuntament de Cardedeu");
          });
    }

    public static function sendentrevistacursEmail($user, $cursbucle)
    {
      $curso = Curso::find($cursbucle);
      Mail::send('emails.sendentrevistacurscita',  ['user' => $user, 'curso' => $curso], function ($m) use ($user, $curso) {
        $m->to($user->email, $user->name)->subject('Marcar entrevista - Ajuntament de Cardedeu');
      });

      /*Mail::send('emails.avisoadmin-sendentrevistacurscita', ['user' => $user, 'curso' => $curso], function ($m) use ($user, $curso) {
            $m->to(config('constants.admin_mail'), 'La Mongia')->subject("Marcar entrevista - Ajuntament de Cardedeu");
          });*/
    }

    public static function yatienecitaigual($user, $type, $curso_id)
    {
        $yatienecitaigual = Cita::where('user_id', $user->id)->where('type', $type)->where('curso_id', $curso_id)->count();
        //dd($yatienecitaigual > 0);
        return $yatienecitaigual > 0;
    }
}