Coder Social home page Coder Social logo

psajd / reportsystem Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 38 KB

Creator of reports on the work done by employees of the company📄. Support for multi-layer architecture🔧 + database💽 + console interface🔢

C# 100.00%
anemic-domain-model multi-layer-architecture oop patterns nunit-tests

reportsystem's Introduction

ReportSystem (Приложение с многослойной архитектурой DAL - BLL - PL)

DAL - SQLite
PL - консоль

Постановка задачи:

- Лабораторная 6. Система обработки сообщений

Цель

Реализация многослойной архитектуры.

Предметная область

Требуется реализовать систему обработки входящих сообщений и представление агрегированного отчёта с подробной статистикой о полученных сообщениях в рамках заданного периода. В систему поступают сообщения из различных источников - SMS сообщения, сообщения из мессенджеров, электронная почта. Сотрудник входит в систему используя свой логин и пароль и запрашивает из системы сообщения с подконтрольных ему источников (Рабочая почта, телефон и прочие) для дальнейшей работы с ними. Сотрудник отвечает на входящие сообщения и завершает работу. В конце рабочего дня руководитель формирует отчёт о проделанной работе своих сотрудников.

Acceptance Criteria:

  • Реализовать аутентификацию и авторизацию сотрудников
  • Реализовать необходимые сущности и предусмотреть возможность их расширения в дальнейшем (Например, появление новых источников сообщений)
  • Реализовать иерархическую структуру подразделения и доступов к ним. Т.е. доступ до конкретной почты есть у конкретного набора сотрудников. Отчет по подразделению доступен только руководителям.
  • Отчёт должен быть иммутабельным. Т.е. даже есть объект по которому был построен отчёт изменится, сам отчёт от этого не должен
  • Создать пользовательский интерфейс (Интерактивное меню в консоли)(За реализацию полноценного UI предусмотрены дополнительные баллы)
  • Покрыть UnitTest’ами логику приложения (Application слой)
  • Возможность конфигурации приложение без изменения кода (добавление новых сотрудников и назначение подчинённых, добавление источников сообщений)
  • Система должна уметь сохранять и восстанавливать своё состояние после перезапуска.

Сущности

  • Сотрудник. У сотрудника может быть руководитель либо подчиненные.
  • Сообщение (Под каждый источник и общая базовая модель)
  • Источник сообщений (Телефон, электронная почта, мессенджер)
  • Учётная запись (Может быть закреплена как за источником сообщений, так и за сотрудником)
  • Отчёт

Сообщение может находится в одном из нескольких состояний:

  • Новое (Сообщение поступило на устройство, но ещё не было получено системой)
  • Полученное (Сообщение было загружено с устройства в систему)
  • Обработанное (Сообщение обработано сотрудником)

Система должна поддерживать следующие сценарии работы:

Сотрудник входит в систему, выбирает пункт меню получения сообщений. После загрузки сообщений в систему сотрудник может в течение продолжительного времени обрабатывать сообщения (отвечать на них, просто помечать прочитанными и т.д.). В конце работы выбирает пункт меню “Завершение сеанса”.

Начальник входит в систему, выбирает пункт меню работы с отчётами. Использует поиск по дате чтобы найти уже созданные отчёты. Открывает конкретные отчёты и смотрит информацию в разрезе по устройствам, по сотрудникам, статистику (кол-во сообщений всего и т.д.). После ознакомления создаёт новый отчёт за сегодня и в конце работы завершает свою смену.

Отчёт должен содержать в произвольном формате статистическую информацию

Кол-во сообщений обработанных его подчиненными

Кол-во сообщений полученных на конкретное устройство

Статистика по общему кол-ву сообщений в течение запрошенного интервала (например за сутки/смену и т.д.)

Детали реализации

Для этой лабораторной необходимо использовать классическую трехслойную архитектуру.

Presentation layer (уровень представления): это тот уровень, с которым непосредственно взаимодействует пользователь. Этот уровень включает компоненты пользовательского интерфейса, механизм получения ввода от пользователя. Применительно к данному проекту на этом уровне расположены представления и все те компоненты, который составляют пользовательский интерфейс (если вы делаете полноценный UI), а также модели представлений, запросы и т.д.

Business layer (уровень бизнес-логики): содержит набор компонентов, которые отвечают за обработку полученных от уровня представлений данных, реализует всю необходимую логику приложения, все вычисления, передает уровню представления результат обработки.

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

reportsystem's People

Contributors

psajd avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.