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