controller refactoring part 17

This commit is contained in:
Peter Papp
2021-07-21 11:20:41 +02:00
parent e0eaf5cede
commit dccf98602d
21 changed files with 370 additions and 94 deletions
@@ -1,7 +1,6 @@
<?php
namespace Domain\Files\Actions;
use App\Users\Models\User;
use Domain\Sharing\Models\Share;
use Support\Services\HelperService;
use Illuminate\Support\Facades\Auth;
@@ -9,11 +8,13 @@ use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Domain\Files\Requests\UploadRequest;
use Domain\Files\Models\File as UserFile;
use Domain\Traffic\Actions\RecordUploadAction;
class UploadFilesAction
class UploadFileAction
{
public function __construct(
public HelperService $helper,
public RecordUploadAction $recordUpload,
) {
}
@@ -77,8 +78,7 @@ class UploadFilesAction
}
// Store user upload size
User::find($user_id)
->recordUpload($file_size);
($this->recordUpload)($file_size, $user_id);
// Return new file
return UserFile::create([
@@ -7,7 +7,7 @@ use Support\Services\HelperService;
use App\Http\Controllers\Controller;
use Support\Demo\Actions\DemoService;
use Domain\Files\Requests\UploadRequest;
use Domain\Files\Actions\UploadFilesAction;
use Domain\Files\Actions\UploadFileAction;
/**
* guest user upload file into shared folder
@@ -21,7 +21,7 @@ class EditorUploadFilesController extends Controller
}
public function __invoke(
UploadFilesAction $uploadFile,
UploadFileAction $uploadFile,
UploadRequest $request,
Share $shared,
): Response | array {
@@ -8,11 +8,13 @@ use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Domain\Files\Models\File as UserFile;
use Domain\Traffic\Actions\RecordDownloadAction;
class FileAccessController extends Controller
{
public function __construct(
public HelperService $helper,
public RecordDownloadAction $recordDownload,
) {
}
@@ -79,8 +81,9 @@ class FileAccessController extends Controller
}*/
// Store user download size
$request->user()->recordDownload(
(int) $file->getRawOriginal('filesize')
($this->recordDownload)(
(int) $file->getRawOriginal('filesize'),
Auth::id()
);
return $this->helper->download_file($file, Auth::id());
@@ -100,11 +103,11 @@ class FileAccessController extends Controller
->where('user_id', Auth::id())
->firstOrFail();
$zip
->user
->recordDownload(
$disk->size("zip/$zip->basename")
);
// Store user download size
($this->recordDownload)(
$disk->size("zip/$zip->basename"),
$zip->user_id
);
return $disk->download("zip/$zip->basename", $zip->basename, [
'Content-Type' => 'application/zip',
@@ -4,7 +4,7 @@ namespace Domain\Files\Controllers;
use Domain\Files\Models\File;
use App\Http\Controllers\Controller;
use Domain\Files\Requests\UploadRequest;
use Domain\Files\Actions\UploadFilesAction;
use Domain\Files\Actions\UploadFileAction;
class UploadFilesController extends Controller
{
@@ -13,7 +13,7 @@ class UploadFilesController extends Controller
*/
public function __invoke(
UploadRequest $request,
UploadFilesAction $uploadFiles,
UploadFileAction $uploadFiles,
): File {
if (is_demo_account('howdy@hi5ve.digital')) {
return $this->demo->upload($request);
@@ -12,8 +12,8 @@ class UserProfileInvoiceController extends Controller
*/
public function __invoke(): InvoiceCollection
{
return new InvoiceCollection(
Auth::user()->invoices()
);
$user = Auth::user()->invoices();
return new InvoiceCollection($user);
}
}
@@ -7,11 +7,13 @@ use Support\Services\HelperService;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
use Domain\Files\Models\File as UserFile;
use Domain\Traffic\Actions\RecordDownloadAction;
class FileSharedAccessController extends Controller
{
public function __construct(
private HelperService $helper,
public RecordDownloadAction $recordDownload,
) {
}
@@ -30,11 +32,11 @@ class FileSharedAccessController extends Controller
->where('shared_token', $token)
->first();
$zip
->user
->recordDownload(
$disk->size("zip/$zip->basename")
);
// Store user download size
($this->recordDownload)(
$disk->size("zip/$zip->basename"),
$zip->user_id
);
return $disk
->download("zip/$zip->basename", $zip->basename, [
@@ -67,11 +69,10 @@ class FileSharedAccessController extends Controller
$this->helper->check_guest_access_to_shared_items($shared, $file);
// Store user download size
$shared
->user
->recordDownload(
(int) $file->getRawOriginal('filesize')
);
($this->recordDownload)(
(int) $file->getRawOriginal('filesize'),
$shared->user_id
);
return $this->helper->download_file($file, $shared->user_id);
}
@@ -97,11 +98,10 @@ class FileSharedAccessController extends Controller
$this->helper->check_guest_access_to_shared_items($shared, $file);
// Store user download size
$shared
->user
->recordDownload(
(int) $file->getRawOriginal('filesize')
);
($this->recordDownload)(
(int) $file->getRawOriginal('filesize'),
$shared->user_id
);
return $this->helper->download_thumbnail_file($file, $shared->user_id);
}
@@ -6,15 +6,21 @@ use Domain\Files\Models\File;
use Domain\Sharing\Models\Share;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
use Domain\Traffic\Actions\RecordDownloadAction;
use Symfony\Component\HttpFoundation\StreamedResponse;
class SharePublicIndexController extends Controller
{
public function __construct(
public RecordDownloadAction $recordDownload,
) {
}
/**
* Show page index and delete share_session cookie
*/
public function __invoke(
Share $shared
Share $shared,
): View | StreamedResponse {
// Delete share_session if exist
if ($shared->is_protected) {
@@ -29,12 +35,11 @@ class SharePublicIndexController extends Controller
->first();
if ($image) {
// Get image filesize
$fileSize = (int) $image->getRawOriginal('filesize');
// Store user download size
$shared
->user
->recordDownload(
(int) $image->getRawOriginal('filesize')
);
($this->recordDownload)($fileSize, $shared->user->id);
return $this->get_single_image($image, $shared->user_id);
}
@@ -0,0 +1,24 @@
<?php
namespace Domain\Traffic\Actions;
use Domain\Traffic\Models\Traffic;
class RecordDownloadAction
{
/**
* Record user download filesize
*/
public function __invoke(
int $file_size,
string $user_id,
): void {
$record = Traffic::currentMonth()
->firstOrCreate([
'user_id' => $user_id,
]);
$record->update([
'download' => $record->download + $file_size,
]);
}
}
@@ -0,0 +1,24 @@
<?php
namespace Domain\Traffic\Actions;
use Domain\Traffic\Models\Traffic;
class RecordUploadAction
{
/**
* Record user upload filesize
*/
public function __invoke(
int $file_size,
string $user_id,
): void {
$record = Traffic::currentMonth()
->firstOrCreate([
'user_id' => $user_id,
]);
$record->update([
'upload' => $record->upload + $file_size,
]);
}
}
+9
View File
@@ -3,10 +3,12 @@ namespace Domain\Traffic\Models;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
/**
* @method static whereYear(string $string, string $string1, int $year)
* @method static currentMonth()
*/
class Traffic extends Model
{
@@ -22,6 +24,13 @@ class Traffic extends Model
protected $keyType = 'string';
public function scopeCurrentMonth($query): Builder
{
return $query
->whereYear('created_at', '=', now()->year)
->whereMonth('created_at', '=', now()->month);
}
protected static function boot()
{
parent::boot();