mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
Voucherify phase 2
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Milestones\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Rewards\Services\FetchesReward;
|
||||
use App\Classes\Modules\Milestones\Processors\CreateMilestoneProcessor;
|
||||
use App\Classes\Modules\Milestones\Processors\AssignRewardProcessor;
|
||||
use App\Classes\Modules\Milestones\DataTransferObjects\AchievementObject;
|
||||
use App\Http\Resources\MilestoneResource;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Reward;
|
||||
|
||||
class CreateMilestoneLogic extends AbstractControllerLogic
|
||||
{
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Create Milestone',
|
||||
'message' => 'You have successfully created a milestone'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var FetchesReward */
|
||||
private $fetchesReward;
|
||||
|
||||
/** @var CreateMilestoneProcessor */
|
||||
private $createMilestoneProcessor;
|
||||
|
||||
/** @var AssignRewardProcessor */
|
||||
private $assignRewardProcessor;
|
||||
|
||||
/**
|
||||
* CreateMilestoneLogic constructor.
|
||||
*/
|
||||
public function __construct(CreateMilestoneProcessor $createMilestoneProcessor, FetchesReward $fetchesReward, AssignRewardProcessor $assignRewardProcessor)
|
||||
{
|
||||
$this->createMilestoneProcessor = $createMilestoneProcessor;
|
||||
$this->fetchesReward = $fetchesReward;
|
||||
$this->assignRewardProcessor = $assignRewardProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
$milestone = $this->createMilestoneProcessor->execute($request);
|
||||
|
||||
//Extra checking to make sure that each reward exists
|
||||
$rewardIds = $request->input('reward_ids');
|
||||
foreach ($rewardIds as $rewardId) {
|
||||
/** @var Reward $reward */
|
||||
$this->fetchesReward->execute(['id' => $rewardId]);
|
||||
}
|
||||
|
||||
$object = new AchievementObject($milestone, $rewardIds);
|
||||
$this->assignRewardProcessor->execute($object);
|
||||
|
||||
return $this->resourceResponse(new MilestoneResource($milestone));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Milestones\ControllersLogic;
|
||||
|
||||
use App\Http\Resources\MilestoneResource;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
|
||||
use App\Classes\Modules\Milestones\Services\FetchesMilestone;
|
||||
|
||||
use App\Classes\Modules\Milestones\Standards\Rules\CanDeleteMilestone;
|
||||
use App\Classes\Modules\Milestones\Services\DeletesMilestone;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DeleteMilestoneLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Delete Milestone',
|
||||
'message' => 'You have successfully deleted the Milestone'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var CanDeleteMilestone */
|
||||
private $canDeleteMilestone;
|
||||
|
||||
/** @var DeletesMilestone */
|
||||
private $deletesMilestone;
|
||||
|
||||
/** @var FetchesMilestone */
|
||||
private $fetchesMiestone;
|
||||
|
||||
|
||||
/**
|
||||
* DeleteMilestoneLogic constructor.
|
||||
* @param CanDeleteMilestone $canDeleteMilestone
|
||||
* @param DeletesMilestone $deletesMilestone
|
||||
* @param FetchesMilestone $fetchesMiestone
|
||||
*/
|
||||
public function __construct(
|
||||
CanDeleteMilestone $canDeleteMilestone,
|
||||
DeletesMilestone $deletesMilestone,
|
||||
FetchesMilestone $fetchesMiestone
|
||||
)
|
||||
{
|
||||
$this->canDeleteMilestone = $canDeleteMilestone;
|
||||
$this->deletesMilestone = $deletesMilestone;
|
||||
$this->fetchesMiestone = $fetchesMiestone;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
|
||||
$query = $this->fetchesMiestone->execute(['id' => $request->route('id')]);
|
||||
$this->canDeleteMilestone->passes();
|
||||
$this->deletesMilestone->execute($query);
|
||||
|
||||
return $this->resourceResponse(new MilestoneResource($query));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Milestones\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Milestones\Services\ListsMilestoneProgress;
|
||||
use App\Http\Resources\MilestoneProgressResource;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ListMilestoneProgressLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Retrieved Milestone Progress',
|
||||
'message' => 'You have successfully retrieved a list of Milestone Progress'
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/** @var ListsMilestoneProgress */
|
||||
private $listsMilestoneProgress;
|
||||
|
||||
/**
|
||||
* ListMilestoneProgressLogic constructor.
|
||||
* @param ListsMilestoneProgress $listsMilestoneProgress
|
||||
*/
|
||||
public function __construct(ListsMilestoneProgress $listsMilestoneProgress)
|
||||
{
|
||||
$this->listsMilestoneProgress = $listsMilestoneProgress;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
$query = $this->listsMilestoneProgress->execute($this->listsMilestoneProgress->deserializeFilters($request->input('filters')));
|
||||
|
||||
return $this->collectionResponse(MilestoneProgressResource::collection($query));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Milestones\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Milestones\Services\ListsMilestones;
|
||||
use App\Http\Resources\MilestoneResource;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ListMilestonesLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Retrieved Milestones',
|
||||
'message' => 'You have successfully retrieved a list of Milestones'
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/** @var ListsMilestones */
|
||||
private $listsMilestones;
|
||||
|
||||
/**
|
||||
* ListMilestonesLogic constructor.
|
||||
* @param ListsMilestones $listsMilestones
|
||||
*/
|
||||
public function __construct(ListsMilestones $listsMilestones)
|
||||
{
|
||||
$this->listsMilestones = $listsMilestones;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
$query = $this->listsMilestones->execute($this->listsMilestones->deserializeFilters($request->input('filters')));
|
||||
|
||||
return $this->collectionResponse(MilestoneResource::collection($query));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Milestones\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Rewards\Services\FetchesReward;
|
||||
use App\Classes\Modules\Milestones\Processors\UpdateMilestoneProcessor;
|
||||
use App\Classes\Modules\Milestones\Processors\AssignRewardProcessor;
|
||||
use App\Classes\Modules\Milestones\DataTransferObjects\AchievementObject;
|
||||
use App\Http\Resources\MilestoneResource;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Reward;
|
||||
|
||||
class UpdateMilestoneLogic extends AbstractControllerLogic
|
||||
{
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Update Milestone',
|
||||
'message' => 'You have successfully updated a milestone'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var FetchesReward */
|
||||
private $fetchesReward;
|
||||
|
||||
/** @var UpdateMilestoneProcessor */
|
||||
private $updateMilestoneProcessor;
|
||||
|
||||
/** @var AssignRewardProcessor */
|
||||
private $assignRewardProcessor;
|
||||
|
||||
/**
|
||||
* UpdateMilestoneLogic constructor.
|
||||
* @param UpdateMilestoneProcessor $updateMilestoneProcessor
|
||||
* @param FetchesReward $fetchesReward
|
||||
* @param AssignRewardProcessor $assignRewardProcessor
|
||||
*/
|
||||
public function __construct(UpdateMilestoneProcessor $updateMilestoneProcessor, FetchesReward $fetchesReward, AssignRewardProcessor $assignRewardProcessor)
|
||||
{
|
||||
$this->updateMilestoneProcessor = $updateMilestoneProcessor;
|
||||
$this->fetchesReward = $fetchesReward;
|
||||
$this->assignRewardProcessor = $assignRewardProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
$milestone = $this->updateMilestoneProcessor->execute($request);
|
||||
|
||||
//Extra checking to make sure that each reward exists
|
||||
$rewardIds = $request->input('reward_ids');
|
||||
foreach ($rewardIds as $rewardId) {
|
||||
/** @var Reward $reward */
|
||||
$this->fetchesReward->execute(['id' => $rewardId]);
|
||||
}
|
||||
|
||||
$object = new AchievementObject($milestone, $rewardIds);
|
||||
$this->assignRewardProcessor->execute($object);
|
||||
|
||||
return $this->resourceResponse(new MilestoneResource($milestone));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user