public ManualMealEntity ToManualMeal(NormalMealEntity normalMeal, ManualBillEntity bill = null)
        {
            if (normalMeal == null)
            {
                throw new ArgumentNullException("normalMeal");
            }

            if (bill != null && normalMeal.BillId != bill.BillId)
            {
                throw new ArgumentOutOfRangeException("bill");
            }

            var manualMeal = new ManualMealEntity()
            {
                Bill        = bill,
                BillId      = normalMeal.BillId,
                LastUpdated = normalMeal.LastUpdated,
                MealId      = normalMeal.MealId,
                Name        = normalMeal.Name,
                Timestamp   = normalMeal.Timestamp
            };

            if (normalMeal.Courses != null)
            {
                manualMeal.Courses = normalMeal.Courses.Select(x => ToManualFoodCourse(x, bill, manualMeal)).ToList();
            }

            return(manualMeal);
        }
        public NormalContextTestValues()
        {
            Cereal1 = new NormalFoodCourseEntity()
            {
                Name        = "Generic cereal with milk",
                Cost        = 2.20M,
                Type        = FoodCourseType.Starter,
                LastUpdated = DateTime.Now
            };

            Cereal2 = new NormalFoodCourseEntity()
            {
                Name        = "Generic cereal with soya milk",
                Cost        = 2.20M,
                Type        = FoodCourseType.Starter,
                LastUpdated = DateTime.Now
            };

            FryUp = new NormalFoodCourseEntity()
            {
                Name        = "Bacon, eggs, sausage, etc",
                Cost        = 6.00M,
                Type        = FoodCourseType.Main,
                LastUpdated = DateTime.Now
            };

            CerealAndFryUpBreakfast = new NormalMealEntity()
            {
                Name        = "Cereal and fry-up breakfast",
                LastUpdated = DateTime.Now
            };

            CerealAndFryUpBreakfast.Courses.Add(Cereal1);
            CerealAndFryUpBreakfast.Courses.Add(FryUp);

            CerealOnlyBreakfast = new NormalMealEntity()
            {
                Name        = "Cereal only breakfast",
                LastUpdated = DateTime.Now
            };

            CerealOnlyBreakfast.Courses.Add(Cereal2);

            Bill = new NormalBillEntity()
            {
                LastUpdated = DateTime.Now
            };

            Bill.Meals.Add(CerealAndFryUpBreakfast);
            Bill.Meals.Add(CerealOnlyBreakfast);

            CourseCount = Bill.Meals.SelectMany(x => x.Courses).Count();
            MealCount   = Bill.Meals.Count();
        }