sigd/app/Services/Setting/DataAktivitasService.php

73 lines
2.3 KiB
PHP

<?php
namespace App\Services\Setting;
// use App\Enums\Sector;
use App\Models\CmsFileDataAktivitas;
use App\Models\ReferenceSector;
use App\Services\SigdCrudService;
use Illuminate\Support\Facades\Storage;
class DataAktivitasService extends SigdCrudService
{
public function __construct(CmsFileDataAktivitas $model)
{
parent::__construct($model);
}
public function getSectors()
{
return ReferenceSector::rowActive()->orderByRowNum()->get();
// return Sector::toArray();
}
public function save($data)
{
$id = $data['id'] ?? null;
$file = CmsFileDataAktivitas::rowActive()->where('id', $id)->first();
$storagePath = 'data_aktivitas/' . $data['sector'] . '/' . $data['inventory_year'];
if ($file) {
$currentFilePath = 'data_aktivitas/' . $file->sector . '/' . $file->inventory_year . '/' . $file->file_upload;
if ($file->inventory_year !== $data['inventory_year'] || $file->sector !== $data['sector']) {
if (Storage::disk('public')->exists($currentFilePath)) {
$newFilePath = $storagePath . '/' . $file->file_upload;
Storage::disk('public')->move($currentFilePath, $newFilePath);
}
}
$data['file_upload'] = $file->file_upload;
if (isset($data['file_document'])) {
$oldFilePath = $storagePath . '/' . $file->file_upload;
if ($file->file_upload != $data['file_document']->hashName()) {
Storage::disk('public')->delete($oldFilePath);
}
$data['file_upload'] = basename($data['file_document']->store($storagePath, 'public'));
}
$this->update($file, $data);
} else {
if (isset($data['file_document'])) {
$data['file_upload'] = basename($data['file_document']->store($storagePath, 'public'));
}
$file = $this->create($data);
}
return $file;
}
public function destroy(CmsFileDataAktivitas $fileData, $storagePath)
{
if ($fileData) {
$oldFilePath = $storagePath . '/' . $fileData->file_upload;
Storage::disk('public')->delete($oldFilePath);
$this->delete($fileData);
}
}
}