public ObservableCollection<FoodCategoryViewModel> GetFoodCategories()
        {
            _foodCategories = new ObservableCollection<FoodCategoryViewModel>();
            using (var db = new SQLite.SQLiteConnection(App.DBPath))
            {
                var query = db.Table<FoodCategory>().OrderBy(c => c.Id);
                foreach (var _foodCategory in query)
                {
                    var foodcategory = new FoodCategoryViewModel()
                    {
                        Id = _foodCategory.Id,
                        Name = _foodCategory.Name
                    };

                    _foodCategories.Add(foodcategory);
                }
            }

            return _foodCategories;
        }
        public FoodCategoryViewModel GetFoodCategory(int foodCategoryId)
        {
            var foodcategoryitem = new FoodCategoryViewModel();
            using (var db = new SQLite.SQLiteConnection(App.DBPath))
            {
                var _foodCategory = (db.Table<FoodCategory>().Where(
                    c => c.Id == foodCategoryId)).Single();
                foodcategoryitem.Id = _foodCategory.Id;
                foodcategoryitem.Name = _foodCategory.Name;
                foodcategoryitem.UnitOfMeasure = _foodCategory.UnitOfMeasure;
            }

            return foodcategoryitem;
        }
        public FoodCategoryViewModel GetFoodCategoryByName(string foodCategoryName)
        {
            FoodCategoryViewModel foodCategory = null;

            using (var db = new SQLite.SQLiteConnection(App.DBPath))
            {
                try
                {
                    var _foodCategory = (db.Table<FoodCategory>().Where(
                        c => c.Name.Contains(foodCategoryName))).Single();
                    if (_foodCategory != null)
                    {
                        foodCategory = new FoodCategoryViewModel();
                        foodCategory.Id = _foodCategory.Id;
                        foodCategory.Name = _foodCategory.Name;
                        foodCategory.UnitOfMeasure = _foodCategory.UnitOfMeasure;
                    }
                }
                catch { }
            }

            return foodCategory;
        }
        public string SaveFoodCategory(FoodCategoryViewModel foodCategory)
        {
            string result = string.Empty;
            using (var db = new SQLite.SQLiteConnection(App.DBPath))
            {
                //string change = string.Empty;
                try
                {
                    var existingFoodCategory = (db.Table<FoodCategory>().Where(
                        c => c.Id == foodCategory.Id)).SingleOrDefault();

                    if (existingFoodCategory != null)
                    {
                        existingFoodCategory.Name = foodCategory.Name;
                        existingFoodCategory.UnitOfMeasure = foodCategory.UnitOfMeasure;

                        int success = db.Update(existingFoodCategory);
                    }
                    else
                    {
                        int success = db.Insert(new FoodCategory()
                        {
                            Name = foodCategory.Name,
                            UnitOfMeasure = foodCategory.UnitOfMeasure
                        });
                    }

                    result = "Success";
                }
                catch
                {
                    result = "This food category item was not saved.";
                }
            }

            return result;
        }
        private async void ImportMealItemsData(string fileContent, string mealItemCategory)
        {
            string line = "";
            string[] mealItemsRaw = fileContent.Split('|');
            char[] trimChar = {'\n','\r'};
            bool mealItemExists = false;

            foreach(var mealItemRaw in mealItemsRaw)
            {
                if (mealItemRaw.ToString().Length == 0) { continue; }
                string mealItemInfo = mealItemRaw.TrimStart(trimChar);
                using (System.IO.StringReader stringReader = new System.IO.StringReader(mealItemInfo))
                {
                    int lineNo = 0;
                    string mealItemName = "";
                    float grossWeight = 0;
                    float divisionFactor = 0;
                    string grossWeightUnitOfMeasure = "";
                    List<string> rawIngredients = new List<string>();

                    while ((line = await stringReader.ReadLineAsync()) != null)
                    {
                        // At 0 this should be the name
                        if (lineNo == 0)
                        {
                            mealItemName = CleanMealItemName(line);
                            MealItemViewModel mealItemView = new MealItemViewModel();
                            // In case the meal item exists we move on to the next
                            if (mealItemView.MealItemExists(mealItemName) == true) { mealItemExists = true; break; }
                            lineNo++;
                            continue;
                        }

                        if (line.Contains("Personen"))
                        {
                            string _grossWeight;
                            string _divisionFactor;
                            GetGrossWeightAndDivisionFactor(line, out _grossWeight, 
                                out grossWeightUnitOfMeasure, out _divisionFactor);
                            _divisionFactor = _divisionFactor.Replace(',', '.');
                            _grossWeight = _grossWeight.Replace(',', '.');
                            divisionFactor = float.Parse(_divisionFactor, CultureInfo.InvariantCulture.NumberFormat);
                            grossWeight = float.Parse(_grossWeight, CultureInfo.InvariantCulture.NumberFormat) / divisionFactor;
                            
                            lineNo++;
                            continue;
                        }

                        rawIngredients = InterpretIngredientDefinition(line);
                        lineNo++;
                    }

                    // Let's see if there was an inner break
                    if (mealItemExists) { mealItemExists = false; continue; }

                    // if go this far it means a new meal item
                    MealItemViewModel mealItem = new MealItemViewModel();
                    IngredientViewModel ingredient = null;
                    foreach (var rawIngredient in rawIngredients)
                    {
                        string amount;
                        string unitOfMeasure;
                        ingredient = GetIngredientDetails(rawIngredient, out amount, out unitOfMeasure);

                        if (ingredient != null)
                        {
                            UnitOfMeasureViewModel unitOfMeasureModel = new UnitOfMeasureViewModel();
                            unitOfMeasureModel = unitOfMeasureModel.GetUnitOfMeasure(ingredient.UnitOfMeasure);
                            amount = amount.Replace(',', '.');
                            float floatAmount = float.Parse(amount, CultureInfo.InvariantCulture.NumberFormat);

                            // Recalculating kilogramms and liters
                            if ((unitOfMeasure.Equals("kg", StringComparison.CurrentCultureIgnoreCase)) ||
                                    (unitOfMeasure.Equals("Ltr", StringComparison.CurrentCultureIgnoreCase)))
                                floatAmount = floatAmount * 1000;
                            // Devive by the number of people all amounts were calculated for
                            floatAmount = floatAmount / divisionFactor;
                            mealItem.IngredientIDsWithTotalAmount.Add(ingredient.Id, floatAmount);
                        }
                    }

                    mealItem.Name = mealItemName;
                    if (grossWeightUnitOfMeasure.Equals("Ltr", StringComparison.CurrentCultureIgnoreCase) ||
                        grossWeightUnitOfMeasure.Equals("kg", StringComparison.CurrentCultureIgnoreCase))
                        grossWeight = grossWeight * 1000;

                    if (grossWeightUnitOfMeasure.Equals("kg", StringComparison.CurrentCultureIgnoreCase) ||
                        grossWeightUnitOfMeasure.Equals("g", StringComparison.CurrentCultureIgnoreCase))
                        mealItem.TotalAmountUnitOfMeasure = 1;

                    if (grossWeightUnitOfMeasure.Equals("Ltr", StringComparison.CurrentCultureIgnoreCase) ||
                        grossWeightUnitOfMeasure.Equals("ml", StringComparison.CurrentCultureIgnoreCase))
                        mealItem.TotalAmountUnitOfMeasure = 2;

                    mealItem.TotalAmount = grossWeight;
                    FoodCategoryViewModel mealItemCategoryModel = new FoodCategoryViewModel();
                    mealItemCategoryModel = mealItemCategoryModel.GetFoodCategoryByName(mealItemCategory);
                    if (mealItemCategoryModel != null) { mealItem.CategoryId = mealItemCategoryModel.Id; }
                    _mealItems.Add(mealItem);
                     
                }
            }
        }