sealkeen / Restful-ASP.NET-CORE-WEB-API

REST-ful PostgreSQL based ASP.NET Core web-api for student, lectures serverside component worker.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Задание:

Разработать функционал, архитектурное решение которого будет отвечать принципам SOLID и следующим требованиям:

○ Стек: • C#, .NET 5 • MsSql Server or Postgress DB • Moq, NUnit • Microsoft ILogger, NLog • EF Core • Code standarts должен удовлетворять ms.net guideline

1 part:

○ Общие требования к реализации \ дистрибьюции • Домашнюю работу именовать module_10. • Функционал должен быть разделён по слоям и назначению на сборки. • Одна сборка должна содержать модели и бизнес-логику. • Другая сборка должна содержать функционал по работе с базой данных (Repository \ DAL). • Приложение должно уметь инициализировать дефолтную базу данных. Если база не создана - создать и заполнить данными, если создана - пересоздать.

○ Общие требования к настройкам
• Библиотека не должна зависеть от собственных настроек, настройки должны подтягиваться из вызывающего ее приложения. • Библиотека не должна требовать какие-то специфичные ключи из web.config основного приложения. • Настройки должны быть в следующем виде: • Если настройка обязательна, она должна поступать извне, инициализироваться потребителем • Если настройка опциональная, она должна быть опциональной с дефолтным значением • Если это внутренние константы и т.д. - они должны быть внутренними

○ Обработка ошибок • При конфликтах и исключительных ситуациях библиотека должна выбрасывать строго типизированные "кастомные" исключения, определенные в ней. • Ошибки, произошедшие внутри библиотеки должны логироваться. • Библиотека не должна иметь зависимости на конкретный логгер. Реализация логгера и настройки логгера должны определяться потребителем библиотеки.

○ Описание сеттинга • Лектор ведет курс лекций. • Студент пришeл на лекцию с домашней работой - получил оценку от 1 до 5. • Студент пришел на лекцию без домашней работы - получил 0. • Студент пропустил лекцию - получил 0. • Отсутствие домашней работы студента не эквивалентно отсутствию на лекции (следует вести посещаемость).

○ Библиотека с бизнес-логикой должна содержать следующее: • Сущности: Лектор, Студент, Лекция, Домашняя работа. • CRUD операции для работы с лекциями • CRUD операции для работы с домашними работами • CRUD операции для работы со списком студентов \ лекторов

○ Необходимо имплементировать следующий функционал: • Генерация репорта о посещаемости, по названию лекции или по имени студента. Отчет поддерживает 2 формата - Xml / Json (формат свободный). Реализация должна поддерживать возможность легкой расширяемости под разные форматы репортов. • При пропуске студентом более 3х лекций необходимо отсылать Email на лектора курса и на студента. • При достижении текущей средней оценки за курс ниже 4х баллов необходимо отсылать SMS сообщение студенту.

○ К библиотеке должны предоставляться интергационные и unit тесты. • Unit тесты должны уметь проверять зависимости и их корректность, бизнес логику, вызовы методов. • Интеграционные тесты должны уметь создавать тестовые данные в базе и работать с ними, после тестов данные должны быть очищены. (InMemoryDatabase)

2 Part:

○ Необходимо подключить библиотеку к .NET Core web.api rest сервису

About

REST-ful PostgreSQL based ASP.NET Core web-api for student, lectures serverside component worker.


Languages

Language:C# 100.0%