[Route("api/[controller]")]
public class OrderController : ControllerBase, IContextInteractable
private IOrdersRepository Repository;
private CacheManager Manager;
OrderController(string connectionString)
Repository = new OrdersRepository(connectionString);
Manager = new CacheManager(new Logger<CacheManager>());
[Route("{id}/updateStatus")]
public IActionResult UpdateOrderStatus(string id, string newStatus)
Order o = Repository.FindById(id);
public IActionResult GetOrderClients(string id)
Order o = Repository.FindById(id);
return Repository.GetClients(o.CustomId);
else if (o is StockOrder)
return Repository.GetClients(o.Id);
else if (o is SingleOrder)
return new List<Client>();
Manager.CleanCacheByKey("Orders-Cache");
RemoveDuplicatesFromCache();
public void SetOrdersCache(IEnumerable<Order> orders)
Manager.SetCacheByKey("Orders-Cache");
public void GetOrdersCache()
throw new NotImplementedException();
public void RemoveDuplicatesFromCache()
var cacheItems = Manager.GetAllItems();
foreach(var i in cacheItems) {
if(cacheItems.Where(ci => ci.Key == i.Key).Count() > 1) cacheItems.Remove(i);