122 lines
6.7 KiB
PHP
122 lines
6.7 KiB
PHP
<div class="modal fade" id="applyInternshipModal" tabindex="-1" aria-labelledby="applyInternshipModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content rounded-3">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="applicationModalLabel">{{ __('Apply for') }} <span id="jobTitle"></span></h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ __('Close') }}"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<h6 id="jobLocation"></h6>
|
|
<p id="jobSalary"></p>
|
|
<p id="jobDescription"></p>
|
|
<form id="applicationForm" enctype="multipart/form-data" action="{{ $jobType === 'internship' ? route('internship.store') : route('career.store') }}" method="POST">
|
|
@csrf
|
|
@if($jobType === 'internship')
|
|
<input type="hidden" name="internship_id" id="jobIdInput" value="{{ $jobId }}">
|
|
@else
|
|
<input type="hidden" name="career_id" id="jobIdInput" value="{{ $jobId }}">
|
|
@endif
|
|
<div class="row">
|
|
<div class="col-md-6 mb-3">
|
|
<label for="name" class="form-label">{{ __('Name') }} <span> *</span></label>
|
|
<input type="text" class="form-control" id="name" name="name" required>
|
|
</div>
|
|
<div class="col-md-6 mb-3">
|
|
<label for="birthdate" class="form-label">{{ __('Birthdate') }} <span> *</span></label>
|
|
<input type="date" class="form-control" id="birthdate" name="birthdate" required>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6 mb-3">
|
|
<label for="email" class="form-label">{{ __('Email') }} <span> *</span></label>
|
|
<input type="email" class="form-control" id="email" name="email" required>
|
|
</div>
|
|
<div class="col-md-6 mb-3">
|
|
<label for="phone_number" class="form-label">{{ __('Phone Number') }} <span> *</span></label>
|
|
<input type="text" class="form-control" id="phone_number" name="phone_number" required>
|
|
</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="resume_file" class="form-label">{{ __('Resume (PDF, DOC, DOCX)') }} <span> *</span></label>
|
|
<input type="file" class="form-control" id="resume_file" name="resume_file" accept=".pdf,.doc,.docx" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="cover_letter" class="form-label">{{ __('Cover Letter (Optional)') }}</label>
|
|
<textarea class="form-control" id="cover_letter" name="cover_letter" rows="5"></textarea>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary">{{ __('Submit Application') }}</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@push('scripts')
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
var applicationModal = document.getElementById('applyInternshipModal'); // Changed ID here
|
|
if (applicationModal) { // Add a check for modal existence
|
|
applicationModal.addEventListener('show.bs.modal', function (event) {
|
|
var button = event.relatedTarget; // Button that triggered the modal
|
|
var jobId = button.getAttribute('data-job-id'); // Generic attribute for job ID
|
|
var jobType = button.getAttribute('data-job-type'); // Generic attribute for job type
|
|
|
|
var modalTitle = applicationModal.querySelector('#jobTitle');
|
|
var modalLocation = applicationModal.querySelector('#jobLocation');
|
|
var modalSalary = applicationModal.querySelector('#jobSalary');
|
|
var modalDescription = applicationModal.querySelector('#jobDescription');
|
|
var jobIdInput = applicationModal.querySelector('#jobIdInput');
|
|
var applicationForm = applicationModal.querySelector('#applicationForm');
|
|
|
|
// Set dynamic values
|
|
modalTitle.textContent = button.getAttribute('data-' + jobType + '-title');
|
|
modalLocation.textContent = '{{ __('Location') }}: ' + button.getAttribute('data-' + jobType + '-location');
|
|
modalSalary.textContent = '{{ __('Salary') }}: ' + button.getAttribute('data-' + jobType + '-salary') + ' / {{ __('Per monthly') }}';
|
|
modalDescription.textContent = button.getAttribute('data-' + jobType + '-description');
|
|
jobIdInput.value = jobId;
|
|
|
|
// Set form action dynamically
|
|
if (jobType === 'internship') {
|
|
applicationForm.action = '{{ route('internship.store') }}';
|
|
jobIdInput.name = 'internship_id';
|
|
} else if (jobType === 'career') {
|
|
applicationForm.action = '{{ route('applications.store') }}'; // Assuming careers still use applications.store
|
|
jobIdInput.name = 'career_id';
|
|
}
|
|
});
|
|
|
|
// Handle form submission with AJAX
|
|
document.getElementById('applicationForm').addEventListener('submit', function (e) {
|
|
e.preventDefault();
|
|
|
|
let form = e.target;
|
|
let formData = new FormData(form);
|
|
|
|
fetch(form.action, {
|
|
method: 'POST',
|
|
body: formData,
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content')
|
|
}
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.message) {
|
|
alert(data.message);
|
|
var modal = bootstrap.Modal.getInstance(applicationModal);
|
|
modal.hide();
|
|
form.reset();
|
|
} else {
|
|
alert('{{ __('Error') }}: ' + data.message);
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error('{{ __('Error') }}:', error);
|
|
alert('{{ __('An error occurred. Please try again.') }}');
|
|
});
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
@endpush
|