public void ExecuteOrder(int id, float stockValue) { using (StockServiceModelContainer database = new StockServiceModelContainer()) { StockOrder order = database.StockOrders.Find(id); if (order == null) { throw new FaultException <OrderNotFoundFault>(new OrderNotFoundFault(id)); } try { order.StockValue = stockValue; order.ExecutionDate = DateTime.UtcNow.ToString(); database.SaveChanges(); } catch (Exception e) { throw new FaultException <StockServiceFault>(new StockServiceFault(e.Message)); } StockServiceContracts.StockOrder updatedOrder = StockService.ToContractStockOrder(order); this.FireOnOrderStatusChange(updatedOrder); } }
public StockServiceContracts.StockOrder OrderStock(string company, int quantity, StockServiceContracts.StockOrder.OrderType type, string email) { Console.WriteLine("Received request!"); using (StockServiceModelContainer database = new StockServiceModelContainer()) { database.Database.Connection.Open(); StockOrder toAdd = new StockOrder() { Company = company, Quantity = quantity, Email = email, RequestDate = DateTime.UtcNow.ToString(), Type = this.GetOrderTypeFromEnum(type, database) }; Console.WriteLine("Created Order!"); try { toAdd = database.StockOrders.Add(toAdd); database.SaveChanges(); } catch (Exception e) { throw new FaultException <StockServiceFault>(new StockServiceFault(e.Message)); } StockServiceContracts.StockOrder createdOrder = StockService.ToContractStockOrder(toAdd); this.FireOnNewOrder(createdOrder); return(createdOrder); } }
public int RegisterOnOrderStatusChange(int id) { IStockServiceCallback callback = OperationContext.Current.GetCallbackChannel <IStockServiceCallback>(); Console.WriteLine("Someone registered for an order status change!"); using (StockServiceModelContainer database = new StockServiceModelContainer()) { StockOrder order = database.StockOrders.Find(id); if (order == null) { throw new FaultException <OrderNotFoundFault>(new OrderNotFoundFault(id)); } int callbackId = Interlocked.Increment(ref this.LastCallbackId); this.CallbacksIds.Add(callbackId, callback); if (this.OnOrderStatusChangeCallbacks.ContainsKey(id) == false) { this.OnOrderStatusChangeCallbacks[id] = new HashSet <IStockServiceCallback>(); } this.OnOrderStatusChangeCallbacks[id].Add(callback); return(callbackId); } }
private static StockServiceContracts.StockOrder ToContractStockOrder(StockOrder order) { if (order == null) { return(null); } return(new StockServiceContracts.StockOrder() { Id = order.Id, Email = order.Email, Company = order.Company, Quantity = order.Quantity, RequestDate = order.RequestDate, ExecutionDate = order.ExecutionDate, StockValue = (float)order.StockValue, Type = StockService.FromOrderTypeString(order.Type.Name) }); }