MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 8.0.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/public_html/mpl.imenso.co/app/Models/RadioShow.php
<?php

namespace App\Models;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;

class RadioShow extends Model
{
    protected $casts = [
        'start_at' => 'datetime',
        'end_at'   => 'datetime',
    ];

    public function artist()
    {
        return $this->belongsTo(\App\Models\User::class, 'artist_id');
    }

    public function links()
    {
        return $this->hasMany(\App\Models\RadioShowLink::class, 'radio_show_id');
    }

    public static function currentShow()
    {
        $current_show = self::where('start_at', '<=', Carbon::now())->where('end_at', '>', Carbon::now())->first();

        return $current_show;
    }

    public static function addNew($data)
    {
        $date = Carbon::createFromFormat('d/m/Y', $data->show_date);

        $start = Carbon::createFromFormat('H:i', $data->start_at_submit);
        $start->year = $date->year;
        $start->month = $date->month;
        $start->day = $date->day;

        $end = Carbon::createFromFormat('H:i', $data->end_at_submit);
        $end->year = $date->year;
        $end->month = $date->month;
        $end->day = $date->day;

        $days_shows = self::whereDate('start_at', '=', $date->toDateString())->get();

        $show = new self;
        $show->artist_id = $data['artist_id'];
        $show->description = $data['description'];
        $show->start_at = $start;
        $show->end_at = $end;

        $show->save();

        foreach ($data->link_text as $k => $link_text) {
            if ($link_text != '' && $data->link_url[$k] != '') {
                RadioShowLink::addNew($show->id, $link_text, $data->link_url[$k]);
            }
        }

        return $show;
    }

    public function edit($data)
    {
        $this->artist_id = $data['artist_id'];
        $this->description = $data['description'];

        $date = Carbon::createFromFormat('d/m/Y', $data->show_date);

        $start = Carbon::createFromFormat('H:i', $data->start_at_submit);
        $start->year = $date->year;
        $start->month = $date->month;
        $start->day = $date->day;

        $end = Carbon::createFromFormat('H:i', $data->end_at_submit);
        $end->year = $date->year;
        $end->month = $date->month;
        $end->day = $date->day;

        $this->start_at = $start;
        $this->end_at = $end;

        $this->save();

        foreach ($this->links as $link) {
            $link->remove();
        }

        foreach ($data->link_text as $k => $link_text) {
            if ($link_text != '' && $data->link_url[$k] != '') {
                RadioShowLink::addNew($this->id, $link_text, $data->link_url[$k]);
            }
        }

        return true;
    }

    public function remove()
    {
        foreach ($this->links as $link) {
            $link->remove();
        }

        $this->delete();

        return true;
    }
}