// clear the current list of ingredients for a given recipe and add the ones based on the file to ingest
        private static void addIngredients(RecipeObj recipe)
        {
            // clear the current list
            using (var context = new WoolworthsDBDataContext())
            {
                var ingredToDel = context.RecipeIngredients.Where(r => r.RecipeID == recipe.RecipeID);
                context.RecipeIngredients.DeleteAllOnSubmit(ingredToDel);
                context.SubmitChanges();
            }

            if (recipe.Ingredients == null)
            {
                return;
            }

            using (var context = new WoolworthsDBDataContext())
            {
                foreach (var ingred in recipe.Ingredients.Select(obj => new RecipeIngredient()
                {
                    Description = obj.Ingredient,
                    Number = obj.IngredientID,
                    ProductArticle = obj.ProductID,
                    RecipeID = recipe.RecipeID
                }))
                {
                    context.RecipeIngredients.InsertOnSubmit(ingred);
                }
                context.SubmitChanges();
            }
        }
        // clear the current list of methods for a given recipe and add the ones based on the file to ingest
        private static void addMethods(RecipeObj recipe)
        {
            // clear the current list
            using (var context = new WoolworthsDBDataContext())
            {
                var methodToDel = context.RecipeMethods.Where(r => r.RecipeID == recipe.RecipeID);
                context.RecipeMethods.DeleteAllOnSubmit(methodToDel);
                context.SubmitChanges();
            }

            if (recipe.Methods == null)
            {
                return;
            }

            using (var context = new WoolworthsDBDataContext())
            {
                foreach (var method in recipe.Methods.Select(obj => new RecipeMethod()
                {
                    Description = obj.Step,
                    Number = obj.StepID,
                    RecipeID = recipe.RecipeID
                }))
                {
                    context.RecipeMethods.InsertOnSubmit(method);
                }
                context.SubmitChanges();
            }
        }
Example #3
0
 // OLD VERSION
 //public OrderResponse GiveMeAnOrderAgain(string orderRef, string recipe)
 public OrderResponse GiveMeAnOrderAgain(string orderRef, RecipeObj recipe)
 => new OrderResponse()
 {
     c    = CommandEnum.Process,
     rc   = ResponseCodeEnum.InvalidRequest,
     e    = ErrorEnum.OrderAlreadyTaken,
     oref = orderRef,
     rec  = recipe
 };
Example #4
0
 // OLD VERSION
 //public OrderResponse GiveMeAnOrderOK(string orderRef, string recipe)
 public OrderResponse GiveMeAnOrderOK(string orderRef, RecipeObj recipe)
 => new OrderResponse()
 {
     c    = CommandEnum.Process,
     rc   = ResponseCodeEnum.OK,
     e    = ErrorEnum.Void,
     oref = orderRef,
     rec  = recipe
 };
Example #5
0
        // OLD VERSION
        //public bool TryToTakeOrder(out CommandEnum command, out string orderRef, out string recipe)
        public bool TryToTakeOrder(out CommandEnum command, out string orderRef, out RecipeObj recipe)
        {
            Dashboard.Sgt.LogAsync($"I will ask for an order ({DateTime.Now.ToString()}).");
            var           giveMeOrderRequest = _ardRequestFac.GiveMeAnOrder();
            OrderResponse response;
            var           ack = Send(giveMeOrderRequest, out response, _serverApiUrl + ORDER_ROUTE);

            orderRef = response?.oref;
            recipe   = response?.rec;
            command  = response?.c ?? CommandEnum.Undef;
            if (orderRef != null)
            {
                Dashboard.Sgt.LogAsync($"ORDER RECEIVED!!!! ref: {orderRef}.");
            }
            return(ack);
        }
        // adds or returns the actual Recipe record (id)
        private int createRecipeRecord(RecipeObj recipe)
        {
            using (var context = new WoolworthsDBDataContext())
            {
                var existing = context.Recipes.SingleOrDefault(r => r.ID == recipe.RecipeID);

                // if the recipe already exists and the action isn't to update then just return the recipe identifier
                if (existing != null) //Always update, regardless of action (well, it should be "i" or "u" -- && recipe.Action.ToLower() == "u")
                {
                    // if the recipe exists and the instruction is to update then updates
                    existing.CookingTime    = recipe.CookingTime;
                    existing.Description    = recipe.Description;
                    existing.Recipe1        = recipe.Recipe;
                    existing.ImageURL       = downloadRemoteImageFile(recipe.ImageURL, ImgDir, recipe.Recipe);
                    existing.OriginImageUrl = recipe.ImageURL;
                    existing.PrepTime       = recipe.PreparationTime;
                    existing.Serves         = recipe.Serves;
                    existing.Tip            = recipe.Tip;
                    existing.Title          = recipe.Title;
                    existing.TotalTime      = recipe.TotalTime;
                    context.SubmitChanges();
                    return(existing.ID);
                }
                else
                {
                    // create the record regardless of whether it was an insert or update record
                    var newRecipe = new WoolworthsDAL.Recipe
                    {
                        ID             = recipe.RecipeID,
                        CookingTime    = recipe.CookingTime,
                        Recipe1        = recipe.Recipe,
                        Description    = recipe.Description,
                        ImageURL       = downloadRemoteImageFile(recipe.ImageURL, ImgDir, recipe.Recipe),
                        OriginImageUrl = recipe.ImageURL,
                        PrepTime       = recipe.PreparationTime,
                        Serves         = recipe.Serves,
                        Tip            = recipe.Tip,
                        Title          = recipe.Title,
                        TotalTime      = recipe.TotalTime
                    };
                    context.Recipes.InsertOnSubmit(newRecipe);
                    context.SubmitChanges();
                    return(newRecipe.ID);
                }
            }
        }
        // work out if the cuisine already exists, if it does then use it for the mapping table, else create it
        private static void addCuisines(RecipeObj recipe)
        {
            using (var context = new WoolworthsDBDataContext())
            {
                // clear the current mappings
                var maps = context.RecipeCuisineMaps.Where(r => r.RecipeID == recipe.RecipeID);
                context.RecipeCuisineMaps.DeleteAllOnSubmit(maps);
                context.SubmitChanges();

                if (recipe.Cuisines == null)
                {
                    return;
                }

                foreach (var cuisine in recipe.Cuisines)
                {
                    // create or retrieve the RecipeCuisine.ID value
                    var master          = context.RecipeCuisines.SingleOrDefault(c => c.Description == cuisine.Cuisine);
                    var recipeCuisineID = 0;
                    if (master == null)
                    {
                        var toCreate = new RecipeCuisine()
                        {
                            Description = cuisine.Cuisine
                        };
                        context.RecipeCuisines.InsertOnSubmit(toCreate);
                        context.SubmitChanges();
                        recipeCuisineID = toCreate.ID;
                    }
                    else
                    {
                        recipeCuisineID = master.ID;
                    }

                    // add to the mapping table
                    var map = new RecipeCuisineMap()
                    {
                        RecipeCuisineID = recipeCuisineID,
                        RecipeID        = recipe.RecipeID
                    };
                    context.RecipeCuisineMaps.InsertOnSubmit(map);
                    context.SubmitChanges();
                }
            }
        }
        // update a given recipe
        private void updateRecipe(RecipeObj recipe)
        {
            // go through the recipe metadata and create/update if necessary
            createRecipeRecord(recipe);

            // ingredients
            addIngredients(recipe);

            // methods
            addMethods(recipe);

            // cuisines
            addCuisines(recipe);

            // mealtypess
            addMealTypes(recipe);

            // facts
            addFacts(recipe);

            // divisions
            addDivisions(recipe);
        }