From 33ddc91e7943743bcacace69515e74d161df066d Mon Sep 17 00:00:00 2001 From: Rustem Date: Fri, 18 Apr 2025 14:01:16 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B0=D0=BF=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/MobileApiController.php | 60 ++++++++++++++++++-- routes/api.php | 1 + 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/MobileApiController.php b/app/Http/Controllers/MobileApiController.php index 4a9b00d..dc4751d 100644 --- a/app/Http/Controllers/MobileApiController.php +++ b/app/Http/Controllers/MobileApiController.php @@ -234,10 +234,10 @@ class MobileApiController extends Controller $tariffs_new = []; foreach ($tariffs as $tariff) { $tariffs_new[] = [ - 'name' => $tariff?->name, - 'price' => $tariff?->base_rate, - 'min' => $tariff?->day_range_start, - 'max' => $tariff?->day_range_end, + 'name' => $tariff?->name, + 'price' => $tariff?->base_rate, + 'min' => $tariff?->day_range_start, + 'max' => $tariff?->day_range_end, ]; } $carsByColor = $cars->groupBy('color_id'); @@ -268,6 +268,7 @@ class MobileApiController extends Controller 'fuel_tank' => $mark?->fuel_tank ?? '50', 'class' => $class->name ?? 'Эконом', 'bodywork' => $bodywork->name ?? 'Седан', + 'deposit' => $tariffs_new[0]['deposit'] ?? '30000', 'conditioner' => $mark?->conditioner, 'photo' => $colorPath, 'tariffs' => $tariffs_new, @@ -303,4 +304,55 @@ class MobileApiController extends Controller return null; } } + + public function getSum(Request $request) + { + $started_at = $request->input('started_at'); + $ended_at = $request->input('ended_at'); + $mark_id = $request->input('mark_id'); + + $start = Carbon::createFromFormat('d-m-Y H:i', $started_at); + $end = Carbon::createFromFormat('d-m-Y H:i', $ended_at); + $days = $start->diffInDays($end); + + // Получаем тарифы + $tariffs = UniModel::model('pipi_auto_tariffs') + ->where('model_id', $mark_id) + ->get(); + if (!isset($tariffs)) { + return response()->json(__('Отсутсвуют данные по машине')); + } + + $discountRate = null; + $basePrice = null; + + foreach ($tariffs as $range) { + if ($range->day_range_start == 1 && $range->day_range_end == 2) { + $basePrice = $range->base_rate; + } + + if ($days >= $range->day_range_start && $days <= $range->day_range_end) { + $discountRate = $range->base_rate; + } + } + + // Если не нашли подходящий тариф, но дней больше 30 — применяем скидку + if (is_null($discountRate) && $days > 30 && count($tariffs) > 0) { + $discountRate = round($tariffs[0]->base_rate * 0.6); + } + + // Считаем суммы + $baseSum = $basePrice ? $basePrice * $days : null; + $discountedSum = $discountRate ? $discountRate * $days : null; + + return response()->json([ + 'days' => $days, + 'base_price_per_day' => $basePrice, + 'discount_price_per_day' => $discountRate, + 'base_sum' => $baseSum, + 'discounted_sum' => $discountedSum, + ]); + } + + } diff --git a/routes/api.php b/routes/api.php index 992f708..af24887 100644 --- a/routes/api.php +++ b/routes/api.php @@ -30,6 +30,7 @@ Route::prefix('mobile')->group(function () { Route::post('checkAvailableCar', [MobileApiController::class, 'checkAvailableCar']); Route::post('sendApplication', [MobileApiController::class, 'sendApplication']); Route::post('getApplications', [MobileApiController::class, 'getApplications']); + Route::post('getSum', [MobileApiController::class, 'getSum']); Route::post('login', [MobileApiController::class, 'login']); });