public IOrderedItem AddItemToOrder(int orderId, int itemId, IOrderedItem orderedItem) { using (var connection = Database.GetConnection()) { connection.Open(); var cmd = connection.CreateCommand(); cmd.CommandText = OrderedItemSqlServer.ReqAddItemToOrder; cmd.Parameters.AddWithValue($"@{OrderedItemSqlServer.ColQuantity}", orderedItem.Quantity); cmd.Parameters.AddWithValue($"@{OrderedItemSqlServer.ColSize}", orderedItem.Size); cmd.Parameters.AddWithValue($"@{OrderedItemSqlServer.ColOrderId}", orderId); cmd.Parameters.AddWithValue($"@{OrderedItemSqlServer.ColItemId}", itemId); try { orderedItem.Id = (int)cmd.ExecuteScalar(); } catch (SqlException) { throw new DuplicateSqlPrimaryException("Cet objet est déjà présent dans la commande"); } } return(orderedItem); }
public bool TryOnNext(IOrderedItem <T> t) { if (done) { return(false); } bool b; try { b = predicate(t.Value); } catch (Exception ex) { Fail(ex); return(false); } if (b) { actual.OnNext(t); return(true); } return(false); }
public override void OnNext(IOrderedItem <T> t) { if (!TryOnNext(t)) { s.Request(1); } }
public void AddOrderedItem(IOrderedItem orderedItem) { if (OrderedItems.Contains(orderedItem)) { throw new DuplicateItemException(); } OrderedItems.Add(orderedItem); }
public void OnNext(IOrderedItem <T> t) { if (fusionMode == FuseableHelper.NONE) { if (!queue.Offer(t)) { OnError(BackpressureHelper.MissingBackpressureException("Queue full?!")); return; } } parent.Drain(); }
public bool UpdateQuantity(int orderedItemId, IOrderedItem orderedItem) { using (var connection = Database.GetConnection()) { connection.Open(); var cmd = connection.CreateCommand(); cmd.CommandText = OrderedItemSqlServer.ReqUpdateQuantity; cmd.Parameters.AddWithValue($"@{OrderedItemSqlServer.ColQuantity}", orderedItem.Quantity); cmd.Parameters.AddWithValue($"@{OrderedItemSqlServer.ColId}", orderedItemId); return(cmd.ExecuteNonQuery() > 0); } }
public override void OnNext(IOrderedItem <T> t) { if (done) { return; } R v; try { v = mapper(t.Value); } catch (Exception ex) { Fail(ex); return; } actual.OnNext(t.Replace(v)); }
public override bool TryOnNext(IOrderedItem <T> t) { if (done) { return(false); } R v; try { v = mapper(t.Value); } catch (Exception ex) { Fail(ex); return(false); } return(actual.TryOnNext(t.Replace(v))); }
/// <inheritdoc/> public int CompareTo(IOrderedItem <T> other) { return(index < other.Index ? -1 : (index > other.Index ? 1 : 0)); }
public IOrderedItem AddGiftWrapping(IOrderedItem mainItem) => beethovenFactory.Generate <IOrderedItem>( new LinkedObjects( mainItem, new GiftWrapping(mainItem) ));
public GiftWrapping(IOrderedItem mainItem) { Price = mainItem.Price + (mainItem.Price > 1000 ? 0 : 10); // Anything costing more than 1000 comes with free gift wrapping Weight = mainItem.Weight + 0.1; // Might be important for shipping cost estimation }
public void OnNext(IOrderedItem <T> t) { actual.OnNext(t.Value); }
internal void Drain() { if (!QueueDrainHelper.Enter(ref wip)) { return; } var b = actual; var vs = peek; var a = subscribers; int n = a.Length; int missed = 1; long e = emitted; for (;;) { long r = Volatile.Read(ref requested); for (;;) { if (Volatile.Read(ref cancelled)) { ClearAll(); return; } var ex = Volatile.Read(ref error); if (ex != null) { ex = ExceptionHelper.Terminate(ref error); CancelAll(); ClearAll(); b.OnError(ex); return; } bool fullRow = true; int finished = 0; IOrderedItem <T> min = null; int minIndex = -1; for (int i = 0; i < n; i++) { var inner = a[i]; bool d = Volatile.Read(ref inner.done); var q = Volatile.Read(ref inner.queue); if (q != null) { var vsi = vs[i]; if (vsi == null) { bool hasValue; try { hasValue = q.Poll(out vsi); } catch (Exception exc) { ExceptionHelper.AddError(ref error, exc); ex = ExceptionHelper.Terminate(ref error); CancelAll(); ClearAll(); b.OnError(ex); return; } if (hasValue) { vs[i] = vsi; if (min == null || min.CompareTo(vsi) > 0) { min = vsi; minIndex = i; } } else { if (d) { vs[i] = FINISHED; finished++; } else { fullRow = false; } } } else { if (vsi == FINISHED) { finished++; } else if (min == null || min.CompareTo(vsi) > 0) { min = vsi; minIndex = i; } } } else { fullRow = false; } } if (finished == n) { b.OnComplete(); return; } if (!fullRow || e == r || min == null) { break; } vs[minIndex] = null; b.OnNext(min.Value); e++; a[minIndex].RequestOne(); } emitted = e; missed = QueueDrainHelper.Leave(ref wip, missed); if (missed == 0) { break; } } }