# Продажа компьютерной техники

Информационная система предназначена для учета клиентов, товаров, заказов и пользователей магазина компьютерной техники. Приложение реализовано на C# с использованием WPF, .NET Framework 4.6.1, PostgreSQL и библиотеки Npgsql.

# Введение

Основные возможности программы:

- авторизация пользователей приложения;
- разграничение прав по ролям `admin`, `manager`, `viewer`;
- просмотр справочника товаров и поставщиков;
- добавление товаров пользователями с правами администратора или менеджера;
- просмотр, добавление, изменение и удаление клиентов с учетом роли пользователя;
- просмотр заказов и состава заказов;
- изменение статуса заказа для администратора и менеджера;
- просмотр просроченных заказов;
- управление пользователями приложения для администратора.

# Назначение и условия применения

Программа применяется для сопровождения работы небольшого магазина компьютерной техники. Система рассчитана на эксплуатацию оператором, менеджером или администратором на рабочем месте с установленной операционной системой Windows, .NET Framework 4.6.1 и доступом к серверу PostgreSQL.

Для работы требуется подключение к базе данных PostgreSQL. Разделение прав выполняется на уровне приложения через таблицу `app_users` и поле `role_name`. Роли PostgreSQL в учебной базе данных не создаются.

# Установка

1. [ ] Установить .NET Framework 4.6.1, если он отсутствует на рабочем месте.
2. [ ] Установить или подготовить доступ к PostgreSQL.
3. [ ] Выполнить SQL-скрипт `create_database.sql` или `ComputerShopWpf/Database/create_database.sql` в выбранной базе данных.
4. [ ] Запустить файл `ComputerShopWpf_Setup.exe`.
5. [ ] Подтвердить установку приложения в папку `%LOCALAPPDATA%\ComputerShopWpf`.
6. [ ] Проверить, что на рабочем столе появился ярлык "Продажа компьютерной техники".
7. [ ] Запустить приложение через ярлык и проверить вход под тестовыми пользователями.
8. [ ] Для разработки открыть `ComputerShopWpf.sln`, восстановить NuGet-пакеты, выполнить `Clean Solution` и `Rebuild Solution`.

Установщик создается скриптом `Installer/build_installer.ps1`. Он упаковывает файлы сборки, `README.md`, SQL-скрипт и сценарий удаления в один файл `ComputerShopWpf_Setup.exe`.

Текущая строка подключения:

```csharp
public static string MainConnection =
    "Host=edu-pg.itiscaf.ru;Port=5432;Database=dbwork;Username=shavrin_rr;Password=m81&T2f4u#1;SSL Mode=Disable;Timeout=15;Command Timeout=30";
```

# Описание операций

Для входа в систему пользователь вводит логин и пароль. После успешной авторизации открывается главное окно приложения. Доступные разделы зависят от роли пользователя.

Тестовые учетные записи:

| Логин | Пароль | Роль | Права |
| - | - | - | - |
| `admin` | `admin123` | `admin` | полный доступ |
| `manager` | `manager123` | `manager` | просмотр и редактирование клиентов, заказов и товаров |
| `viewer` | `viewer123` | `viewer` | только просмотр данных |

Основные операции:

- перейти в раздел "Клиенты" для просмотра и редактирования клиентской базы;
- перейти в раздел "Товары" для просмотра справочника товаров и добавления новых позиций;
- перейти в раздел "Заказы" для просмотра заказов и изменения статуса;
- перейти в раздел "Состав заказов" для просмотра товаров в заказе;
- перейти в раздел "Просроченные заказы" для контроля заказов, находящихся в работе более семи дней;
- перейти в раздел "Пользователи" для администрирования учетных записей;
- нажать "Выйти из аккаунта" для завершения сеанса пользователя.

# Термины и сокращения

| Термин | Описание |
| - | - |
| WPF | технология Microsoft для создания настольных приложений Windows |
| PostgreSQL | система управления реляционными базами данных |
| Npgsql | библиотека доступа к PostgreSQL из приложений .NET |
| БД | база данных |
| ПО | программное обеспечение |
| Роль | уровень доступа пользователя в приложении |
| Инсталлятор | программа установки, разворачивающая приложение на рабочем месте |
