DeliveryStorage — это группа проектов для службы доставки. Решение включает в себя API разработанное с использованием ASP.NET Core и консольное приложение, которое является клиентской частью для API. Решение сделано на основании тестового задания.
Техническое задание:
Разработать консольное .NET приложение для склада, удовлетворяющее следующим требованиям:
- Построить иерархию классов, описывающих объекты на складе - паллеты и коробки:
- Помимо общего набора стандартных свойств (ID, ширина, высота, глубина, вес), паллета может содержать в себе коробки.
- У коробки должен быть указан срок годности или дата производства. Если указана дата производства, то срок годности вычисляется из даты производства плюс 100 дней.
- Срок годности и дата производства — это конкретная дата без времени (например, 01.01.2023).
- Срок годности паллеты вычисляется из наименьшего срока годности коробки, вложенной в паллету. Вес паллеты вычисляется из суммы веса вложенных коробок + 30кг.
- Объем коробки вычисляется как произведение ширины, высоты и глубины.
- Объем паллеты вычисляется как сумма объема всех находящихся на ней коробок и произведения ширины, высоты и глубины паллеты.
- Каждая коробка не должна превышать по размерам паллету (по ширине и глубине).
- Консольное приложение:
- Получение данных для приложения можно организовать одним из способов:
- Генерация прямо в приложении
- Чтение из файла или БД
- Пользовательский ввод
- Вывести на экран:
- Сгруппировать все паллеты по сроку годности, отсортировать по возрастанию срока годности, в каждой группе отсортировать паллеты по весу.
- 3 паллеты, которые содержат коробки с наибольшим сроком годности, отсортированные по возрастанию объема.
- Получение данных для приложения можно организовать одним из способов:
- (Опционально) Покрыть функционал unit-тестами.
- (Очень желательно) Код должен быть написан в соответствии с https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions
- (Совершенно не обязательно) Вместо консольного приложения сделать полноценный пользовательский интерфейс. На оценку решения никак не влияет.
- Маппинг данных с использованием AutoMapper
- Контейнеризация Docker
- База данных: PostgreSQL
-
Клонируйте репозиторий:
git clone https://github.com/Hetig/DeliveryStorage.git cd DeliveryStorage -
Поднимите контейнер с приложением используя команду в терминале:
docker-compose up -d --build
-
Запустите клиентское консольное приложение
- ASP.NET Core Web API
- Entity Framework Core
- PostgreSQL
- AutoMapper
Если вы хотите внести свой вклад в проект, пожалуйста, создайте форк репозитория, создайте новую ветку, внесите свои изменения и отправьте pull request.
Данный проект не лицензирован.