Skip to content

sergiyscherbakov/MiniCRM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniCRM - Система управління клієнтами

Опис проекту

MiniCRM - це настільна WPF-додаток для управління клієнтами та замовленнями з використанням SQLite як бази даних. Проект реалізований згідно з MVVM паттерном та використовує Repository Pattern для роботи з даними.

Функціональні можливості

Управління клієнтами

  • ✅ Додавання нових клієнтів
  • ✅ Редагування інформації про клієнтів
  • ✅ Видалення клієнтів
  • ✅ Пошук клієнтів за ім'ям, email або телефоном
  • ✅ Фільтрація клієнтів за статусом (Активний/Неактивний)

Управління замовленнями

  • ✅ Створення нових замовлень
  • ✅ Редагування замовлень
  • ✅ Видалення замовлень
  • ✅ Перегляд замовлень клієнта
  • ✅ Пошук замовлень за назвою товару
  • ✅ Фільтрація замовлень за статусом та періодом
  • ✅ Автоматичний розрахунок загальної суми

Звіти та статистика

  • ✅ Загальна статистика по клієнтах
  • ✅ Статистика по замовленнях за статусами
  • ✅ Загальний дохід від завершених замовлень
  • ✅ Топ-10 клієнтів за сумою замовлень
  • ✅ Фільтрація звітів за періодом

Технічний стек

  • Платформа: WPF (.NET Framework 4.7.2)
  • Мова: C#
  • База даних: SQLite
  • Архітектурний паттерн: MVVM (Model-View-ViewModel)
  • Паттерни проектування: Repository Pattern, Dependency Injection

Структура проекту

MiniCRM/
├── Models/              # Моделі даних
│   ├── Client.cs
│   ├── ClientStatus.cs
│   ├── Order.cs
│   └── OrderStatus.cs
├── ViewModels/          # MVVM ViewModels
│   ├── ViewModelBase.cs
│   ├── MainWindowViewModel.cs
│   ├── ClientListViewModel.cs
│   ├── ClientEditViewModel.cs
│   ├── OrderListViewModel.cs
│   ├── OrderEditViewModel.cs
│   └── ReportsViewModel.cs
├── Views/              # WPF Views
│   ├── ClientListView.xaml
│   ├── ClientEditView.xaml
│   ├── OrderListView.xaml
│   ├── OrderEditView.xaml
│   └── ReportsView.xaml
├── Services/           # Бізнес-логіка
│   ├── ClientService.cs
│   ├── OrderService.cs
│   └── ReportService.cs
├── Data/              # Робота з даними
│   ├── DatabaseContext.cs
│   ├── IRepository.cs
│   ├── ClientRepository.cs
│   └── OrderRepository.cs
├── Helpers/           # Допоміжні класи
│   ├── RelayCommand.cs
│   └── Converters.cs
└── Resources/         # Ресурси

Встановлення та запуск

Вимоги

  • Visual Studio 2019 або новіша версія
  • .NET Framework 4.7.2 або новіша версія

Кроки встановлення

  1. Відкрийте проект у Visual Studio

    Відкрийте файл MiniCRM.sln у Visual Studio
    
  2. Встановіть NuGet пакети

    • Клацніть правою кнопкою миші на проекті
    • Виберіть "Manage NuGet Packages"
    • Встановіть пакет System.Data.SQLite.Core версії 1.0.118.0

    Або використайте Package Manager Console:

    Install-Package System.Data.SQLite.Core -Version 1.0.118.0
    
  3. Зберіть проект

    Build > Build Solution (Ctrl+Shift+B)
    
  4. Запустіть додаток

    Debug > Start Debugging (F5)
    

База даних

При першому запуску додатку автоматично створюється база даних SQLite (minicrm.db) в директорії виконання програми з наступними таблицями:

Таблиця Clients

CREATE TABLE Clients (
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    FirstName TEXT NOT NULL,
    LastName TEXT NOT NULL,
    Email TEXT UNIQUE,
    Phone TEXT,
    Address TEXT,
    RegistrationDate DATETIME DEFAULT CURRENT_TIMESTAMP,
    Status INTEGER DEFAULT 1,
    Notes TEXT
);

Таблиця Orders

CREATE TABLE Orders (
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    ClientId INTEGER NOT NULL,
    ProductName TEXT NOT NULL,
    Description TEXT,
    Quantity INTEGER DEFAULT 1,
    UnitPrice DECIMAL(10,2),
    TotalAmount DECIMAL(10,2),
    CreatedDate DATETIME DEFAULT CURRENT_TIMESTAMP,
    PlannedDate DATETIME,
    Status INTEGER DEFAULT 0,
    FOREIGN KEY (ClientId) REFERENCES Clients(Id) ON DELETE CASCADE
);

Валідація даних

Клієнти

  • Ім'я та прізвище: обов'язкові поля (макс. 100 символів)
  • Email: валідація формату email (макс. 255 символів)
  • Телефон: валідація формату телефону (макс. 20 символів)
  • Адреса: необов'язкове поле (макс. 500 символів)

Замовлення

  • Клієнт: обов'язкове поле
  • Назва товару/послуги: обов'язкове поле (макс. 200 символів)
  • Кількість: повинна бути більше 0
  • Ціна: повинна бути більше 0
  • Планована дата: не може бути раніше дати створення

Статуси

Статуси клієнтів

  • Активний (Active)
  • Неактивний (Inactive)

Статуси замовлень

  • Нове (New)
  • В роботі (InProgress)
  • Завершено (Completed)
  • Скасовано (Cancelled)

Особливості реалізації

MVVM Pattern

  • Повне розділення логіки від інтерфейсу
  • Використання INotifyPropertyChanged для оновлення UI
  • Command Pattern для обробки подій

Repository Pattern

  • Generic інтерфейс IRepository
  • Окремі репозиторії для кожної сутності
  • Інкапсуляція логіки роботи з базою даних

Dependency Injection

  • Ручна реалізація DI в MainWindow
  • Впровадження залежностей через конструктори

Обробка помилок

  • Try-catch блоки у всіх операціях з БД
  • Виведення інформативних повідомлень користувачу
  • Валідація даних перед збереженням

Автор

Реалізовано згідно технічного завдання для навчального проекту.

Ліцензія

Навчальний проект.

Автор

Розробник: Сергій Щербаков Email: sergiyscherbakov@ukr.net Telegram: @s_help_2010

About

Mini CRM System

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages