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;
}
}