| N° Pedido | @@ -712,7 +779,7 @@ require_once 'layout_header.php';
-
+
diff --git a/db/migrations/091_add_color_hex_to_users.sql b/db/migrations/091_add_color_hex_to_users.sql
new file mode 100644
index 00000000..c8510aee
--- /dev/null
+++ b/db/migrations/091_add_color_hex_to_users.sql
@@ -0,0 +1,3 @@
+-- Add configurable color for call center assessors in the assignment panel.
+ALTER TABLE `users`
+ ADD COLUMN IF NOT EXISTS `color_hex` VARCHAR(7) NULL AFTER `nombre_asesor`;
diff --git a/gestiones_callcenter.php b/gestiones_callcenter.php
index 66faab62..43482b28 100644
--- a/gestiones_callcenter.php
+++ b/gestiones_callcenter.php
@@ -414,6 +414,28 @@ try {
}));
}
+ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'update_assessor_color') {
+ $assessorKey = cc_test_normalize_user_key((string) ($_POST['assessor_key'] ?? ''));
+ if ($assessorKey === '' || !isset($assessors[$assessorKey])) {
+ throw new RuntimeException('No se encontró la asesora seleccionada.');
+ }
+
+ $colorHex = cc_test_normalize_hex_color((string) ($_POST['color_hex'] ?? ''));
+ if ($colorHex === null) {
+ throw new RuntimeException('Selecciona un color válido.');
+ }
+
+ cc_test_ensure_column($pdo, 'users', 'color_hex', 'VARCHAR(7) NULL AFTER `nombre_asesor`');
+
+ $stmtUpdateAssessorColor = $pdo->prepare('UPDATE users SET color_hex = :color_hex WHERE id = :id LIMIT 1');
+ $stmtUpdateAssessorColor->bindValue(':color_hex', $colorHex, PDO::PARAM_STR);
+ $stmtUpdateAssessorColor->bindValue(':id', (int) ($assessors[$assessorKey]['id'] ?? 0), PDO::PARAM_INT);
+ $stmtUpdateAssessorColor->execute();
+
+ $noticeMessage = 'Color actualizado para ' . ($assessors[$assessorKey]['label'] ?? $assessorKey) . '.';
+ $assessors[$assessorKey]['color_hex'] = $colorHex;
+ }
+
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'auto_assign_cupo') {
$openStates = cc_test_open_states();
@@ -690,6 +712,21 @@ try {
'remaining' => $remaining,
'text_class' => (string) ($styles['text'] ?? 'text-secondary'),
'badge_class' => (string) ($styles['badge'] ?? 'bg-secondary-subtle text-secondary-emphasis border'),
+ 'accent_style' => cc_test_assessor_css_vars($assessorKey, $assessors[$assessorKey]['color_hex'] ?? null),
+ ];
+ }
+
+ $assessorUiCatalog = [];
+ foreach ($orderedAssessorKeys as $assessorKey) {
+ if (!isset($assessors[$assessorKey])) {
+ continue;
+ }
+
+ $catalogColorHex = cc_test_assessor_effective_color_hex($assessorKey, $assessors[$assessorKey]['color_hex'] ?? null);
+ $assessorUiCatalog[$assessorKey] = [
+ 'label' => (string) ($assessors[$assessorKey]['label'] ?? $assessorKey),
+ 'color_hex' => $catalogColorHex,
+ 'contrast_hex' => cc_test_assessor_contrast_text_hex($catalogColorHex),
];
}
@@ -798,8 +835,62 @@ require_once 'layout_header.php';
box-shadow: inset 4px 0 0 #0d6efd;
}
+.cc-callcenter-assessor-summary-card {
+ border-left: .45rem solid var(--cc-assessor-accent, #adb5bd) !important;
+ background-color: rgba(var(--cc-assessor-accent-rgb, 173, 181, 189), .16);
+ box-shadow: inset 0 0 0 1px rgba(var(--cc-assessor-accent-rgb, 173, 181, 189), .22);
+}
+
.cc-callcenter-assign-form {
- padding: .5rem !important;
+ width: 100%;
+ padding: .72rem !important;
+ border: 1px solid rgba(var(--cc-assessor-accent-rgb, 173, 181, 189), .38) !important;
+ border-left: .55rem solid var(--cc-assessor-accent, #adb5bd);
+ background-color: var(--cc-assessor-accent, #adb5bd);
+ color: var(--cc-assessor-accent-contrast, #212529);
+ box-shadow: none;
+}
+
+.cc-callcenter-assign-form.is-unassigned {
+ border-color: rgba(0, 0, 0, .10) !important;
+ border-left-color: #FFFFFF;
+ background-color: #FFFFFF;
+ color: #212529;
+ box-shadow: 0 .65rem 1.4rem rgba(15, 23, 42, .06), inset 0 0 0 1px rgba(0, 0, 0, .05);
+}
+
+.cc-callcenter-assign-form .text-muted {
+ color: var(--cc-assessor-accent-contrast, #212529) !important;
+ opacity: .88;
+}
+
+.cc-callcenter-assign-form.is-unassigned .text-muted {
+ color: #6C757D !important;
+ opacity: 1;
+}
+
+.cc-callcenter-assign-form .cc-callcenter-assessor-badge {
+ background-color: rgba(0, 0, 0, .16);
+ color: var(--cc-assessor-accent-contrast, #212529);
+ border-color: rgba(0, 0, 0, .16) !important;
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08);
+}
+
+.cc-callcenter-assign-form.is-unassigned .cc-callcenter-assessor-badge {
+ background-color: #F8F9FA;
+ color: #6C757D;
+ border-color: rgba(0, 0, 0, .12) !important;
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .04);
+}
+
+.cc-callcenter-assign-form .cc-callcenter-assessor-badge .cc-callcenter-color-dot {
+ border: 1px solid rgba(0, 0, 0, .18);
+ box-shadow: none;
+}
+
+.cc-callcenter-assign-form.is-unassigned .cc-callcenter-assessor-badge .cc-callcenter-color-dot {
+ background: #ADB5BD;
+ border-color: rgba(0, 0, 0, .12);
}
.cc-callcenter-assign-row {
@@ -807,20 +898,126 @@ require_once 'layout_header.php';
flex-wrap: nowrap;
align-items: center;
gap: .35rem;
+ padding: .5rem;
+ border-radius: .95rem;
+ background-color: transparent;
+ box-shadow: none;
+}
+
+.cc-callcenter-assign-form.is-unassigned .cc-callcenter-assign-row {
+ background-color: #FFFFFF;
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08);
}
.cc-callcenter-assign-row .form-select {
- min-width: 11rem;
- flex: 1 1 11rem;
+ min-width: 10rem;
+ flex: 1 1 10rem;
+ border-color: rgba(0, 0, 0, .18);
+ background-color: rgba(0, 0, 0, .12);
+ color: var(--cc-assessor-accent-contrast, #212529);
+ font-weight: 700;
+}
+
+.cc-callcenter-assign-form.is-unassigned .cc-callcenter-assign-row .form-select {
+ border-color: rgba(0, 0, 0, .16);
+ background-color: #FFFFFF;
+ color: #212529;
+}
+
+.cc-callcenter-assign-row .form-select:focus {
+ border-color: rgba(0, 0, 0, .24);
+ box-shadow: 0 0 0 .2rem rgba(0, 0, 0, .12);
}
.cc-callcenter-assign-submit {
flex: 0 0 auto;
white-space: nowrap;
+ border-color: rgba(0, 0, 0, .18) !important;
+ background-color: rgba(0, 0, 0, .16) !important;
+ color: var(--cc-assessor-accent-contrast, #212529) !important;
+ font-weight: 700;
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08);
}
-.cc-callcenter-actions {
- gap: .35rem !important;
+.cc-callcenter-assessor-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: .3rem;
+ background-color: var(--cc-assessor-accent, #adb5bd);
+ color: var(--cc-assessor-accent-contrast, #212529);
+ border-color: var(--cc-assessor-accent, #adb5bd) !important;
+ font-weight: 600;
+}
+
+.cc-callcenter-color-trigger {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: .3rem;
+ padding: .2rem .55rem;
+ white-space: nowrap;
+ border-color: rgba(0, 0, 0, .18) !important;
+ background-color: rgba(0, 0, 0, .12);
+ color: var(--cc-assessor-accent-contrast, #212529);
+ font-weight: 700;
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08);
+}
+
+.cc-callcenter-color-trigger:hover:not(:disabled),
+.cc-callcenter-assign-submit:hover:not(:disabled) {
+ filter: brightness(.97);
+ transform: translateY(-1px);
+}
+
+.cc-callcenter-color-trigger:disabled {
+ opacity: .72;
+ background-color: rgba(0, 0, 0, .10);
+}
+
+.cc-callcenter-assign-form.is-unassigned .cc-callcenter-color-trigger {
+ background-color: #F1F3F5;
+ color: #6C757D;
+ border-color: rgba(0, 0, 0, .12) !important;
+ box-shadow: none;
+}
+
+.cc-callcenter-assign-form.is-unassigned .cc-callcenter-color-trigger:disabled {
+ background-color: #F1F3F5;
+}
+
+.cc-callcenter-color-trigger .cc-callcenter-color-dot {
+ width: .72rem;
+ height: .72rem;
+ border-radius: 999px;
+ background: var(--cc-assessor-accent, #adb5bd);
+ border: 1px solid rgba(0, 0, 0, .24);
+ box-shadow: none;
+ flex: 0 0 auto;
+}
+
+.cc-callcenter-assign-form.is-unassigned .cc-callcenter-color-trigger .cc-callcenter-color-dot {
+ background: #ADB5BD;
+ border-color: rgba(0, 0, 0, .16);
+}
+
+.cc-callcenter-assessor-badge .cc-callcenter-color-dot {
+ width: .55rem;
+ height: .55rem;
+ border-radius: 999px;
+ background: var(--cc-assessor-accent-contrast, #212529);
+ border: 1px solid rgba(255, 255, 255, .35);
+ box-shadow: none;
+ flex: 0 0 auto;
+}
+
+.cc-callcenter-assessor-summary-card .cc-callcenter-color-dot {
+ width: .55rem;
+ height: .55rem;
+ border-radius: 999px;
+ background: var(--cc-assessor-accent, #adb5bd);
+ border: 1px solid rgba(0, 0, 0, .12);
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22);
+ flex: 0 0 auto;
}
.cc-callcenter-action-btn {
@@ -1015,10 +1212,13 @@ require_once 'layout_header.php';
-
-
-
+
-
- Pendientes:
+
+
+
+
+ Pendientes:
Cupo restante ()
@@ -1171,51 +1371,46 @@ require_once 'layout_header.php';
}
}
- $assignFormClass = 'border rounded-3 p-1 text-start shadow-sm cc-callcenter-assign-form';
- if ($unassigned) {
- $assignFormClass .= ' bg-light';
- } elseif ($assignedAssessorKey === 'KARINA') {
- $assignFormClass .= ' bg-primary-subtle border-primary';
- } elseif ($assignedAssessorKey === 'ESTEFANYA') {
- $assignFormClass .= ' bg-success-subtle border-success';
- } elseif ($assignedAssessorKey === 'CARMEN') {
- $assignFormClass .= ' bg-warning-subtle border-warning';
- } else {
- $assignFormClass .= ' bg-secondary-subtle border-secondary';
- }
+ $selectedAssessorKeyForSelect = $assignedAssessorKey !== null
+ ? (string) $assignedAssessorKey
+ : '';
- if ($unassigned) {
- $selectedAssessorKeyForSelect = !empty($recommendedAssessorKey) ? (string) $recommendedAssessorKey : '';
- } else {
- $selectedAssessorKeyForSelect = $assignedAssessorKey !== null ? (string) $assignedAssessorKey : '';
- }
+ $assignAccentKey = $selectedAssessorKeyForSelect !== ''
+ ? (string) $selectedAssessorKeyForSelect
+ : ($assignedAssessorKey !== null ? (string) $assignedAssessorKey : '');
- $buttonLabel = $unassigned
- ? 'Asignar pedido'
- : ($assignedAssessorKey !== null ? 'Guardar asignación' : 'Desasignar');
+ $assignAccentHex = $assignAccentKey !== ''
+ ? cc_test_assessor_effective_color_hex(
+ $assignAccentKey,
+ $assessors[$assignAccentKey]['color_hex'] ?? null
+ )
+ : '#FFFFFF';
+
+ $assignFormStyle = cc_test_assessor_css_vars(
+ $assignAccentKey !== '' ? $assignAccentKey : 'DEFAULT',
+ $assignAccentHex
+ );
+ $assignFormIsUnassigned = $assignAccentKey === '';
+
+ $badgeLabel = $unassigned
+ ? 'Sin asignar'
+ : (string) ($assessors[$assignedAssessorKey]['label'] ?? ($assignedAssessorKey ?? 'Asignado'));
?>
-
@@ -1748,6 +1949,50 @@ require_once 'layout_header.php';
", $modalsHtml); ?>
+
+
@@ -1786,6 +2031,7 @@ require_once 'layout_header.php';
|
|---|