public Outputs Create(Inputs inputs) { LifeCycle lc = new LifeCycle(inputs.ENozzle1, inputs.ENozzle2, inputs.ENozzle3); Fill fi = new Fill(lc.EStart.Map(u => Unit.UNIT), inputs.EFuelPulses, inputs.Calibration, inputs.Price1, inputs.Price2, inputs.Price3, lc.EStart); return new Outputs() .SetDelivery(lc.FillActive.Map( of => of.Equals(Optional<Fuel>.Of(Fuel.ONE)) ? Delivery.FAST1 : of.Equals(Optional<Fuel>.Of(Fuel.TWO)) ? Delivery.FAST2 : of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? Delivery.FAST3 : Delivery.OFF)) .SetSaleCostLcd(fi.DollarsDelivered.Map( q => Formatters.FormatSaleCost(q))) .SetSaleQuantityLcd(fi.LitersDelivered.Map( q => Formatters.FormatSaleQuantity(q))) .SetPriceLcd1(PriceLCD(lc.FillActive, fi.Price, Fuel.ONE, inputs)) .SetPriceLcd2(PriceLCD(lc.FillActive, fi.Price, Fuel.TWO, inputs)) .SetPriceLcd3(PriceLCD(lc.FillActive, fi.Price, Fuel.THREE, inputs)); }
public Outputs Create(Inputs inputs) { LifeCycle lc = new LifeCycle(inputs.ENozzle1, inputs.ENozzle2, inputs.ENozzle3); return new Outputs() .SetDelivery(lc.FillActive.Map( of => of.Equals(Optional<Fuel>.Of(Fuel.ONE)) ? Delivery.FAST1 : of.Equals(Optional<Fuel>.Of(Fuel.TWO)) ? Delivery.FAST2 : of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? Delivery.FAST3 : Delivery.OFF)) .SetSaleQuantityLcd(lc.FillActive.Map( of => of.Equals(Optional<Fuel>.Of(Fuel.ONE)) ? "1" : of.Equals(Optional<Fuel>.Of(Fuel.TWO)) ? "2" : of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? "3" : "")); }
public Outputs Create(Inputs inputs) { LifeCycle lc = new LifeCycle(inputs.ENozzle1, inputs.ENozzle2, inputs.ENozzle3); Behavior<Double> litersDelivered = Accumulate(lc.EStart.Map(u => Unit.UNIT), inputs.EFuelPulses, inputs.Calibration); return new Outputs() .SetDelivery(lc.FillActive.Map( Of => Of.Equals(Optional<Fuel>.Of(Fuel.ONE)) ? Delivery.FAST1 : Of.Equals(Optional<Fuel>.Of(Fuel.TWO)) ? Delivery.FAST2 : Of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? Delivery.FAST3 : Delivery.OFF)) .SetSaleQuantityLcd(litersDelivered.Map( q => Formatters.FormatSaleQuantity(q))); }
public Outputs Create(Inputs inputs) { LifeCycle lc = new LifeCycle(inputs.ENozzle1, inputs.ENozzle2, inputs.ENozzle3); return(new Outputs() .SetDelivery(lc.FillActive.Map( of => of.Equals(Optional <Fuel> .Of(Fuel.ONE)) ? Delivery.FAST1 : of.Equals(Optional <Fuel> .Of(Fuel.TWO)) ? Delivery.FAST2 : of.Equals(Optional <Fuel> .Of(Fuel.THREE)) ? Delivery.FAST3 : Delivery.OFF)) .SetSaleQuantityLcd(lc.FillActive.Map( of => of.Equals(Optional <Fuel> .Of(Fuel.ONE)) ? "1" : of.Equals(Optional <Fuel> .Of(Fuel.TWO)) ? "2" : of.Equals(Optional <Fuel> .Of(Fuel.THREE)) ? "3" : ""))); }
public NotifyPointOfSale( LifeCycle lc, Event<Unit> eClearSale, Fill fi) { Behavior<Boolean> locked = lc.EStart.Map(u => true).Merge(eClearSale.Map(u => false)).Hold(false); EStart = lc.EStart.Gate(locked.Map(l => !l)); EEnd = lc.EEnd.Gate(locked); FuelFlowing = EStart.Map(f => Optional<Fuel>.Of(f)) .Merge(EEnd.Map(f => Optional<Fuel>.Empty())).Hold(Optional<Fuel>.Empty()); FillActive = EStart.Map(f => Optional<Fuel>.Of(f)) .Merge(eClearSale.Map(f => Optional<Fuel>.Empty())).Hold(Optional<Fuel>.Empty()); EBeep = eClearSale; ESaleComplete = Event<Sale>.FilterOptional( EEnd.Snapshot( Behavior<Sale>.Lift( (oFuel, price_, dollars, liters) => oFuel.IsPresent ? Optional<Sale>.Of(new Sale(oFuel.Get(), price_, dollars, liters)) : Optional<Sale>.Empty(), FuelFlowing, fi.Price, fi.DollarsDelivered, fi.LitersDelivered))); }