File "change-order.blade.php"
Full Path: /home/trinadezambia/public_html/admin_panel/resources/views/routes/change-order.blade.php
File size: 5.97 KB
MIME-type: text/html
Charset: utf-8
@extends('layouts.master')
@section('title')
{{ __('change_order') }}
@endsection
@section('content')
<div class="content-wrapper">
<div class="page-header">
<h3 class="page-title">
{{ __('change_order') }}: {{ $route->name }}
</h3>
<div class="d-flex justify-content-end">
<a class="btn btn-sm btn-theme" href="{{ route('routes.index') }}">{{ __('back') }}</a>
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-12 h-100">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">{{ __('change_order') }}</h4>
{{-- <form action="{{ route('routes.update-pickup-order', $route->id) }}" class="edit-form" id="edit-form" method="POST">
@csrf
@method('PUT') --}}
<div class="row">
<div class="col-md-12 h-100">
<div class="border border-theme p-4">
<div id="profile-list-left" class="py-2 h-100">
@if (isset($route->routePickupPoints) && $route->routePickupPoints->isNotEmpty())
@foreach ($route->routePickupPoints->sortBy('order') as $routePickupPoint)
<div class="card rounded mb-2 border border-secondary" data-id="{{ $routePickupPoint->id }}">
<div class="card-body p-3 d-flex align-items-center">
<div class="order-pickup-point me-3">
{{ $routePickupPoint->order }}
</div>
<div class="media-body">
<h6 class="mb-1">
{{ $routePickupPoint->pickupPoint->name }}
</h6>
<p class="mb-0 text-muted">
{{ $routePickupPoint->pickup_time }} -
{{ $routePickupPoint->drop_time }}
</p>
</div>
</div>
{{-- hidden input to capture order in form --}}
<input type="hidden" name="pickup_points[{{ $routePickupPoint->id }}]"
value="{{ $routePickupPoint->order }}">
</div>
@endforeach
@else
<div class="text-center text-muted">
<p>No pickup points found for this route.</p>
</div>
@endif
</div>
</div>
</div>
</div>
{{-- <div class="d-flex justify-content-end">
<input type="submit" class="btn btn-theme mt-3" value="{{ __('update') }}">
</div>
</form> --}}
</div>
</div>
</div>
</div>
</div>
@endsection
@section('script')
<script>
let dragulaInstance = null;
$(document).ready(function() {
initializeDragula();
});
function initializeDragula() {
if (dragulaInstance) {
dragulaInstance.destroy();
}
dragulaInstance = dragula([document.getElementById('profile-list-left')]);
dragulaInstance.on('drop', function(el, target, source, sibling) {
updateOrderNumbers();
saveOrderToDB();
});
dragulaInstance.on('drag', function(el) {
el.classList.add('dragging');
});
dragulaInstance.on('dragend', function(el) {
el.classList.remove('dragging');
});
}
// Update order numbers + hidden inputs
function updateOrderNumbers() {
$('#profile-list-left .card').each(function(index) {
const order = index + 1;
$(this).find('.order-pickup-point').text(order);
$(this).find('input[type="hidden"]').val(order);
});
}
// Send updated order to DB via AJAX
function saveOrderToDB() {
let pickupPoints = {};
$('#profile-list-left .card').each(function(index) {
const id = $(this).data('id');
pickupPoints[id] = index + 1;
});
$.ajax({
url: "{{ route('routes.update-pickup-order', $route->id) }}",
method: "PUT",
data: {
pickup_points: pickupPoints
},
success: function(response) {
if (!response.error) {
showSuccessToast(response.message);
} else {
showErrorToast(response.message);
}
},
error: function() {
showErrorToast('Something went wrong!');
}
});
}
</script>
@endsection