87 lines
2 KiB
PHP
87 lines
2 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Jobs\ProjectDownloadTiffJob;
|
|
use App\Jobs\ProjectMosiacGeneratorJob;
|
|
use Carbon\CarbonPeriod;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Carbon;
|
|
use Illuminate\Support\Facades\File;
|
|
|
|
class ProjectReport extends Model
|
|
{
|
|
protected $fillable = ['name', 'path', 'week', 'year', 'status'];
|
|
|
|
public function setStatusSuccess()
|
|
{
|
|
$this->status = 'success';
|
|
$this->save();
|
|
}
|
|
|
|
public function setStatusFailed()
|
|
{
|
|
$this->status = 'failed';
|
|
$this->save();
|
|
}
|
|
|
|
public function project()
|
|
{
|
|
return $this->belongsTo(Project::class);
|
|
}
|
|
|
|
public function weeksAgo()
|
|
{
|
|
return $this->weeksAgoForYearAndWeek($this->year, $this->week);
|
|
}
|
|
|
|
public static function weeksAgoForYearAndWeek($year, $week)
|
|
{
|
|
return now()->diffInWeeks(now()->setISODate($year, $week));
|
|
}
|
|
|
|
public function getFileName()
|
|
{
|
|
return 'week_'.$this->week.'_'.$this->year;
|
|
}
|
|
|
|
public function getFullPathName()
|
|
{
|
|
return storage_path('app/'.$this->project->download_path.'/'.$this->path);
|
|
}
|
|
|
|
public function getReportDate()
|
|
{
|
|
return self::getReportDateForYearAndWeek(
|
|
$this->project,
|
|
$this->year,
|
|
$this->week
|
|
)->toDateString();
|
|
}
|
|
|
|
public static function getReportDateForYearAndWeek(Project $project, $year, $week)
|
|
{
|
|
$date = Carbon::now()->setISODate($year, $week);
|
|
|
|
$dayOfWeek = Carbon::parse($project->mail_day)->subDay(2)->dayOfWeek;
|
|
if ($dayOfWeek == 6) {
|
|
$reportDay = $date->startOfWeek()->subDay();
|
|
} else {
|
|
$reportDay = $date->startOfWeek()->addDays($dayOfWeek);
|
|
}
|
|
|
|
return $reportDay;
|
|
}
|
|
|
|
public function deleteMe()
|
|
{
|
|
if (File::exists($this->getFullPathName())) {
|
|
File::delete($this->getFullPathName());
|
|
}
|
|
$this->delete();
|
|
}
|
|
|
|
|
|
}
|