# Миграция страниц админки с iframe на Livewire — что проверять

Все перечисленные ниже страницы были переведены со старой OpenAdmin-админки (которая отображалась во `<iframe>`) на новую Livewire-админку. URL-адреса **не изменились** — это сделано специально, чтобы пункты меню (`admin_menu`) продолжали работать без миграций.

Проверять нужно: открытие страницы, поиск, постраничную навигацию, создание, редактирование, просмотр, удаление (с подтверждением через SweetAlert), валидацию обязательных полей, права доступа.

---

## 1. Справочник «Acciones» (действия)

- `GET /admin/actions` — список с поиском (по `descripcion`, `guion`, `id`) и пагинацией
- `GET /admin/actions/create` — форма создания
- `POST /admin/actions/create` — сохранение новой записи
- `GET /admin/actions/edit/{actionId}` — форма редактирования
- `GET /admin/actions/show/{actionId}` — просмотр записи (read-only)
- Удаление — из списка через иконку корзины + SweetAlert-подтверждение

**Право:** `acciones`

---

## 2. Справочник «Contactos» (контакты)

- `GET /admin/contacts` — список с поиском (по `descripcion`, `guion`, `id`) и пагинацией
- `GET /admin/contacts/create` — форма создания
- `POST /admin/contacts/create` — сохранение
- `GET /admin/contacts/edit/{contactId}` — редактирование
- `GET /admin/contacts/show/{contactId}` — просмотр
- Удаление — из списка

**Право:** `contactos`

---

## 3. Справочник «Resultados» (результаты)

- `GET /admin/results` — список с поиском (по `descripcion`, `guion`, `id`) и пагинацией
- `GET /admin/results/create` — форма создания
- `POST /admin/results/create` — сохранение
- `GET /admin/results/edit/{resultId}` — редактирование
- `GET /admin/results/show/{resultId}` — просмотр
- Удаление — из списка

Поля `fecha`, `valor`, `texto`, `esacuerdo` — целочисленные (как и в старой версии).

**Право:** `resultados`

---

## 4. Справочник «Motivos de no pago» (причины неоплаты)

- `GET /admin/non-payments-reasons` — список с поиском (по `descripcion`, `id`) и пагинацией
- `GET /admin/non-payments-reasons/create` — форма создания
- `POST /admin/non-payments-reasons/create` — сохранение
- `GET /admin/non-payments-reasons/edit/{reasonId}` — редактирование
- `GET /admin/non-payments-reasons/show/{reasonId}` — просмотр
- Удаление — из списка

Поле `idproyecto` — текстовое (так было и в старой админке).

**Право:** `motivos-de-no-pago`

---

## 5. Справочник «Relaciones de códigos» (связи кодов)

- `GET /admin/code-relations` — список с поиском (по `descripcion`, `id`) и пагинацией
- `GET /admin/code-relations/create` — форма создания (поле `id` опциональное — если пустое, БД сама присвоит)
- `POST /admin/code-relations/create` — сохранение
- `GET /admin/code-relations/edit/{relationId}` — редактирование (поле `id` редактируемое, как было в старой версии — отдельно проверить, что не ломается уникальный ключ)
- `GET /admin/code-relations/show/{relationId}` — просмотр
- Удаление — из списка

**Право:** `relaciones-de-codigos`

---

## 6. Справочник «Estrategias» (стратегии)

- `GET /admin/strategies` — список с поиском (по `descripcion`, `id`) и пагинацией
- `GET /admin/strategies/create` — форма создания
- `POST /admin/strategies/create` — сохранение
- `GET /admin/strategies/edit/{strategyId}` — редактирование
- `GET /admin/strategies/show/{strategyId}` — просмотр
- Удаление — из списка

У стратегии всего одно поле кроме `id` — `descripcion`.

**Право:** `estrategias`

---

## 7. Главная страница админки

- `GET /admin/` — теперь напрямую отдаёт стандартный дашборд OpenAdmin (environment / extensions / dependencies). Раньше тут был iframe, который подгружал `/admin/home`.
- `/admin/home` — **удалён** (URL больше не существует).

Никакого Livewire тут нет, потому что виджеты дашборда не интерактивные. Главное — проверить, что страница `/admin/` открывается и не ломается.

После входа пользователь по-прежнему попадает на `/admin/dashboard` (это отдельная кастомная страница, она не менялась).

---

## 8. Загрузка домов (CSV → loans.casa_id)

- `GET /admin/loans/casa-upload` — форма загрузки CSV-файла
- Сабмит формы через Livewire (внутри той же страницы — без перехода). После клика на кнопку появляется SweetAlert-подтверждение, и только после подтверждения файл реально обрабатывается.
- Раньше URL `/admin/main/loans/casa-upload` (внутренний URL внутри iframe) — **удалён**.

**Формат CSV:** разделитель `;`, две колонки — `obligacion;casa_id`. Логика осталась прежней: для каждой строки выполняется `UPDATE 9_cobranzas SET casa_id = ? WHERE obligacion = ?`. После загрузки показывается баннер с количеством обновлённых записей (или предупреждение «No loans updated», если ни одна строка не сматчилась).

**Что проверить отдельно:**
- Пустой/невалидный файл → должна сработать валидация (поле `file` обязательное).
- Файл с несуществующими `obligacion` → баннер «No loans updated».
- Файл, где часть строк находит совпадения, часть нет → баннер показывает корректное количество обновлённых записей.
- Кнопка отмены в SweetAlert ничего не должна обновлять.

**Право:** `asignacón-de-casas`

---

## 9. Пользователи

- `GET /admin/users` — **удалён** (был iframe, ссылавшийся на `/admin/main/users` со старой OpenAdmin-таблицей).
- `GET /admin/main/users` — **удалён** (старый OpenAdmin-контроллер `App\Admin\Controllers\UserController`).
- **Актуальный URL пользователей — `/admin/user-list`** (Livewire). Он не менялся, на него и ведёт пункт меню. Эта страница уже была переведена ранее, в рамках этой миграции её не трогали — но раз связанный iframe-роут удалён, желательно прокликать её ещё раз: список, поиск, пагинация, создание, редактирование, просмотр, удаление.

---

## Что зачищено в коде (для сведения)

- Полностью удалён класс `App\Admin\Controllers\Iframe\IframeController` (и весь каталог `app/Admin/Controllers/Iframe/`).
- Удалён старый OpenAdmin `App\Admin\Controllers\UserController`.
- Удалён шаблон `resources/views/iframe-page/iframe.blade.php` (и каталог `resources/views/iframe-page/`).
- Удалены устаревшие OpenAdmin-классы загрузки домов: `App\Admin\Components\Forms\Loans\UploadLoanCasaForm` и `App\Admin\Requests\Loans\UploadLoanCasaFormRequest`.
- Удалены пять старых OpenAdmin-контроллеров справочников (Action / Contact / Result / NonPaymentReason / CodeRelation / Strategy) — соответствующие классы в `App\Admin\Controllers\Directories\*` теперь тонкие и просто диспатчат на Livewire-компоненты.

## Что НЕ менялось

- Структура `admin_menu` (URL пунктов меню не двигали — это можно делать только миграциями).
- Права доступа (`asignacón-de-casas`, `acciones`, `contactos`, `resultados`, `motivos-de-no-pago`, `relaciones-de-codigos`, `estrategias`, `usuarios`) — все используются как раньше.
- Страница `/admin/dashboard` и остальные уже-Livewire страницы (`/admin/user-list`, `/admin/house-management`, кампании, SMS/Email и т. д.).

## Регресс-чеклист на одну страницу (для каждого справочника одинаковый)

1. Открыть список — должен открыться без iframe, без ошибки 419/500, с пагинацией.
2. Ввести что-то в поиск — список должен фильтроваться в реальном времени (Livewire `wire:model.live`).
3. Перейти на «Agregar» (`/create`) — открыться должна та же страница, не iframe.
4. Попробовать сохранить пустую форму — должны вылезти ошибки валидации.
5. Сохранить корректные данные — должно появиться сообщение об успехе, запись появиться в списке.
6. Открыть `/edit/{id}` — должны подгрузиться текущие значения, изменить и сохранить.
7. Открыть `/show/{id}` — все поля disabled, видны корректные значения.
8. Удалить запись из списка — должно появиться SweetAlert-подтверждение; после подтверждения запись пропадает и появляется success-тост.
9. Проверить под пользователем без нужного права — должен срабатывать `checkAccess(...)` и отдавать 403/redirect.
