示例#1
0
        public Outputs Create(Inputs inputs)
        {
            StreamLoop <Fuel> sStart = new StreamLoop <Fuel>();
            Fill fi = new Fill(inputs.SClearSale,
                               inputs.SFuelPulses, inputs.Calibration,
                               inputs.Price1, inputs.Price2, inputs.Price3,
                               sStart);
            NotifyPointOfSale np = new NotifyPointOfSale(
                new LifeCycle(inputs.SNozzle1,
                              inputs.SNozzle2,
                              inputs.SNozzle3),
                inputs.SClearSale,
                fi);

            sStart.Loop(np.SStart);
            CellLoop <bool> keypadActive = new CellLoop <bool>();
            Keypad          ke           = new Keypad(inputs.SKeypad,
                                                      inputs.SClearSale,
                                                      keypadActive);
            Preset pr = new Preset(ke.Value, fi, np.FuelFlowing);

            keypadActive.Loop(pr.KeypadActive);
            return(new Outputs()
                   .SetDelivery(pr.Delivery)
                   .SetSaleCostLcd(fi.DollarsDelivered.Map(Formatters.FormatSaleCost))
                   .SetSaleQuantityLcd(fi.LitersDelivered.Map(Formatters.FormatSaleQuantity))
                   .SetPriceLcd1(ShowDollarsPump.PriceLcd(np.FillActive, fi.Price, Fuel.One, inputs))
                   .SetPriceLcd2(ShowDollarsPump.PriceLcd(np.FillActive, fi.Price, Fuel.Two, inputs))
                   .SetPriceLcd3(ShowDollarsPump.PriceLcd(np.FillActive, fi.Price, Fuel.Three, inputs))
                   .SetSaleComplete(np.SSaleComplete)
                   .SetPresetLcd(ke.Value.Map(Formatters.FormatPresetAmount))
                   .SetBeep(np.SBeep.OrElse(ke.SBeep)));
        }
示例#2
0
        public Outputs Create(Inputs inputs)
        {
            EventLoop <Fuel> eStart = new EventLoop <Fuel>();
            Fill             fi     = new Fill(inputs.EClearSale.Map(u => Unit.UNIT),
                                               inputs.EFuelPulses, inputs.Calibration,
                                               inputs.Price1, inputs.Price2, inputs.Price3,
                                               eStart);
            NotifyPointOfSale np = new NotifyPointOfSale(
                new LifeCycle(inputs.ENozzle1,
                              inputs.ENozzle2,
                              inputs.ENozzle3),
                inputs.EClearSale,
                fi);

            eStart.Loop(np.EStart);
            BehaviorLoop <bool> keypadActive = new BehaviorLoop <bool>();
            Keypad ke = new Keypad(inputs.EKeypad,
                                   inputs.EClearSale,
                                   keypadActive);
            Preset pr = new Preset(ke.Value,
                                   fi,
                                   np.FuelFlowing,
                                   np.FillActive.Map(o => o.IsPresent));

            keypadActive.Loop(pr.KeypadActive);
            return(new Outputs()
                   .SetDelivery(pr.Delivery)
                   .SetSaleCostLcd(fi.DollarsDelivered.Map(q => Formatters.FormatSaleCost(q)))
                   .SetSaleQuantityLcd(fi.LitersDelivered.Map(q => Formatters.FormatSaleQuantity(q)))
                   .SetPriceLcd1(ShowDollarsPump.PriceLCD(np.FillActive, fi.Price, Fuel.ONE, inputs))
                   .SetPriceLcd2(ShowDollarsPump.PriceLCD(np.FillActive, fi.Price, Fuel.TWO, inputs))
                   .SetPriceLcd3(ShowDollarsPump.PriceLCD(np.FillActive, fi.Price, Fuel.THREE, inputs))
                   .SetSaleComplete(np.ESaleComplete)
                   .SetPresetLcd(ke.Value.Map(v => Formatters.FormatSaleCost((double)v)))
                   .SetBeep(np.EBeep.Merge(ke.EBeep)));
        }