kaauh_ats/templates/recruitment/agency_access_link_detail.html
2025-11-02 20:17:21 +03:00

231 lines
11 KiB
HTML

{% extends 'agency_base.html' %}
{% load static i18n %}
{% block title %}{% trans "Access Link Details" %} - ATS{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<div class="d-flex justify-content-between align-items-center mb-4 px-3 py-3">
<div>
<h1 class="h3 mb-1" style="color: var(--kaauh-teal-dark); font-weight: 700;">
<i class="fas fa-link me-2"></i>
{% trans "Access Link Details" %}
</h1>
<p class="text-muted mb-0">{% trans "Secure access link for agency candidate submissions" %}</p>
</div>
<a href="{% url 'agency_assignment_detail' access_link.assignment.slug %}" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-1"></i> {% trans "Back to Assignment" %}
</a>
</div>
<div class="row">
<div class="col-md-8">
<div class="kaauh-card shadow-sm mb-4 px-3 py-3">
<div class="card-body">
<div class="d-flex justify-content-between align-items-start mb-3">
<h5 class="card-title mb-0">
<i class="fas fa-shield-alt me-2 text-primary"></i>
{% trans "Access Information" %}
</h5>
<span class="badge {% if access_link.is_active %}bg-success{% else %}bg-danger{% endif %}">
{% if access_link.is_active %}{% trans "Active" %}{% else %}{% trans "Inactive" %}{% endif %}
</span>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label class="form-label text-muted small">{% trans "Assignment" %}</label>
<div class="fw-semibold">
<a href="{% url 'agency_assignment_detail' access_link.assignment.slug %}" class="text-decoration-none">
{{ access_link.assignment.agency.name }} - {{ access_link.assignment.job.title }}
</a>
</div>
</div>
<div class="col-md-6 mb-3">
<label class="form-label text-muted small">{% trans "Agency" %}</label>
<div class="fw-semibold">{{ access_link.assignment.agency.name }}</div>
</div>
<div class="col-md-6 mb-3">
<label class="form-label text-muted small">{% trans "Created At" %}</label>
<div class="fw-semibold">{{ access_link.created_at|date:"Y-m-d H:i" }}</div>
</div>
<div class="col-md-6 mb-3">
<label class="form-label text-muted small">{% trans "Expires At" %}</label>
<div class="fw-semibold {% if access_link.is_expired %}text-danger{% endif %}">
{{ access_link.expires_at|date:"Y-m-d H:i" }}
{% if access_link.is_expired %}
<span class="badge bg-danger ms-2">{% trans "Expired" %}</span>
{% endif %}
</div>
</div>
<div class="col-md-6 mb-3">
<label class="form-label text-muted small">{% trans "Max Candidates" %}</label>
<div class="fw-semibold">{{ access_link.assignment.max_candidates }}</div>
</div>
<div class="col-md-6 mb-3">
<label class="form-label text-muted small">{% trans "Candidates Submitted" %}</label>
<div class="fw-semibold">{{ access_link.assignment.candidates_submitted }}</div>
</div>
</div>
</div>
</div>
<div class="kaauh-card shadow-sm">
<div class="card-body px-3 py-3">
<h5 class="card-title mb-3">
<i class="fas fa-key me-2 text-warning"></i>
{% trans "Access Credentials" %}
</h5>
<div class="mb-3">
<label class="form-label text-muted small">{% trans "Login URL" %}</label>
<div class="input-group">
<input type="text" readonly value="{{ request.scheme }}://{{ request.get_host }}{% url 'agency_portal_login' %}"
class="form-control font-monospace" id="loginUrl">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('loginUrl')">
<i class="fas fa-copy"></i>
</button>
</div>
</div>
<div class="mb-3">
<label class="form-label text-muted small">{% trans "Access Token" %}</label>
<div class="input-group">
<input type="text" readonly value="{{ access_link.unique_token }}"
class="form-control font-monospace" id="accessToken">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('accessToken')">
<i class="fas fa-copy"></i>
</button>
</div>
</div>
<div class="mb-3">
<label class="form-label text-muted small">{% trans "Password" %}</label>
<div class="input-group">
<input type="text" readonly value="{{ access_link.access_password }}"
class="form-control font-monospace" id="accessPassword">
<button class="btn btn-outline-secondary" type="button" onclick="copyToClipboard('accessPassword')">
<i class="fas fa-copy"></i>
</button>
</div>
</div>
<div class="alert alert-info">
<i class="fas fa-info-circle me-2"></i>
{% trans "Share these credentials securely with the agency. They can use this information to log in and submit candidates." %}
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="kaauh-card shadow-sm mb-4 px-3 py-3">
<div class="card-body">
<h5 class="card-title mb-3">
<i class="fas fa-chart-line me-2 text-info"></i>
{% trans "Usage Statistics" %}
</h5>
<div class="mb-3">
<div class="d-flex justify-content-between align-items-center mb-2">
<span class="text-muted">{% trans "Total Accesses" %}</span>
<span class="fw-semibold">{{ access_link.access_count }}</span>
</div>
<div class="d-flex justify-content-between align-items-center mb-2">
<span class="text-muted">{% trans "Last Accessed" %}</span>
<span class="fw-semibold">
{% if access_link.last_accessed %}
{{ access_link.last_accessed|date:"Y-m-d H:i" }}
{% else %}
<span class="text-muted">{% trans "Never" %}</span>
{% endif %}
</span>
</div>
<div class="d-flex justify-content-between align-items-center">
<span class="text-muted">{% trans "Submissions" %}</span>
<span class="fw-semibold">{{ access_link.assignment.candidates_submitted }}/{{ access_link.assignment.max_candidates }}</span>
</div>
</div>
<div class="progress" style="height: 8px;">
{% widthratio access_link.assignment.candidates_submitted access_link.assignment.max_candidates 100 as progress_percent %}
<div class="progress-bar {% if progress_percent >= 80 %}bg-danger{% elif progress_percent >= 60 %}bg-warning{% else %}bg-success{% endif %}"
style="width: {{ progress_percent }}%"></div>
</div>
</div>
</div>
<div class="kaauh-card shadow-sm px-3 py-3">
<div class="card-body">
<h5 class="card-title mb-3">
<i class="fas fa-cog me-2 text-secondary"></i>
{% trans "Actions" %}
</h5>
<div class="d-grid gap-2">
<a href="{% url 'agency_assignment_detail' access_link.assignment.slug %}" class="btn btn-outline-secondary btn-sm">
<i class="fas fa-eye me-1"></i> {% trans "View Assignment" %}
</a>
{% if access_link.is_active and not access_link.is_expired %}
<button class="btn btn-warning btn-sm" onclick="confirmDeactivate()">
<i class="fas fa-pause me-1"></i> {% trans "Deactivate" %}
</button>
{% endif %}
{% if access_link.is_expired or not access_link.is_active %}
<button class="btn btn-success btn-sm" onclick="confirmReactivate()">
<i class="fas fa-play me-1"></i> {% trans "Reactivate" %}
</button>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block customJS %}
<script>
function copyToClipboard(elementId) {
const element = document.getElementById(elementId);
element.select();
document.execCommand('copy');
// Show feedback
const button = element.nextElementSibling;
const originalHTML = button.innerHTML;
button.innerHTML = '<i class="fas fa-check"></i>';
button.classList.add('btn-success');
button.classList.remove('btn-outline-secondary');
setTimeout(() => {
button.innerHTML = originalHTML;
button.classList.remove('btn-success');
button.classList.add('btn-outline-secondary');
}, 2000);
}
function confirmDeactivate() {
if (confirm('{% trans "Are you sure you want to deactivate this access link? Agencies will no longer be able to use it." %}')) {
// Submit form to deactivate
window.location.href = '{% url "agency_access_link_deactivate" access_link.slug %}';
}
}
function confirmReactivate() {
if (confirm('{% trans "Are you sure you want to reactivate this access link?" %}')) {
// Submit form to reactivate
window.location.href = '{% url "agency_access_link_reactivate" access_link.slug %}';
}
}
</script>
{% endblock %}