HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/dashboard.orbiwheels.com/resources/views/transporter/driver/edit.blade.php
@extends('layout.transporter_master')

@section('content')
    <div class="right_col" role="main">
        <div class="row">
            <div class="col-md-12 col-sm-12 ">
                <div class="x_panel">
                    <div class="x_title">
                        <h2>Driver <small>Edit</small></h2>
                        <ul class="nav navbar-right panel_toolbox">
                            <li>
                                <a href="{{ route('driver.index') }}" class="closeBtn"> <i class="fa fa-arrow-left"></i> Back
                                </a>
                            </li>
                        </ul>
                        <div class="clearfix"></div>
                    </div>

                    <div class="x_content">
                        <form class="form-label-left input_mask" action="{{ route('driver.update', $driver->id) }}"
                            method="POST" enctype="multipart/form-data">
                            @csrf
                            @method('PUT')

                            <span class="section">General Details</span>
                            <div class="row">
                                {{-- Name --}}
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Name *</label>
                                    <input type="text" class="form-control" name="name"
                                        value="{{ old('name', $driver->name) }}" placeholder="Name">
                                    @error('name')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>

                                {{-- Email --}}
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Email *</label>
                                    <input type="text" class="form-control" name="email"
                                        value="{{ old('email', $driver->email) }}" placeholder="Email">
                                    @error('email')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>

                                {{-- Phone --}}
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Phone *</label>
                                    <input type="tel" class="form-control" name="phone"
                                        value="{{ old('phone', $driver->phone) }}" placeholder="Phone">
                                    @error('phone')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>

                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Alternate Number:</label>
                                    <input type="tel" class="form-control" name="alternate_number"
                                        value="{{ old('alternate_number', $driver->alternate_number) }}">
                                    @error('alternate_number')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Age *:</label>
                                    <input type="text" class="form-control" name="age"
                                        value="{{ old('age', $driver->age ?? '') }}">
                                    @error('age')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>

                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Gender *:</label>
                                    <select name="gender" class="form-control">
                                        <option value="">Select Gender</option>
                                        <option value="male"
                                            {{ old('gender', $driver->gender) == 'male' ? 'selected' : '' }}>Male</option>
                                        <option value="female"
                                            {{ old('gender', $driver->gender) == 'female' ? 'selected' : '' }}>Female
                                        </option>
                                        <option value="other"
                                            {{ old('gender', $driver->gender) == 'other' ? 'selected' : '' }}>Other
                                        </option>
                                    </select>
                                    @error('gender')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>

                                {{-- Profile Image --}}
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Profile *</label>
                                    <input type="file" class="form-control" name="profile_image">
                                    {{-- @if ($driver->image)
                                        <a href="{{ asset('storage/' . $driver->image) }}"
                                            class="btn btn-primary btn-sm mt-2" target="_blank">
                                            <i class="fa fa-eye"></i> View Profile
                                        </a>
                                    @endif --}}
                                    @error('profile_image')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Status *:</label>
                                    <select name="status" class="form-control">
                                        <option value="active"
                                            {{ old('status', $driver->status) == 'active' ? 'selected' : '' }}>Active
                                        </option>
                                        <option value="inactive"
                                            {{ old('status', $driver->status) == 'inactive' ? 'selected' : '' }}>Inactive
                                        </option>
                                    </select>
                                    @error('status')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>Experience:</label>
                                    <input type="text" class="form-control" name="experience"
                                        value="{{ old('experience', $driver->experience) }}">
                                    @error('experience')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>
                                <div class="col-md-3 col-sm-6 form-group">
                                    <label>About:</label>
                                    <textarea class="form-control" name="about">{{ old('about', $driver->about) }}</textarea>
                                    @error('about')
                                        <label class="text-danger">{{ $message }}</label>
                                    @enderror
                                </div>

                            </div>

                            <hr>
                            <span class="section">Driver Documents</span>

                            {{-- Dynamic Documents --}}
                            <div class="row">
                                @foreach ($driver->documents as $i => $doc)
                                    <div class="col-md-3 mb-3" id="doc-card-{{ $doc->id }}">
                                        <div class="card shadow-sm position-relative">
                                            @if (!$doc->is_verified)
                                                <button type="button"
                                                    class="btn btn-danger btn-sm position-absolute m-2 delete-doc"
                                                    style="right: 0; top: 0;" data-id="{{ $doc->id }}">
                                                    ×
                                                </button>
                                            @endif
                                            <div class="card-body" style="height:150px;">

                                                <h6 class="card-title">
                                                    {{ App\Models\Document::documentTypes($doc->doc_type) }}
                                                    @if ($doc->is_verified)
                                                        <span class="badge badge-success">Verified</span>
                                                    @else
                                                        <span class="badge badge-warning">Pending</span>
                                                    @endif
                                                </h6>

                                                <p class="mb-1"><strong>Number:</strong> {{ $doc->doc_number }}</p>

                                                @if ($doc->doc_type == 'dl' && $doc->expiry_date)
                                                    <p class="mb-1"><strong>Expiry:</strong> {{ $doc->expiry_date }}</p>
                                                @endif

                                                @if ($doc->file_url)
                                                    <a href="{{ asset('storage/' . $doc->file_url) }}"
                                                        class="btn btn-primary btn-sm m-3 position-absolute"
                                                        style="left: 0; bottom: 0;" target="_blank">
                                                        <i class="fa fa-eye"></i> View File
                                                    </a>
                                                @endif
                                            </div>
                                        </div>
                                    </div>
                                @endforeach
                            </div>
                            <div id="documents-wrapper" class="">

                            </div>

                            {{-- Add More button --}}
                            <button type="button" id="add-document" class="btn btn-primary btn-sm mt-2">+ Add
                                More</button>

                            <div class="form-group row mt-3">
                                <div class="col-md-9 col-sm-9 offset-md-10">
                                    <button class="btn btn-primary" type="reset">Reset</button>
                                    <button type="submit" class="btn btn-success">Submit</button>
                                </div>
                            </div>
                        </form>
                    </div>

                </div>
            </div>
        </div>
    </div>
@endsection

@push('script')
    <script>
        let existingDocs = @json($driver->documents->pluck('doc_type')->toArray());
        let docIndex = {{ $driver->documents->count() }};

        let allDocTypes = {
            'dl': 'Driving License',
            'aadhar': 'Aadhar Card',
            'pan': 'PAN Card',
            'passport': 'Passport'
        };

        // ✅ Function to get all selected types (existing + current form)
        function getSelectedDocTypes() {
            let selected = [...existingDocs];
            $('.doc-type').each(function() {
                let val = $(this).val();
                if (val) selected.push(val);
            });
            return selected;
        }

        // Add new document row
        $('#add-document').click(function() {
            const idx = docIndex;

            let selected = getSelectedDocTypes();
            let availableDocTypes = Object.keys(allDocTypes).filter(type => !selected.includes(type));

            if (availableDocTypes.length === 0) {
                Swal.fire('Info', 'All document types already uploaded!', 'info');
                return;
            }

            let optionsHtml = '<option value="">Select Document Type</option>';
            availableDocTypes.forEach(type => {
                optionsHtml += `<option value="${type}">${allDocTypes[type]}</option>`;
            });

            let newRow = `
            <div class="row document-row mb-2" data-index="${idx}">
                <div class="col-md-3 form-group">
                    <label>Document Type *</label>
                    <select name="documents[${idx}][type]" class="form-control doc-type">
                        ${optionsHtml}
                    </select>
                </div>

                <div class="col-md-3 form-group">
                    <label>Document Number *</label>
                    <input type="text" name="documents[${idx}][number]" class="form-control" placeholder="Document Number">
                </div>

                <div class="col-md-3 form-group">
                    <label>Document Photo *</label>
                    <input type="file" name="documents[${idx}][file]" class="form-control">
                </div>

                <div class="col-md-2 form-group expiry-date d-none">
                    <label>Expiry Date *</label>
                    <input type="date" name="documents[${idx}][expiry_date]" class="form-control">
                </div>

                <div class="col-md-1 form-group d-flex align-items-center mt-4">
                    <button type="button" class="btn btn-danger btn-sm remove-doc">X</button>
                </div>
            </div>`;

            $('#documents-wrapper').append(newRow);

            docIndex++;
        });


        $(document).on('click', '.remove-doc', function() {
            $(this).closest('.document-row').remove();
        });

        $(document).on('change', '.doc-type', function() {
            let row = $(this).closest('.document-row');
            let type = $(this).val();

            if (type == 'dl') {
                row.find('.expiry-date').removeClass('d-none');
            } else {
                row.find('.expiry-date').addClass('d-none');
            }
        });

        $(document).on('click', '.delete-doc', function() {
            let docId = $(this).data('id');
            let card = $('#doc-card-' + docId);

            Swal.fire({
                title: 'Are you sure?',
                text: "This document will be permanently deleted!",
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#d33',
                cancelButtonColor: '#6c757d',
                confirmButtonText: 'Yes, delete it!',
                cancelButtonText: 'Cancel'
            }).then((result) => {
                if (result.isConfirmed) {
                    $.ajax({
                        url: '/driver/document/delete/' + docId,
                        type: 'DELETE',
                        data: {
                            _token: '{{ csrf_token() }}'
                        },
                        success: function(response) {
                            if (response.success) {
                                card.remove();
                                Swal.fire(
                                    'Deleted!',
                                    response.message,
                                    'success'
                                ).then(() => {
                                    location.reload();
                                });
                            } else {
                                Swal.fire(
                                    'Error!',
                                    'Something went wrong.',
                                    'error'
                                );
                            }
                        },
                        error: function() {
                            Swal.fire(
                                'Error!',
                                'Unable to delete document.',
                                'error'
                            );
                        }
                    });
                }
            });
        });
    </script>
@endpush