| Server IP : / Your IP : 10.244.4.16 [ Web Server : nginx/1.25.3 System : Linux escuela-portal-app-54f56585bc-kst6g 5.15.0-1084-azure #93-Ubuntu SMP Sat Mar 15 14:12:29 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.13 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/app/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Page extends Model
{
use HasFactory;
protected $fillable = [
'id','name', 'slug', 'is_menu', 'order', 'data->title', 'data->text'
];
public function banners(){
return $this->hasMany(Banner::class, 'page_id')->orderBy('order');
}
public function video(){
return $this->belongsTo(Video::class, 'id', 'page_id');
}
public function sections(){
return $this->hasMany(PageSection::class, 'page_id')->select('id', 'section_id','page_id', 'data->title AS data->title', 'data->text AS data->text', 'data->image AS data->image', 'data->file AS data->file')->orderBy('order');
}
public function getFullData(){
return [
'id' => $this->id,
'name' => $this->name,
'url' => $this->slug,
'sections' => collect($this->sections)->map(function ($item) {
return $item->getFullInfo();
})->all(),
];
}
public function removeSections(array $new_sections)
{
$pre_sections = $this->sections()->pluck('id');
PageSection::whereIn('id', $pre_sections->diff(collect($new_sections)->pluck('id'))->values())->delete();
}
public function updateFullData ($request){
$this->update(['name' => $request->name]);
$this->save();
//Eliminar secciones
$this->removeSections($request->sections);
//Actualiza secciones
foreach ($request->sections as $value) {
$value['page_id'] = $this->id;
$value['order'] = 1;
if(!empty($value['id'])){
$section = PageSection::find($value['id']);
$section->update([
'section_id' => $value['section_id'],
'data->text' => $value['data->text'] ?? '',
'data->title' => $value['data->title'] ?? '',
]);
}else{
$section = PageSection::create($value);
}
$section->saveFile((isset($value['imagen']) && $value['section_id'] == 25) ? $value['imagen'] : NULL , 'img/section/I' . $section->id . '.jpg', 'data->image');
$section->saveFile((isset($value['doc']) && $value['section_id'] == 23) ? $value['doc'] : NULL, 'doc/section/D' . $section->id . '.pdf', 'data->file');
}
}
}