public Task <bool> Update(IOrder order) { lock (ClientLock) { if (ClientManager.Get(order.ClientUsername) == null) { return(Task.FromResult(false)); } lock (ProductLock) { double totalPrice = 0.0; foreach (KeyValuePair <uint, uint> pair in order.ProductIdQuantityMap) { IProduct product = ProductManager.Get(pair.Key); if (product == null) { return(Task.FromResult(false)); } totalPrice += product.Price * pair.Value; } order.Price = totalPrice; lock (OrderLock) { return(Task.FromResult(OrderManager.Update(order))); } } } }
public Task <IOrder> CreateOrder(string clientUsername, DateTime orderDate, Dictionary <uint, uint> productIdQuantityMap, DateTime?deliveryDate) { lock (ClientLock) { if (ClientManager.Get(clientUsername) == null) { return(null); } lock (ProductLock) { double totalPrice = 0.0; foreach (KeyValuePair <uint, uint> pair in productIdQuantityMap) { IProduct product = ProductManager.Get(pair.Key); if (product == null) { return(null); } totalPrice += product.Price * pair.Value; } lock (OrderLock) { try { return(Task.FromResult(OrderManager.Get(OrderManager.Create( clientUsername, orderDate, productIdQuantityMap, totalPrice, deliveryDate)))); } catch (Exception) { return(null); } } } } }
public Task <IClient> GetClient(string username) { lock (ClientLock) { return(Task.FromResult(ClientManager.Get(username))); } }
public Task <IClient> CreateClient(string username, string firstName, string lastName, string street, uint streetNumber, string phoneNumber) { lock (ClientLock) { try { return(Task.FromResult(ClientManager.Get(ClientManager.Create(username, firstName, lastName, street, streetNumber, phoneNumber)))); } catch (Exception) { return(null); } } }
public Task <bool> RemoveClient(IClient client) { lock (ClientLock) { lock (OrderLock) { if (ClientManager.Get(client.Username) == null) { return(Task.FromResult(false)); } foreach (uint orderId in OrderManager.GetAll().Where(order => order.ClientUsername == client.Username).Select(o => o.Id)) { OrderManager.Remove(orderId); } return(Task.FromResult(ClientManager.Remove(client.Username))); } } }