# ComputerSalesApp WinForms-приложение для темы «Продажа компьютерной техники». ## Подключение Строка подключения находится в файле: `ComputerSalesApp/Data/ConnectionSettings.cs` Используется схема `ryzhov_ka`. ## Роли - `admin` — видит все таблицы и может добавлять, изменять, удалять записи. - `user` — покупатель. Видит только свои данные, товары, свои заказы и позиции своих заказов. ## Тестовые пользователи - `admin / admin123` - `user / user123` ## Важное изменение логики пользователей Учётная запись `user` теперь связана с покупателем через поле `app_users.customer_id`, а не с сотрудником. Это нужно для ограничения доступа: покупатель не должен видеть чужие заказы. ## Порядок подготовки БД Для новой базы: 1. `database/sql/01_schema.sql` 2. импорт CSV по `database/csv/import_order.txt` 3. `database/sql/03_pgcrypto_auth.sql` 4. `database/sql/04_views.sql` 5. `database/sql/05_after_import_identity.sql` Для уже созданной старой базы можно выполнить: `database/sql/06_patch_app_users_customer.sql` ## Исправление 2026-06-01 - Исправлена ошибка `Object reference not set to an instance of an object` при поиске заказов. - Отчёт больше не запускается автоматически при открытии приложения: пользователь сам нажимает `Найти`. - Настройка колонок DataGridView стала безопасной: отсутствующие или пустые колонки больше не вызывают падение. - Левое меню расширено, чтобы названия разделов меньше обрезались. ## Исправление тестовых покупателей В тестовых данных покупатели и сотрудники теперь разные люди. Если база уже была создана раньше, выполните в pgAdmin: ```sql -- database/sql/07_fix_test_customer_names.sql ``` Скрипт меняет только ФИО и контактные данные покупателей, структуру БД не трогает. ## Проверенная последовательность подготовки БД 1. Выполнить `database/sql/01_schema.sql`. 2. Импортировать CSV из `database/csv` по порядку из `import_order.txt`. 3. Выполнить `database/sql/03_pgcrypto_auth.sql`. 4. Выполнить `database/sql/04_views.sql`. 5. Выполнить `database/sql/05_after_import_identity.sql`. 6. Выполнить `database/sql/08_security_audit.sql`. Если база уже создана раньше, без полного пересоздания можно выполнить: `06_patch_app_users_customer.sql`, затем `04_views.sql`, затем `08_security_audit.sql`.