示例#1
0
        public TrortAdder()
        {
            _Adders[0].CarryOutput += _Adders[1].InputCarry;
            _Adders[0].SumOutput   += (s, t) => { _Trits[0] = t; };

            _Adders[1].CarryOutput += _Adders[2].InputCarry;
            _Adders[1].SumOutput   += (s, t) => { _Trits[1] = t; };

            _Adders[2].CarryOutput += _Adders[3].InputCarry;
            _Adders[2].SumOutput   += (s, t) => { _Trits[2] = t; };

            _Adders[3].CarryOutput += _Adders[4].InputCarry;
            _Adders[3].SumOutput   += (s, t) => { _Trits[3] = t; };

            _Adders[4].CarryOutput += _Adders[5].InputCarry;
            _Adders[4].SumOutput   += (s, t) => { _Trits[4] = t; };

            _Adders[5].CarryOutput += _Adders[6].InputCarry;
            _Adders[5].SumOutput   += (s, t) => { _Trits[5] = t; };

            _Adders[6].CarryOutput += _Adders[7].InputCarry;
            _Adders[6].SumOutput   += (s, t) => { _Trits[6] = t; };

            _Adders[7].CarryOutput += _Adders[8].InputCarry;
            _Adders[7].SumOutput   += (s, t) => { _Trits[7] = t; };

            _Adders[8].CarryOutput += _Adders[9].InputCarry;
            _Adders[8].SumOutput   += (s, t) => { _Trits[8] = t; };

            _Adders[9].CarryOutput += _Adders[10].InputCarry;
            _Adders[9].SumOutput   += (s, t) => { _Trits[9] = t; };

            _Adders[10].CarryOutput += _Adders[11].InputCarry;
            _Adders[10].SumOutput   += (s, t) => { _Trits[10] = t; };

            _Adders[Trort.NUMBER_OF_TRITS - 1].CarryOutput += (s, carry) =>
            {
                CarryOutState = carry;

                if (!locker)
                {
                    CarryOut?.Invoke(this, carry);
                }
            };

            _Adders[Trort.NUMBER_OF_TRITS - 1].SumOutput += (s, sum) =>
            {
                _Trits[Trort.NUMBER_OF_TRITS - 1] = sum;

                if (!locker)
                {
                    BusOutput?.Invoke(this, BusValue);
                }
            };
        }
        public AddToCartResponse AddToCart(AddToCartRequest request)
        {
            var response = new AddToCartResponse
            {
                IsSuccessful = false,
                Message      = ""
            };

            try
            {
                var customer = _context.Customers
                               .Where(x => x.Id == request.CarryOutToAddToCart.CustomerId)
                               .FirstOrDefault();

                Food            food                    = null;
                List <CarryOut> existingFood            = null;
                Beverage        beverage                = null;
                List <CarryOut> existingBeverages       = null;
                int             currentFoodQuantity     = 0;
                int             currentBeverageQuantity = 0;

                if (request.CarryOutToAddToCart.Food != null)
                {
                    food = _context.Foods
                           .Where(x => x.Id == request.CarryOutToAddToCart.Food.Id)
                           .FirstOrDefault();
                }
                if (request.CarryOutToAddToCart.Beverage != null)
                {
                    beverage = _context.Beverages
                               .Where(x => x.Id == request.CarryOutToAddToCart.Beverage.Id)
                               .FirstOrDefault();
                }

                if (customer != null)
                {
                    if (food != null)
                    {
                        existingFood = _context.CarryOuts
                                       .Include(x => x.Food)
                                       .Include(x => x.Beverage)
                                       .Include(x => x.Customer)
                                       .Where(x => x.Customer.Id == customer.Id)
                                       .Where(x => x.Food.Name == food.Name)
                                       .Where(x => x.SubmissionTime == null)
                                       .ToList();

                        foreach (var item in existingFood)
                        {
                            currentFoodQuantity += item.FoodQuantity;
                        }

                        _context.RemoveRange(existingFood);
                    }

                    if (beverage != null)
                    {
                        existingBeverages = _context.CarryOuts
                                            .Include(x => x.Food)
                                            .Include(x => x.Beverage)
                                            .Include(x => x.Customer)
                                            .Where(x => x.Customer.Id == customer.Id)
                                            .Where(x => x.Beverage.Name == beverage.Name)
                                            .Where(x => x.SubmissionTime == null)
                                            .ToList();

                        foreach (var item in existingBeverages)
                        {
                            currentBeverageQuantity += item.BeverageQuantity;
                        }

                        _context.RemoveRange(existingBeverages);
                    }

                    var cartItem = new CarryOut
                    {
                        Beverage         = beverage,
                        BeverageQuantity = request.CarryOutToAddToCart.BeverageQuantity + currentBeverageQuantity,
                        BundleId         = 0,
                        Customer         = customer,
                        Food             = food,
                        FoodQuantity     = request.CarryOutToAddToCart.FoodQuantity + currentFoodQuantity,
                        SubmissionTime   = null,
                        Id = 0
                    };

                    _context.Add(cartItem);
                    _context.SaveChanges();

                    response.IsSuccessful = true;
                    response.Message      = "Successfully added carry out to cart for the customer.";
                }
            }
            catch (Exception ex)
            {
                response.Message = ex.ToString();
            }

            return(response);
        }