| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Services\PromotionService;
use App\Http\Requests\Promotions\ListRequest as PromotionListRequest;
use App\Http\Requests\Promotions\CreateRequest as PromotionCreateRequest;
use App\Http\Requests\Promotions\UpdateRequest as PromotionUpdateRequest;
use App\Http\Requests\Promotions\UploadImageRequest as PromotionUploadImageRequest;
use App\Http\Requests\IdOnlyRequest;
use App\Http\Requests\ParamIdRequest;
use App\Models\Promotion;
use DB;
use Auth;
use Illuminate\Validation\ValidationException;
class PromotionController extends Controller
{
public function __construct(
PromotionService $promotionService
)
{
$this->promotionService = $promotionService;
}
/**
* @OA\Get(
*
* path="/api/promotion/list",
* operationId="listPromotion",
* tags={"Promotion"},
* summary="listPromotion",
* security={
* {
* "open_key": {}
* },
* {
* "api_key": {}
* }
* },
* @OA\Response(
* response=200,
* description="Success",
* @OA\JsonContent()
* ),
* @OA\Response(response=400, description="Bad request"),
* @OA\Response(response=404, description="Resource Not Found"),
* @OA\Response(response=422, description="Unprocessable Entity"),
* @OA\Response(response=500, description="Internal Server Error"),
* )
*/
public function listPromotion(PromotionListRequest $request)
{
$payload = $request->validated();
if(!Auth::user()->isSuperAdmin()){
$payload['has_image'] = true;
$payload['is_ongoing'] = true;
}
$result = $this->promotionService->listPromotion($payload);
return self::successResponse("Success",$result);
}
/**
* @OA\Get(
*
* path="/api/promotion/info/{id}",
* operationId="infoPromotion",
* tags={"Promotion"},
* summary="infoPromotion",
* security={
* {
* "open_key": {}
* },
* {
* "api_key": {}
* }
* },
* @OA\Parameter(
* name="id",
* description="id",
* in="path",
* @OA\Schema(
* type="string",
* default=""
* )
* ),
* @OA\Response(
* response=200,
* description="Success",
* @OA\JsonContent()
* ),
* @OA\Response(response=400, description="Bad request"),
* @OA\Response(response=404, description="Resource Not Found"),
* @OA\Response(response=422, description="Unprocessable Entity"),
* @OA\Response(response=500, description="Internal Server Error"),
* )
*/
public function infoPromotion(ParamIdRequest $request)
{
$payload = $request->validated();
if(!Auth::user()->isSuperAdmin()){
$payload['has_image'] = true;
}
$result = $this->promotionService->queriplex(Promotion::query(), $payload)
->firstOr(function(){
throw ValidationException::withMessages([
"id" => "The selected id is invalid",
]);
});
$result->load('image');
return self::successResponse("Success",$result);
}
public function createPromotion(PromotionCreateRequest $request)
{
$result = $this->promotionService->createPromotion($request->validated());
return self::successResponse("Success",$result);
}
public function updatePromotion(PromotionUpdateRequest $request)
{
$result = $this->promotionService->updatePromotion( $request->validated() );
return self::successResponse("Success",$result);
}
public function deletePromotion(IdOnlyRequest $request)
{
$result = $this->promotionService->deletePromotion( $request->validated() );
return self::successResponse("Success",$result);
}
public function uploadPromotionImage(PromotionUploadImageRequest $request)
{
$result = DB::transaction(function () use ($request){
return $this->promotionService->uploadPromotionImage($request->validated());
});
return self::successResponse("Success",$result);
}
public function clearPromotionImage(IdOnlyRequest $request)
{
$result = $this->promotionService->clearPromotionImage($request->validated());
return self::successResponse("Success",$result);
}
}