Compare commits

..

No commits in common. "816de5f5ac588b36448972c951313738e181bfce" and "bdc40dfbdce523decceb6f68da581ac8797e0b2f" have entirely different histories.

5 changed files with 67 additions and 130 deletions

View File

@ -32,11 +32,12 @@ class Main extends Component
]); ]);
$response = (new \App\Http\Controllers\MobileApiController)->getAvailableMarksList($request); $response = (new \App\Http\Controllers\MobileApiController)->getAvailableMarksList($request);
$this->params['cars'] = collect($response->getData(true))->filter(function ($item) { $this->params['cars'] = collect($response->getData(true))->filter(function ($item) {
return !empty($item['tariffs']); return !empty($item['tariffs']);
})->values(); })->values();
// dd($class_filters, $started_at, $ended_at, $bodywork_filters);
// $response = Http::get('https://cvm10.a7.kz/api/mobile/getAvailableMarksList', [ // $response = Http::get('https://cvm10.a7.kz/api/mobile/getAvailableMarksList', [
// 'started_at' => $started_at ?? Carbon::now()->toDateString(), // 'started_at' => $started_at ?? Carbon::now()->toDateString(),
// 'ended_at' => $ended_at ?? Carbon::now()->addDays(3)->toDateString(), // 'ended_at' => $ended_at ?? Carbon::now()->addDays(3)->toDateString(),

View File

@ -115,7 +115,6 @@
<div class="row custom-row w-100"> <div class="row custom-row w-100">
@php $carsValues = array_values($cars->toArray()); @endphp @php $carsValues = array_values($cars->toArray()); @endphp
@foreach($carsValues as $car) @foreach($carsValues as $car)
{{-- @dump($car)--}}
<div class="col-12 col-md-6 mb-4"> <div class="col-12 col-md-6 mb-4">
<div class="car-card flex-grow-1"> <div class="car-card flex-grow-1">
<img class="img-fluid" src="{{ $car['photo'] ?? asset('img/default.png') }}" alt="Car Image"> <img class="img-fluid" src="{{ $car['photo'] ?? asset('img/default.png') }}" alt="Car Image">
@ -130,9 +129,6 @@
<small>Базовая ставка</small> <small>Базовая ставка</small>
@php @php
$tariffWithMin1 = collect($car['tariffs'])->firstWhere('min', 1); $tariffWithMin1 = collect($car['tariffs'])->firstWhere('min', 1);
$tariffWithMin3 = collect($car['tariffs'])->firstWhere('min', 3);
$tariffWithMin6 = collect($car['tariffs'])->firstWhere('min', 6);
$tariffWithMin15 = collect($car['tariffs'])->firstWhere('min', 15);
@endphp @endphp
<p class="m-0"> <p class="m-0">
@if($tariffWithMin1) @if($tariffWithMin1)
@ -143,18 +139,13 @@
<a href="#" class="btn btn-primary open-rent-modal" <a href="#" class="btn btn-primary open-rent-modal"
data-bs-toggle="modal" data-bs-toggle="modal"
data-bs-target="#rentModal" data-bs-target="#rentModal"
data-car='@json($car)'
data-photo="{{ $car['photo'] ?? asset('img/default.png') }}" data-photo="{{ $car['photo'] ?? asset('img/default.png') }}"
{{-- data-brand="{{ $car['brand'] }}"--}} data-brand="{{ $car['brand'] }}"
{{-- data-mark="{{ $car['mark'] }}"--}} data-mark="{{ $car['mark'] }}"
{{-- data-year="{{ $car['year'] }}"--}} data-year="{{ $car['year'] }}"
{{-- data-fuel="{{ $car['fuel_type'] }}"--}} data-fuel="{{ $car['fuel_type'] }}"
{{-- data-people="{{ $car['people'] }}"--}} data-people="{{ $car['people'] }}"
{{-- data-tariffWithMin1 ="{{ $tariffWithMin1['price'] ?? '' }}"--}} data-id="{{ $car['id'] ?? '' }}">
{{-- data-tariffWithMin3="{{ $tariffWithMin3['price'] ?? '' }}"--}}
{{-- data-tariffWithMin6="{{ $tariffWithMin6['price'] ?? '' }}"--}}
{{-- data-tariffWithMin15="{{ $tariffWithMin15['price'] ?? '' }}"--}}
>
@lang('Арендовать') @lang('Арендовать')
</a> </a>
@ -205,11 +196,11 @@
<div class="popup-block"> <div class="popup-block">
<p>@lang('Базовая суточная ставка на аренду данного автомобиля уменьшается в зависимости от срока аренды')</p> <p>@lang('Базовая суточная ставка на аренду данного автомобиля уменьшается в зависимости от срока аренды')</p>
<ul> <ul>
<li><b>1-2 дня:</b><span id="tariffWithMin1"></span></li> <li><b>16-30 дня:</b> 13000 </li>
<li><b>3-5 дней:</b><span id="tariffWithMin3"></span></li> <li><b>3-5 дня:</b> 16000 </li>
<li><b>6-15 дней:</b><span id="tariffWithMin6"></span></li> <li><b>1-2 дня:</b> 18000 </li>
<li><b>16-30 дней:</b><span id="tariffWithMin15"></span></li> <li><b>6-15 дня:</b> 14500 </li>
<li><b>30+ дней:</b><span id="tariffWithMin30"></span></li> <li><b>30+ дня:</b> 7800 </li>
</ul> </ul>
<p>@lang('Расчет итоговой суммы к оплате рассчитывается (кол-во дней * базовую ставку)')</p> <p>@lang('Расчет итоговой суммы к оплате рассчитывается (кол-во дней * базовую ставку)')</p>
</div> </div>
@ -260,26 +251,26 @@
<div class="title-small mb-3">Базовая ставка</div> <div class="title-small mb-3">Базовая ставка</div>
<div class="li-bl"> <div class="li-bl">
<div class="li-sp">Без скидки</div> <div class="li-sp">Без скидки</div>
<div class="li-sp" id="base-without"></div> <div class="li-sp" id="base-without">32000 </div>
</div> </div>
<div class="li-bl"> <div class="li-bl">
<div class="li-sp">Со скидкой</div> <div class="li-sp">Со скидки</div>
<div class="li-sp" id="base-with"></div> <div class="li-sp" id="base-with">25 000 </div>
</div> </div>
<hr> <hr>
<div class="title-small mb-3">Общая цена</div> <div class="title-small mb-3">Общая цена</div>
<div class="li-bl"> <div class="li-bl">
<div class="li-sp">Аренда без скидки</div> <div class="li-sp">Аренда без скидки</div>
<div class="li-sp" id="summ-without"></div> <div class="li-sp" id="summ-without">224 000 </div>
</div> </div>
<div class="li-bl"> <div class="li-bl">
<div class="li-sp">Аренда со скидкой</div> <div class="li-sp">Аренда со скидки</div>
<div class="li-sp" id="sunn-with"></div> <div class="li-sp" id="sunn-with">175 000 </div>
</div> </div>
<hr> <hr>
<div class="li-bl"> <div class="li-bl">
<div class="title">Итого</div> <div class="title">Итого</div>
<div class="title" id="total"></div> <div class="title" id="total">175 000 </div>
</div> </div>
</div> </div>
</div> </div>
@ -317,7 +308,6 @@
const endedAtPicker = new AirDatepicker('#ended_at', datepickerConfig); const endedAtPicker = new AirDatepicker('#ended_at', datepickerConfig);
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
const toggleBtn = document.getElementById('toggleFilterBtn'); const toggleBtn = document.getElementById('toggleFilterBtn');
const filterCard = document.getElementById('filterCard'); const filterCard = document.getElementById('filterCard');
@ -344,108 +334,58 @@
localStorage.setItem('filterOpened', isExpanded); localStorage.setItem('filterOpened', isExpanded);
}); });
});
const pickUpDateInput = document.getElementById('pick-up-date');
const returnDateInput = document.getElementById('return-date');
const daysInput = document.getElementById('days');
const today = new Date();
const yyyy = today.getFullYear();
const mm = String(today.getMonth() + 1).padStart(2, '0');
const dd = String(today.getDate()).padStart(2, '0');
const todayStr = `${yyyy}-${mm}-${dd}`;
pickUpDateInput.value = todayStr;
pickUpDateInput.setAttribute('min', todayStr);
function updateReturnDate() {
const pickUpDate = new Date(pickUpDateInput.value);
const rentalDays = parseInt(daysInput.value, 10);
if (!isNaN(rentalDays)) {
pickUpDate.setDate(pickUpDate.getDate() + rentalDays);
const returnYyyy = pickUpDate.getFullYear();
const returnMm = String(pickUpDate.getMonth() + 1).padStart(2, '0');
const returnDd = String(pickUpDate.getDate()).padStart(2, '0');
returnDateInput.value = `${returnYyyy}-${returnMm}-${returnDd}`;
}
}
updateReturnDate();
daysInput.addEventListener('input', updateReturnDate);
pickUpDateInput.addEventListener('change', updateReturnDate);
const modal = document.getElementById('rentModal');
document.querySelectorAll('.open-rent-modal').forEach(button => { document.querySelectorAll('.open-rent-modal').forEach(button => {
button.addEventListener('click', function () { button.addEventListener('click', function () {
const car = JSON.parse(this.getAttribute('data-car')); const photo = this.getAttribute('data-photo');
modal.setAttribute('data-car', JSON.stringify(car)); const brand = this.getAttribute('data-brand');
document.getElementById('modalCarImage').src = this.getAttribute('data-photo'); const mark = this.getAttribute('data-mark');
document.getElementById('modalCarTitle').innerText = `${car.brand} ${car.mark} - ${car.year}`; const year = this.getAttribute('data-year');
document.getElementById('modalFuel').innerHTML = `&nbsp;${car.fuel_type}`; const fuel = this.getAttribute('data-fuel');
document.getElementById('modalPeople').innerHTML = `&nbsp;${car.people} мест`; const people = this.getAttribute('data-people');
document.getElementById('mark_id').value = car.id; const id = this.getAttribute('data-id');
const tariff1 = car.tariffs.find(t => t.min === 1)?.price ?? 0; document.getElementById('modalCarImage').src = photo;
const tariff3 = car.tariffs.find(t => t.min === 3)?.price ?? 0; document.getElementById('modalCarTitle').innerText = `${brand} ${mark} - ${year}`;
const tariff6 = car.tariffs.find(t => t.min === 6)?.price ?? 0; document.getElementById('modalFuel').innerHTML = `&nbsp;${fuel}`;
const tariff15 = car.tariffs.find(t => t.min === 15)?.price ?? 0; document.getElementById('modalPeople').innerHTML = `&nbsp;${people} мест`;
document.getElementById('mark_id').value = id;
document.getElementById('tariffWithMin1').innerHTML = `&nbsp;${tariff1} ₸`;
document.getElementById('tariffWithMin3').innerHTML = `&nbsp;${tariff3} ₸`;
document.getElementById('tariffWithMin6').innerHTML = `&nbsp;${tariff6} ₸`;
document.getElementById('tariffWithMin15').innerHTML = `&nbsp;${tariff15} ₸`;
document.getElementById('tariffWithMin30').innerHTML = `&nbsp;${(tariff1 * 0.4).toFixed(0)} ₸`;
updateReturnDate();
}); });
const modal = document.getElementById('rentModal');
const pickUpDateInput = document.getElementById('pick-up-date');
const returnDateInput = document.getElementById('return-date');
const daysInput = document.getElementById('days');
const today = new Date();
const yyyy = today.getFullYear();
const mm = String(today.getMonth() + 1).padStart(2, '0');
const dd = String(today.getDate()).padStart(2, '0');
const todayStr = `${yyyy}-${mm}-${dd}`;
pickUpDateInput.value = todayStr;
pickUpDateInput.setAttribute('min', todayStr);
function updateReturnDate() {
const pickUpDate = new Date(pickUpDateInput.value);
const rentalDays = parseInt(daysInput.value, 10);
if (!isNaN(rentalDays)) {
pickUpDate.setDate(pickUpDate.getDate() + rentalDays);
const returnYyyy = pickUpDate.getFullYear();
const returnMm = String(pickUpDate.getMonth() + 1).padStart(2, '0');
const returnDd = String(pickUpDate.getDate()).padStart(2, '0');
returnDateInput.value = `${returnYyyy}-${returnMm}-${returnDd}`;
}
calculateOther(parseInt(daysInput.value));
}
daysInput.addEventListener('input', updateReturnDate);
pickUpDateInput.addEventListener('change', updateReturnDate);
function calculateOther(days) {
let discountRate = null;
if (!days || isNaN(days)) {
days = 1;
}
const car = JSON.parse(modal.getAttribute('data-car'));
const tariffs = car['tariffs'];
const baseRate = car.tariffs.find(t => t.min === 1)?.price ?? 0;
const matchedRange = tariffs.find(range => days >= range.min && days <= range.max);
const baseWith = document.getElementById('base-with');
const baseWithout = document.getElementById('base-without');
const summWithout = document.getElementById('summ-without');
const summWith = document.getElementById('sunn-with');
const total = document.getElementById('total');
if (matchedRange) {
discountRate = matchedRange.price;
} else if (days > 30) {
discountRate = baseWithout * 0.4;
}
const totalWithoutDiscount = baseRate * days;
const totalWithDiscount = discountRate * days;
baseWith.textContent = formatNumberWithSpaces(discountRate) + ' ₸';
baseWithout.textContent = formatNumberWithSpaces(baseRate) + ' ₸';
summWithout.textContent = formatNumberWithSpaces(totalWithoutDiscount) + ' ₸';
summWith.textContent = formatNumberWithSpaces(totalWithDiscount) + ' ₸';
total.textContent = formatNumberWithSpaces(totalWithDiscount) + ' ₸';
if (isNaN(days) || days < 1) {
summWithout.textContent = 0 + ' ₸';
summWith.textContent = 0 + ' ₸';
total.textContent = 0 + ' ₸';
}
}
function formatNumberWithSpaces(number) {
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}
}); });
});
document.querySelectorAll('input[name="class_filters[]"]').forEach(checkbox => { document.querySelectorAll('input[name="class_filters[]"]').forEach(checkbox => {
checkbox.addEventListener('click', function () { checkbox.addEventListener('click', function () {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -444,10 +444,6 @@ iframe {
border-radius: 10px; border-radius: 10px;
box-shadow: #0000001a 0 20px 25px -5px, #0000000a 0 10px 10px -5px; box-shadow: #0000001a 0 20px 25px -5px, #0000000a 0 10px 10px -5px;
transition: .3s all ease; transition: .3s all ease;
span {
color: inherit;
}
} }
} }