Beispiel #1
0
 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)));
             }
         }
     }
 }
Beispiel #2
0
 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);
                 }
             }
         }
     }
 }
Beispiel #3
0
 public Task <IClient> GetClient(string username)
 {
     lock (ClientLock)
     {
         return(Task.FromResult(ClientManager.Get(username)));
     }
 }
Beispiel #4
0
 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);
         }
     }
 }
Beispiel #5
0
        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)));
                }
            }
        }