CartService

Дано:
Модель продукта
class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Cost { get; set; }
public bool ForBonusPoints { get; set; }
}

Задача:
Реализовать сервис корзины CartService

Требования:

  1. Стэк: Asp Net Core 3 WEB Api + хранилище на выбор Redis / Sql Server + Dapper

  2. Функционал:

  1. Добавление / удаление произвольного числа продуктов
  2. Данные о корзине хранить в течение 30 дней
  3. Возможность регистрации веб хуков, которые нужно дергать при удалении корзины по истечению срока хранения
  4. 1 раз в сутки генерировать и сохранять отчет (txt/pdf/excel на выбор), в котором будет указано:
    а) сколько всего корзин
    б) сколько из них содержат продукты за баллы
    в) сколько корзин истечет в течение 10/20/30 дней
    г) средний чек корзины

Решение

В Settings настрока коннекта к БД (sqlite) и число дней активной корзины

WebApi https://localhost:5001/api/carts/help

ReportWorker - генерация отчета

ExpireWorker - удаление корзин