Example #1
0
        public bool OrderDrinks(int drinkId, int pantryId)
        {
            var drink = _dbContext.Drinks.FirstOrDefault(x => x.Id == drinkId);

            if (drink == null)
            {
                throw new Exception("Data not found");
            }

            var pantry = _dbContext.Pantries.Include(x => x.Office).FirstOrDefault(x => x.Id == pantryId);

            if (pantry == null)
            {
                throw new Exception("Data not found");
            }

            var officeIngredients =
                _dbContext.OfficeIngredients.Include(x => x.Ingredient)
                .Include(x => x.Office)
                .Where(x => x.Office.Id == pantry.Office.Id)
                .ToList();

            var drinkIngredients =
                _dbContext.DrinkIngredients.Include(x => x.Ingredient)
                .Include(x => x.Drink)
                .Where(x => x.Drink.Id == drink.Id)
                .ToList();

            var hasEnough = true;

            foreach (var officeIngredient in officeIngredients)
            {
                var drinkIngredient =
                    drinkIngredients.First(x => x.Ingredient.Id == officeIngredient.Ingredient.Id);

                if (drinkIngredient.UnitsUsed >= officeIngredient.TotalUnitsLeft)
                {
                    hasEnough = false;
                    break;
                }

                officeIngredient.TotalUnitsLeft = officeIngredient.TotalUnitsLeft - drinkIngredient.UnitsUsed;
            }


            if (hasEnough)
            {
                var order = new Order
                {
                    Drink  = drink,
                    Pantry = pantry,
                    Office = pantry.Office
                };

                _dbContext.Orders.Add(order);
                _dbContext.SaveChanges();
            }

            return(hasEnough);
        }
Example #2
0
        public OfficeDto AddOffice(OfficeDto officeDto)
        {
            if (
                _dbContext.Offices.Any(
                    x =>
                    x.OfficeName.ToLower() == officeDto.OfficeName.ToLower() &&
                    x.Location.ToLower() == officeDto.Location.ToLower()))
            {
                throw new Exception("Already Existing");
            }
            var office = new Office
            {
                OfficeName = officeDto.OfficeName,
                Location   = officeDto.Location
            };

            _dbContext.Offices.Add(office);

            _dbContext.SaveChanges();

            officeDto.OfficeId = office.Id;

            return(officeDto);
        }
Example #3
0
        public PantryWithOfficeIdDto AddPantry(PantryWithOfficeIdDto pantryDto)
        {
            if (_dbContext.Pantries.Any(x => x.PantryName.ToLower() == pantryDto.PantryName.ToLower() && x.Office.Id == pantryDto.OfficeId))
            {
                throw new Exception("Pantry Already Exists");
            }
            var office = _dbContext.Offices.FirstOrDefault(x => x.Id == pantryDto.OfficeId);

            if (office == null)
            {
                throw new Exception("Data not found");
            }

            var pantry = new Pantry
            {
                PantryName = pantryDto.PantryName,
                Office     = office
            };

            _dbContext.Pantries.Add(pantry);
            _dbContext.SaveChanges();
            pantryDto.PantryId = pantry.Id;
            return(pantryDto);
        }
Example #4
0
        public bool AddIngredientToOffice(int sugar, int coffee, int milk, int officeId)
        {
            var office = _dbContext.Offices.FirstOrDefault(x => x.Id == officeId);

            if (office == null)
            {
                throw new Exception("Data not found");
            }

            var officeIngredients =
                _dbContext.OfficeIngredients.Include(x => x.Office)
                .Include(x => x.Ingredient)
                .Where(x => x.Office.Id == officeId)
                .ToList();

            if (officeIngredients.Count != 0)
            {
                foreach (var officeIngredient in officeIngredients)
                {
                    if (officeIngredient.Ingredient.IngredientName.ToLower().Contains("milk"))
                    {
                        officeIngredient.TotalUnitsLeft = officeIngredient.TotalUnitsLeft + milk * 15;
                        officeIngredient.StacksLeft     = (double)officeIngredient.TotalUnitsLeft / 15;
                    }
                    if (officeIngredient.Ingredient.IngredientName.ToLower().Contains("sugar"))
                    {
                        officeIngredient.TotalUnitsLeft = officeIngredient.TotalUnitsLeft + sugar * 15;
                        officeIngredient.StacksLeft     = (double)officeIngredient.TotalUnitsLeft / 15;
                    }
                    if (officeIngredient.Ingredient.IngredientName.ToLower().Contains("coffee"))
                    {
                        officeIngredient.TotalUnitsLeft = officeIngredient.TotalUnitsLeft + coffee * 15;
                        officeIngredient.StacksLeft     = (double)officeIngredient.TotalUnitsLeft / 15;
                    }
                }
            }
            else
            {
                var sugarEntity  = _dbContext.Ingredients.First(x => x.IngredientName.ToLower().Contains("sugar"));
                var coffeeEntity = _dbContext.Ingredients.First(x => x.IngredientName.ToLower().Contains("coffee"));
                var milkEntity   = _dbContext.Ingredients.First(x => x.IngredientName.ToLower().Contains("milk"));
                _dbContext.OfficeIngredients.Add(new OfficeIngredient
                {
                    Ingredient     = sugarEntity,
                    Office         = office,
                    StacksLeft     = sugar,
                    TotalUnitsLeft = sugar * 15
                });
                _dbContext.OfficeIngredients.Add(new OfficeIngredient
                {
                    Ingredient     = coffeeEntity,
                    Office         = office,
                    StacksLeft     = coffee,
                    TotalUnitsLeft = coffee * 15
                });
                _dbContext.OfficeIngredients.Add(new OfficeIngredient
                {
                    Ingredient     = milkEntity,
                    Office         = office,
                    StacksLeft     = milk,
                    TotalUnitsLeft = milk * 15
                });
            }
            _dbContext.SaveChanges();
            return(true);
        }