DevCrm 02 - Архитектура слои, контекст и первые модели
В самом начале разработки проекта CRM на WPF была определена основная структура:
Models - это модели данных объектов среды (это Client, User, Note, Interaction и так далее), то есть это те параметры которыми обладает объект,Ну например что должно быть у клиента? ID - порядковый номер внутри системы, Name - как звать, Phone, Email, ну в общем какие данные внесет менеджер (или оператор) для работы.
View - Это то куда выводится вся та информация от этих самых клиентов и юзеров и другая информация для работы, ну там войти/выйти, экспорт/импорт, то есть в кратце - фронтенд оконного приложения, фактически это лицо приложения, если сравнить с сайтом, это то что мы видим.
ViewModel - А тут размещаются методы, которые управляют и клиентами и юзерами и как юзеры клиентами управляют, и кто юзерами управляет. В кратце нужно добавить клиента (AddClient), значит тут мы делаем метод, добавления клиента:private void AddClient()
``` { EditableClient = new Client { CreatedAt = DateTime.Now, Status = "Lead", AssignedUserId = _authService.GetCurrentUser()?.Id }; IsEditMode = true; SelectedClient = null; SelectedTabIndex = 0; //.... ну и так далее }```
Прочитать LoadClient () - делаем метод отображения информации о клиенте, поменять что-то надо, UpdateClient() - свой метод, Удалить, ну значит удалить, ну ,кароче, полный CRUD ( Create (Создать) - Read (Прочитать) - Update (Обновить) - Delete (Удалить)А кроме клиентов втудаже Юзеры со своими CRUDами, а еще Tasks (задачи), Interaction (взаимодействия), Note (заметки), а ещё - Отправить письмо, Экспортировать всех или сделать импорт, или карточку клиента в пдф закинуть, а еще не забываем что для начала нам в это всё нужно войти и выйти.А еще хорошо бы базу данных подключить и может даже не одну и всё это методы методы методы.В общем накопилось г.... всего и всё это в трех файлах.
В обще пока найдешь метод Экспорта а потом в загрузку клиента солнце сядет. Итак пришло понимание что так дело не пойдёт нужны категории.Выделились
- Models: Client, ClientTask, User, Note, Interaction, EmailSettings - последнее для настройки отправки писем.
- Services — слой сервисов и репозиториев. Сюда ушли ClientRepository (работа с клиентами в БД), AuthService (авторизация и пользователи), EmailService (отправка писем) и всё остальное, что не влезло в Models и Data);
- Data с подключением DbContext, через EntityFrameworkCore (DbContextFactory - фабрика контекстов, IDbContext интерфейс ну и к какой базе подключаемся, на тот момент была просто SqliteDbContext)
- MainViewModel - в котором идет обращение к контексту, определение интерфейсов и реализация методов. Местами тесно, но пока работает. - Ну и представление на экране монитора - View
В общем пока раскидал это всё умаялся и пока на этом остановится. Тяжела эта работа...