Файл: Анализ и оценка средств реализации структурных методов анализа и проектирования экономической информационной системы (Описание предметной области. Постановка задачи).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 12.03.2024

Просмотров: 26

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

public class Client

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required, MinLength(3), MaxLength(50)]

public virtual string FirstName { get; set; }

[Required, MinLength(3), MaxLength(50)]

public virtual string LastName { get; set; }

[MaxLength(50)]

public virtual string Email { get; set; }

[MaxLength(50)]

public virtual string Phone { get; set; }

[Required]

public DateTime RegisteredAt { get; set; }

[Required]

public virtual bool IsDeleted { get; set; }

}

Сущность «Тип сервиса» (ServiceType) описывает все, включая неактивных, услуги, которые клуб предоставляет клиентам.

Таблица 7

Сущность «Тип сервиса»

Поле

Тип данных

Ограничения

Id

int

Первичный ключ таблицы. Генерируемое базой данных значение

Name

nvarchar

Значение не может быть равно NULL. Ограничение по длине в 50 символов

IsDeleted

bit

Значение не может быть равно NULL

IsDeleted

bit

Значение не может быть равно NULL

public class ServiceType

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required, MinLength(3), MaxLength(50)]

public virtual string Name { get; set; }

[Required]

public virtual bool IsDeleted { get; set; }

#region

public virtual ICollection<TrainerServiceType> TrainerServiceTypes { get; } = new HashSet<TrainerServiceType>();

#endregion

}

Сущность «Сервис» (Service) описывает все, включая неактивных, конкретные виды услуг, которые относятся к некоторой категории.

Таблица 8

Сущность «Сервис»

Поле

Тип данных

Ограничения

Id

int

Первичный ключ таблицы. Генерируемое базой данных значение

ServiceTypeId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «ServiceType»

Name

nvarchar

Значение не может быть равно NULL. Ограничение по длине в 50 символов

BasePrice

float

Значение не может быть равно NULL

IsDeleted

bit

Значение не может быть равно NULL

public class Service

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required]

public virtual int ServiceTypeId { get; set; }

[Required, MinLength(3), MaxLength(50)]

public virtual string Name { get; set; }

[Required]

public virtual double BasePrice { get; set; }

[Required]

public virtual bool IsDeleted { get; set; }

#region

[ForeignKey("ServiceTypeId")]

public virtual ServiceType ServiceType { get; set; }

#endregion

}


Сущность «Тренер» (Trainer) описывает всех, включая неактивных, тренеров клуба.

Таблица 9

Сущность «Тренер»

Поле

Тип данных

Ограничения

Id

int

Первичный ключ таблицы. Генерируемое базой данных значение

FirstName

nvarchar

Значение не может быть равно NULL. Ограничение по длине в 50 символов

LastName

nvarchar

Значение не может быть равно NULL. Ограничение по длине в 50 символов

IsDeleted

bit

Значение не может быть равно NULL

public class Trainer

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required, MinLength(3), MaxLength(50)]

public virtual string FirstName { get; set; }

[Required, MinLength(3), MaxLength(50)]

public virtual string LastName { get; set; }

[Required]

public virtual bool IsDeleted { get; set; }

#region

public virtual ICollection<TrainerServiceType> TrainerServiceTypes { get; } = new HashSet<TrainerServiceType>();

#endregion

}

Сущность «Специализация тренера» (TrainerServiceType) описывает всех, включая неактивных, тренеров клуба.

Таблица 10

Сущность «Специализация тренера»

Поле

Тип данных

Ограничения

Id

int

Первичный ключ таблицы. Генерируемое базой данных значение

TrainerId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «Trainer»

ServiceTypeId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «ServiceType»

public class TrainerServiceType

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required]

public virtual int TrainerId { get; set; }

[Required]

public virtual int ServiceTypeId { get; set; }

[ForeignKey("TrainerId")]

public virtual Trainer Trainer { get; set; }

[ForeignKey("ServiceTypeId")]

public virtual ServiceType ServiceType { get; set; }

}

Сущность «Выбор клиента» (ClientChoise) является описанием договоров клиентов.

Таблица 11

Сущность «Выбор клиента»

Поле

Тип данных

Ограничения

Id

int

Первичный ключ таблицы. Генерируемое базой данных значение

ClientId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «Client»

TrainerServiceTypeId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «TrainerServiceType»

TrainerId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «Trainer»

ChoiseTerm

int

Значение не может быть равно NULL. Значение необходимо попадать в перечень перечисления ChoiseTerm

ConclusedAt

datetime

Значение не может быть равно NULL


public class ClientChoise

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required]

public virtual int ClientId { get; set; }

[Required]

public virtual int TrainerServiceTypeId { get; set; }

[Required]

public virtual int TrainerId { get; set; }

[Required]

public virtual ChoiseTerm Term { get; set; }

[Required]

public virtual DateTime ConclusedAt { get; set; }

#region

[ForeignKey("ClientId")]

public virtual Client Client { get; set; }

[ForeignKey("TrainerServiceTypeId")]

public TrainerServiceType TrainerServiceType { get; set; }

[ForeignKey("TrainerId")]

public Trainer Trainer { get; set; }

#endregion

}

Перечисление ChoiseTerm состоит из следующих элементов:

  • OneTime (1),
  • Month (2),
  • ThreeMonths (3),
  • HalfAYear (4),
  • Year (5)

public enum ChoiseTerm

{

OneTime = 1,

Month = 2,

ThreeMonths = 3,

HalfAYear = 4,

Year = 5

}

Сущность «История посещений» (AttendanceHistory) отображает все записи о посещении клиентов клуба.

Таблица 12

Сущность «История посещений»

Поле

Тип данных

Ограничения

Id

int

Первичный ключ таблицы. Генерируемое базой данных значение

ClientId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «Client»

AttendedAt

datetime

Значение не может быть равно NULL

Direction

int

Значение не может быть равно NULL. Значение необходимо попадать в перечень перечисления AttendanceDirection

public class AttendanceHistory

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required]

public virtual int ClientId { get; set; }

[Required]

public virtual DateTime AttendedAt { get; set; }

[Required]

public virtual AttendanceDirection Direction { get; set; }

#region

[ForeignKey("ClientId")]

public virtual Client Client { get; set; }

#endregion

}

Перечисление AttendanceDirection состоит из следующих элементов:

  • Income (1),
  • Outcome (-1).

public enum AttendanceDirection

{

Income = 1,

Outcome = -1

}

Сущность «История оплаты» (PaymentHistory) содержит все финансовые операции клиента клуба.

Таблица 13

Сущность «История оплаты»

Поле

Тип данных

Ограничения

Id

int

Первичный ключ таблицы. Генерируемое базой данных значение

ClientId

int

Значение не может быть равно NULL. Является внешним ключом на таблицу «Client»

PayedAt

datetime

Значение не может быть равно NULL

Sum

float

Значение не может быть равно NULL


public class PaymentHistory

{

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public virtual int Id { get; set; }

[Required]

public virtual int ClientId { get; set; }

[Required]

public virtual DateTime PayedAt { get; set; }

[Required]

public virtual double Sum { get; set; }

#region

[ForeignKey("ClientId")]

public virtual Client Client { get; set; }

#endregion

}

Сущность «Пользователь системы» (ApplicationUser) является одной из компонентов инфраструктуры OWIN и содержит, наряду с другими таблицами, всю информацию, касающуюся пользователей, их прав доступа.

Разработка зоны регистрации и учета клиентов клуба

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

Контроллер ServiceController обслуживает запросы, связанные с типами услуг клуба и услугами соответственно:

  • отображение всех типов сервисов – метод отображает только активные типы сервисов;
  • создание нового типа сервиса – метод определяет, существует ли тип сервиса с таким названием;
  • редактирование типа сервиса по его идентификатору – метод определяет существование типа сервиса по его идентификатору, а также существование типа сервиса по его новому названию;
  • удаление типа сервиса по его идентификатору – метод определяет существование типа сервиса по его идентификатору;
  • отображение всех сервисов – метод отображает только активные типы сервисов;
  • создание нового сервиса – метод определяет, существует ли сервис с таким названием;
  • редактирование сервиса по его идентификатору;
  • удаление сервиса по его идентификатору.

Контроллер TrainerController обслуживает запросы, связанные с руководителями занятий:

  • отображение всех руководителей – метод отображает только активных руководителей;
  • создание нового руководителя;
  • редактирование руководителя по его идентификатору – метод определяет существование руководителя по его идентификатору;
  • редактирование специализаций руководителя по идентификатору – метод определяет существование руководителя по его идентификатору;
  • удаление руководителя по его идентификатору – метод определяет существование руководителя по его идентификатору.

Контроллер ClientController обслуживает запросы, связанные с клиентами клуба:

  • отображение всех клиентов – метод отображает только активных клиентов;
  • создание нового клиента – метод проверяет существование клиента с указанными электронной почтой или телефоном;
  • редактирование клиентов по его идентификатору – метод определяет существование клиентов по его идентификатору, а также существование записи с новыми значениями электронной почты или номера телефона;
  • удаление клиента по его идентификатору – метод определяет существование клиента по его идентификатору.

Разработка зоны учета договоров и уведомлений

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

Контроллер AgreementController обслуживает запросы отображения и создания договоров с клиентами:

  • просмотр заключенных договоров – метод производит выборку договоров с активными клиентами про предоставление активных услуг и активных типов услуг с активными тренерами клуба;
  • заключение нового договора – метод поэтапно предлагает администратору выбрать необходимого клиента, вид услуг и саму услугу, а также предоставляет выбор тренера, который может проконсультировать клиента или вести его тренировку. После выполнения метода есть возможность перейти к диалогу оплаты услуги.

Контроллер PayController позволяет администратору ввести запись об оплате услуг клиентом составленного договора.

Контроллер NotificationsController позволяет произвести массовую или одиночную рассылку уведомлений клиентам, например, об отмененных занятиях, изменения цены на услуги в будущем, либо изменения списка предоставляемых клубом услуг.

Разработка зоны статистики и администрирования информационной системы

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

Контроллер ClientController позволяет отобразить статистику посещения клиентами клуба, на основании выбранного периода времени, либо определенного перечня клиентов, либо ни одного из этих вариантов.

Контроллер PaymentController отображает историю оплат клиентами услуг клуба. Этот функционал также позволяет отображать определенный промежуток времени, использовать определенный набор клиентов, либо отфильтровать список по минимальной либо максимальной сумме внесенных средств.

Контроллер ServiceController призван отобразить администратору статистику использования услуг клуба, популярности типов услуг клуба, либо загруженности тренеров. Данная статистика позволит подкорректировать ценовой диапазон на предоставляемые услуги, изменить перечень услуг того или иного типа, а также внести изменения в состав тренеров клуба.

Разработка связующего звена между слоями приложения

Для объединения части функционала приложения была создана прослойка контроллеров приложения, цель которой – инкапсулировать логику создания контекста базы данных, а также взять на себя обязанность правильно очистить неиспользуемые ресурсы при сборке мусора.

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