|
|
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
|
|
|
|
|
|
use App\Http\Requests\ScheduleRequest;
|
|
|
use App\Http\Resources\ScheduleResource;
|
|
|
+use App\Services\ScheduleCartService;
|
|
|
use App\Services\ScheduleService;
|
|
|
use Illuminate\Http\JsonResponse;
|
|
|
use Illuminate\Http\Request;
|
|
|
@@ -94,21 +95,13 @@ class ScheduleController extends Controller
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- //
|
|
|
-
|
|
|
- public function clientProviderBlocks(Request $request): JsonResponse
|
|
|
+ public function finished(): JsonResponse
|
|
|
{
|
|
|
- $validated = $request->validate([
|
|
|
- 'client_id' => 'required|integer|exists:clients,id',
|
|
|
- 'provider_id' => 'required|integer|exists:providers,id',
|
|
|
- ]);
|
|
|
+ $schedules = $this->scheduleService->getFinished();
|
|
|
|
|
|
- $blocks = $this->scheduleService->getClientProviderBlocks(
|
|
|
- (int) $validated['client_id'],
|
|
|
- (int) $validated['provider_id'],
|
|
|
+ return $this->successResponse(
|
|
|
+ ScheduleResource::collection($schedules),
|
|
|
);
|
|
|
-
|
|
|
- return $this->successResponse(payload: $blocks);
|
|
|
}
|
|
|
|
|
|
public function groupedByClient(): JsonResponse
|
|
|
@@ -118,25 +111,14 @@ class ScheduleController extends Controller
|
|
|
return $this->successResponse($grouped);
|
|
|
}
|
|
|
|
|
|
- public function finished(): JsonResponse
|
|
|
- {
|
|
|
- $schedules = $this->scheduleService->getFinished();
|
|
|
-
|
|
|
- return $this->successResponse(
|
|
|
- ScheduleResource::collection($schedules),
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- //
|
|
|
-
|
|
|
- public function cancelWithReason(string $id, Request $request): JsonResponse
|
|
|
+ public function updateStatus(string $id, ScheduleRequest $request): JsonResponse
|
|
|
{
|
|
|
try {
|
|
|
$validated = $request->validate([
|
|
|
- 'cancel_text' => 'required|string|min:5|max:1000',
|
|
|
+ 'status' => 'required|in:pending,accepted,rejected,paid,cancelled,started,finished',
|
|
|
]);
|
|
|
|
|
|
- $schedule = $this->scheduleService->cancelWithReason((int) $id, $validated['cancel_text']);
|
|
|
+ $schedule = $this->scheduleService->updateStatus($id, $validated['status']);
|
|
|
|
|
|
return $this->successResponse(
|
|
|
payload: new ScheduleResource($schedule),
|
|
|
@@ -147,14 +129,14 @@ class ScheduleController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public function updateStatus(string $id, ScheduleRequest $request): JsonResponse
|
|
|
+ public function cancelWithReason(string $id, Request $request): JsonResponse
|
|
|
{
|
|
|
try {
|
|
|
$validated = $request->validate([
|
|
|
- 'status' => 'required|in:pending,accepted,rejected,paid,cancelled,started,finished',
|
|
|
+ 'cancel_text' => 'required|string|min:5|max:1000',
|
|
|
]);
|
|
|
|
|
|
- $schedule = $this->scheduleService->updateStatus($id, $validated['status']);
|
|
|
+ $schedule = $this->scheduleService->cancelWithReason((int) $id, $validated['cancel_text']);
|
|
|
|
|
|
return $this->successResponse(
|
|
|
payload: new ScheduleResource($schedule),
|
|
|
@@ -165,6 +147,33 @@ class ScheduleController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //
|
|
|
+ public function clientProviderBlocks(Request $request): JsonResponse
|
|
|
+ {
|
|
|
+ $validated = $request->validate([
|
|
|
+ 'client_id' => 'required|integer|exists:clients,id',
|
|
|
+ 'provider_id' => 'required|integer|exists:providers,id',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $blocks = $this->scheduleService->getClientProviderBlocks(
|
|
|
+ (int) $validated['client_id'],
|
|
|
+ (int) $validated['provider_id'],
|
|
|
+ );
|
|
|
|
|
|
+ return $this->successResponse(payload: $blocks);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function storeCart(ScheduleRequest $request, ScheduleCartService $cartService): JsonResponse
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $schedules = $cartService->create($request->validated());
|
|
|
+
|
|
|
+ return $this->successResponse(
|
|
|
+ payload: ScheduleResource::collection($schedules),
|
|
|
+ message: count($schedules).' '.__('schedules.schedules_created'),
|
|
|
+ code: 201,
|
|
|
+ );
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return $this->errorResponse($e->getMessage(), 422);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|