Skip to content

Commit

Permalink
Merge pull request #1 from KalimeroMK/feature/API
Browse files Browse the repository at this point in the history
Feature/api
  • Loading branch information
KalimeroMK committed Aug 21, 2022
2 parents c5eec04 + eab970a commit 020de14
Show file tree
Hide file tree
Showing 241 changed files with 4,113 additions and 941 deletions.
2 changes: 1 addition & 1 deletion Modules/Admin/Http/Controllers/AdminController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\JsonResponse;
use Modules\Admin\Models\Message;
use Modules\Admin\Service\AdminService;
use Modules\Size\Models\Message;

class AdminController extends Controller
{
Expand Down
110 changes: 87 additions & 23 deletions Modules/Banner/Http/Controllers/Api/BannerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,20 @@
namespace Modules\Banner\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\JsonResponse;
use Modules\Banner\Http\Requests\Api\StoreRequest;
use Modules\Banner\Http\Requests\Api\UpdateRequest;
use Modules\Banner\Models\Banner;
use Illuminate\Http\Resources\Json\ResourceCollection;
use Modules\Banner\Http\Requests\Api\Store;
use Modules\Banner\Http\Requests\Api\Update;
use Modules\Banner\Http\Resource\BannerResource;
use Modules\Banner\Service\BannerService;
use Modules\Core\Helpers\Helper;
use Modules\Core\Traits\ApiResponses;

class BannerController extends Controller
{
use ApiResponses;

private BannerService $banner_service;

public function __construct(BannerService $banner_service)
Expand All @@ -19,54 +25,112 @@ public function __construct(BannerService $banner_service)
}

/**
* @return JsonResponse
* @return ResourceCollection
*/
public function index(): JsonResponse
public function index(): ResourceCollection
{
return $this->sendResponse([$this->banner_service->getAll()], 200);
return BannerResource::collection($this->banner_service->getAll());
}

/**
* @param StoreRequest $request
* @param Store $request
*
* @return JsonResponse
* @return mixed
* @throws Exception
*/
public function store(StoreRequest $request): JsonResponse
public function store(Store $request)
{
return $this->sendResponse([$this->banner_service->store($request)], 200);
try {
return $this
->setMessage(
__(
'apiResponse.storeSuccess',
[
'resource' => Helper::getResourceName(
$this->banner_service->banner_repository->model
),
]
)
)
->respond(new BannerResource($this->banner_service->store($request->validated())));
} catch (Exception $exception) {
return $exception->getMessage();
}
}

/**
* @param $id
*
* @return JsonResponse
* @return JsonResponse|string
*/
public function show($id): JsonResponse
public function show($id)
{
return $this->sendResponse([$this->banner_service->show($id)], 200);
try {
return $this
->setMessage(
__(
'apiResponse.ok',
[
'resource' => Helper::getResourceName(
$this->banner_service->banner_repository->model
),
]
)
)
->respond(new BannerResource($this->banner_service->show($id)));
} catch (Exception $exception) {
return $exception->getMessage();
}
}

/**
* @param UpdateRequest $request
* @param Update $request
* @param $id
*
* @return JsonResponse
* @return string
*/
public function update(UpdateRequest $request, $id): JsonResponse
public function update(Update $request, $id)
{
$banner = Banner::findOrFail($id);
$data = $request;

return $this->sendResponse([$this->banner_service->update($data, $banner->id)], 200);
try {
return $this
->setMessage(
__(
'apiResponse.updateSuccess',
[
'resource' => Helper::getResourceName(
$this->banner_service->banner_repository->model
),
]
)
)
->respond(new BannerResource($this->banner_service->update($id, $request->validated())));
} catch (Exception $exception) {
return $exception->getMessage();
}
}

/**
* @param $id
*
* @return JsonResponse
* @return JsonResponse|string
*/
public function destroy($id): JsonResponse
public function destroy($id)
{
return $this->sendResponse([$this->banner_service->destroy($id)], 200);
try {
return $this
->setMessage(
__(
'apiResponse.deleteSuccess',
[
'resource' => Helper::getResourceName(
$this->banner_service->banner_repository->model
),
]
)
)
->respond($this->banner_service->destroy($id));
} catch (Exception $exception) {
return $exception->getMessage();
}
}
}
2 changes: 1 addition & 1 deletion Modules/Banner/Http/Controllers/BannerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public function update(Update $request, Banner $banner): RedirectResponse
*/
public function destroy(Banner $banner): RedirectResponse
{
$this->banner_service->destroy($banner);
$this->banner_service->destroy($banner->id);

return redirect()->route('banners.index');
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
namespace Modules\Banner\Http\Requests\Api;

use JetBrains\PhpStorm\ArrayShape;
use Modules\Core\Helpers\ApiRequest;
use Modules\Core\Http\Requests\Api\CoreRequest;

class StoreRequest extends ApiRequest
class Store extends CoreRequest
{
#[ArrayShape([
'title' => "string",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
namespace Modules\Banner\Http\Requests\Api;

use JetBrains\PhpStorm\ArrayShape;
use Modules\Core\Helpers\ApiRequest;
use Modules\Core\Http\Requests\Api\CoreRequest;

class UpdateRequest extends ApiRequest
class Update extends CoreRequest
{
#[ArrayShape([
'title' => "string",
Expand Down
30 changes: 30 additions & 0 deletions Modules/Banner/Http/Resource/BannerResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace Modules\Banner\Http\Resource;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use Modules\Banner\Models\Banner;

/** @mixin Banner */
class BannerResource extends JsonResource
{
/**
* @param Request $request
*
* @return array
*/
public function toArray($request): array
{
return [
'id' => $this->id,
'title' => $this->title,
'slug' => $this->slug,
'photo' => $this->photo,
'description' => $this->description,
'status' => $this->status,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}
6 changes: 3 additions & 3 deletions Modules/Banner/Providers/RouteServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ public function map()
*
* @return void
*/
protected function mapApiRoutes()
protected function mapApiRoutes(): void
{
Route::prefix('api')
->middleware('api')
Route::prefix('api/v1')
->middleware('auth:sanctum')
->group(module_path('Banner', '/Routes/api.php'));
}

Expand Down
11 changes: 5 additions & 6 deletions Modules/Banner/Routes/api.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
<?php

use Illuminate\Support\Facades\Route;
use Modules\Banner\Http\Controllers\Api\BannerController;

/*
|--------------------------------------------------------------------------
| API Routes
Expand All @@ -14,6 +11,8 @@
|
*/

Route::middleware('auth:sanctum')->group(function () {
Route::resource('banner', BannerController::class);
});
use Illuminate\Support\Facades\Route;
use Modules\Banner\Http\Controllers\Api\BannerController;

Route::apiResource('banner', BannerController::class)->except('update');
Route::post('banner/{id}', [BannerController::class, 'update'])->name('banner.update');
17 changes: 11 additions & 6 deletions Modules/Banner/Service/BannerService.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
namespace Modules\Banner\Service;

use Exception;
use Illuminate\Database\Eloquent\Collection;
use LaravelIdea\Helper\Modules\Banner\Models\_IH_Banner_C;
use Modules\Banner\Models\Banner;
use Modules\Banner\Repository\BannerRepository;
use Modules\Core\Service\CoreService;
use Modules\Core\Traits\ImageUpload;
Expand All @@ -14,7 +11,7 @@ class BannerService extends CoreService
{
use ImageUpload;

private BannerRepository $banner_repository;
public BannerRepository $banner_repository;

public function __construct(BannerRepository $banner_repository)
{
Expand All @@ -24,7 +21,7 @@ public function __construct(BannerRepository $banner_repository)
/**
* @param $data
*
* @return Collection|_IH_Banner_C|mixed|Banner|Banner[]|string
* @return mixed
*/
public function store($data): mixed
{
Expand Down Expand Up @@ -76,7 +73,15 @@ public function show($id): mixed
public function update($id, $data): mixed
{
try {
return $this->banner_repository->update($id, $data);
if ( ! empty($data['photo'])) {
return $this->banner_repository->update((int)$id,
collect($data)->except(['photo'])->toArray() + [
'photo' => $this->verifyAndStoreImage($data['photo']),
]
);
}

return $this->banner_repository->update((int)$id, $data);
} catch (Exception $exception) {
return $exception->getMessage();
}
Expand Down
84 changes: 84 additions & 0 deletions Modules/Billing/Http/Controllers/Api/WishlistController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php

namespace Modules\Billing\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\ResourceCollection;
use Modules\Billing\Http\Requests\Api\Store;
use Modules\Billing\Http\Resources\WishlistResource;
use Modules\Billing\Service\WishlistService;
use Modules\Core\Helpers\Helper;
use Modules\Core\Traits\ApiResponses;

class WishlistController extends Controller
{
use ApiResponses;

private WishlistService $wishlist_service;

public function __construct(WishlistService $wishlist_service)
{
$this->wishlist_service = $wishlist_service;
}

/**
* @return ResourceCollection
*/
public function index(): ResourceCollection
{
return WishlistResource::collection($this->wishlist_service->getAll());
}

/**
* @param Store $request
*
* @return mixed
* @throws Exception
*/
public function store(Store $request)
{
try {
return $this
->setMessage(
__(
'apiResponse.storeSuccess',
[
'resource' => Helper::getResourceName(
$this->wishlist_service->wishlist_repository->model
),
]
)
)
->respond(new WishlistResource($this->wishlist_service->store($request->all())));
} catch (Exception $exception) {
return $exception->getMessage();
}
}

/**
* @param $id
*
* @return JsonResponse|string
*/
public function destroy($id)
{
try {
return $this
->setMessage(
__(
'apiResponse.deleteSuccess',
[
'resource' => Helper::getResourceName(
$this->wishlist_service->wishlist_repository->model
),
]
)
)
->respond($this->wishlist_service->destroy($id));
} catch (Exception $exception) {
return $exception->getMessage();
}
}
}
Loading

0 comments on commit 020de14

Please sign in to comment.