Skip to content

Commit

Permalink
WIP Repository
Browse files Browse the repository at this point in the history
  • Loading branch information
thisnugroho committed Mar 27, 2024
1 parent aa95cde commit 376df2d
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 0 deletions.
13 changes: 13 additions & 0 deletions app/Repositories/Repository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace App\Repositories;

use App\Repositories\Submission\SubmissionRepository;

final class Repository
{
public static function submission(): SubmissionRepository
{
return app(SubmissionRepository::class);
}
}
29 changes: 29 additions & 0 deletions app/Repositories/Submission/BaseSubmissionRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

namespace App\Repositories\Submission;

use App\Models\Submission;

abstract class BaseSubmissionRepository
{
public function create($data)
{
return Submission::create($data);
}

public function update(Submission $submission, array $data)
{
$submission->update($data);

if (array_key_exists('meta', $data) && is_array($data['meta'])) {
$submission->setManyMeta($data['meta']);
}

return $submission;
}

public function delete(Submission $submission)
{
$submission->delete();
}
}
33 changes: 33 additions & 0 deletions app/Repositories/Submission/SubmissionRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace App\Repositories\Submission;

use App\Models\Enums\SubmissionStatus;
use App\Models\States\Submission\BaseSubmissionState;
use App\Models\States\Submission\DeclinedSubmissionState;
use App\Models\States\Submission\EditingSubmissionState;
use App\Models\States\Submission\IncompleteSubmissionState;
use App\Models\States\Submission\OnReviewSubmissionState;
use App\Models\States\Submission\PublishedSubmissionState;
use App\Models\States\Submission\QueuedSubmissionState;
use App\Models\States\Submission\WithdrawnSubmissionState;
use App\Models\Submission;

class SubmissionRepository extends BaseSubmissionRepository
{

// Repository::submission()->getState()->accept();
public function getState(Submission $submission): BaseSubmissionState
{
return match ($submission->status) {
SubmissionStatus::Incomplete => new IncompleteSubmissionState($submission),
SubmissionStatus::Queued => new QueuedSubmissionState($submission),
SubmissionStatus::OnReview => new OnReviewSubmissionState($submission),
SubmissionStatus::Editing => new EditingSubmissionState($submission),
SubmissionStatus::Published => new PublishedSubmissionState($submission),
SubmissionStatus::Declined => new DeclinedSubmissionState($submission),
SubmissionStatus::Withdrawn => new WithdrawnSubmissionState($submission),
default => throw new \Exception('Invalid submission status'),
};
}
}

0 comments on commit 376df2d

Please sign in to comment.