Beispiel #1
0
        public void UpdateStep1(RecipeStep step)
        {
            var allStepForRecipe = recipeAdapter.GetStepForRecipe(step.RecipeId);
            var recipeToUpdate   = allStepForRecipe.FirstOrDefault(r => r.Id == step.Id);

            if (step.Order < recipeToUpdate.Order)
            {
                var stepsBetween = allStepForRecipe.Where(r => r.Order >= step.Order && r.Order < recipeToUpdate.Order);
                foreach (var item in stepsBetween)
                {
                    item.Order++;
                    recipeAdapter.UpdateStep(item.Id, item.Text, item.Order);
                }
            }
            else
            {
                var stepsBetween = allStepForRecipe.Where(r => r.Order <= step.Order && r.Order > recipeToUpdate.Order);
                foreach (var item in stepsBetween)
                {
                    item.Order--;
                    recipeAdapter.UpdateStep(item.Id, item.Text, item.Order);
                }
            }

            recipeAdapter.UpdateStep(step.Id, step.Text, step.Order);
        }
Beispiel #2
0
        public void UpdateStep(RecipeStep step)
        {
            var allStepForRecipe = recipeAdapter.GetStepForRecipe(step.RecipeId).ToList();
            var recipeToUpdate   = allStepForRecipe.FirstOrDefault(r => r.Id == step.Id);

            bool isTextChanged = !string.IsNullOrEmpty(step.Text) && step.Text != recipeToUpdate.Text;

            if (isTextChanged && step.Order == recipeToUpdate.Order)
            {
                recipeAdapter.UpdateStep(step.Id, step.Text);
                return;
            }

            allStepForRecipe.OrderBy(s => s.Order);
            allStepForRecipe.Remove(recipeToUpdate);
            allStepForRecipe.Insert(step.Order - 1, recipeToUpdate);

            int order = 1;

            foreach (var item in allStepForRecipe)
            {
                item.Order = order++;
                if (item.Id == recipeToUpdate.Id)
                {
                    recipeAdapter.UpdateStep(step.Id, isTextChanged ? step.Text : null, step.Order);
                    continue;
                }
                recipeAdapter.UpdateStep(item.Id, order: item.Order);
            }
        }
        public IActionResult CreateStep(RecipeStep s, bool addingIngredient)
        {
            if (ModelState.IsValid && !addingIngredient)
            {
                recipeStep.TempRequiredCookware  = s.TempRequiredCookware;
                recipeStep.TempSuggestedCookware = s.TempSuggestedCookware;
                recipeStep.SeperateListStrings();
                recipeStep.Instructions = s.Instructions;
                recipeStep.IsTimer      = s.IsTimer;
                recipeStep.Timer        = s.Timer;
                recipeStep.TimerName    = s.TimerName;


                recipe.Steps.Add(recipeStep);
                return(View("Create", recipe));
            }
            else if (addingIngredient)
            {
                recipeStep.TempRequiredCookware  = s.TempRequiredCookware;
                recipeStep.TempSuggestedCookware = s.TempSuggestedCookware;
                recipeStep.SeperateListStrings();
                recipeStep.Instructions         = s.Instructions;
                recipeStep.IsTimer              = s.IsTimer;
                recipeStep.Timer                = s.Timer;
                recipeStep.TimerName            = s.TimerName;
                recipeStep.TempRequiredCookware = s.TempRequiredCookware;

                return(RedirectToAction("CreateIngredient", recipeStep));
            }
            else
            {
                return(View());
            }
        }
Beispiel #4
0
        public async Task AddStepToRecipeAsync_Should_Add_Step()
        {
            //Arrange
            List <Recipe>     mockRecipeDB = GetRecipes();
            List <RecipeStep> mockStepsDB  = GetSteps();
            Recipe            target       = new Recipe {
                Id = 1, Name = "Recipe 1", Description = "desc1", CategoryId = 1, Steps = new List <RecipeStep>()
            };
            string newStep = "test step"; //stepnnumber = 1

            _mockRepository.Setup(r => r.FirstOrDefaultAsync <Recipe>(It.IsAny <Expression <Func <Recipe, bool> > >()))
            .ReturnsAsync(() => mockRecipeDB.SingleOrDefault(x => string.Equals(x.Name, target.Name, StringComparison.OrdinalIgnoreCase) && x.CategoryId == target.CategoryId && x.Id == target.Id));
            _mockRepository.Setup(r => r.UpdateAsync <Recipe>(It.Is <Recipe>(x => x.Name == target.Name && x.Id == target.Id)))
            .Callback((Recipe recipe) =>
            {
                RecipeStep toAdd = new RecipeStep {
                    Id = 1, Description = newStep, RecipeId = recipe.Id, StepNumber = recipe.Steps.Count + 1
                };
                mockStepsDB.Add(toAdd);
            });
            //Act
            await _recipeStepController.AddStepToRecipeAsync(target, newStep);

            //Assert
            var retrieved = mockStepsDB.FirstOrDefault(x => x.Description == newStep);

            _mockRepository.Verify(r => r.FirstOrDefaultAsync <Recipe>(It.IsAny <Expression <Func <Recipe, bool> > >()), Times.Once);
            _mockRepository.Verify(r => r.UpdateAsync <Recipe>(It.Is <Recipe>(x => x.Name == target.Name && x.Id == target.Id)), Times.Once);
            Assert.NotNull(retrieved);
        }
Beispiel #5
0
        public void When_UpdateRecipeStepLowToHight_Then()
        {
            var steps = GetSteps();

            myRecipeDataAdapter.GetStepForRecipe(Arg.Any <Guid>()).Returns(steps);
            var step = new RecipeStep
            {
                Id    = steps[3].Id,
                Order = 1
            };

            myService.UpdateStep(step);

            var expectedResult = new Dictionary <Guid, int>
            {
                { myStepId0, 2 },
                { myStepId1, 3 },
                { myStepId2, 4 },
                { myStepId3, 1 }
            };

            foreach (var item in steps)
            {
                myRecipeDataAdapter.Received().UpdateStep(item.Id, null, expectedResult[item.Id]);
            }
        }
Beispiel #6
0
        public ActionResult AddStep(AddFoodStepViewModel addFoodStepViewModel)
        {
            if (ModelState.IsValid)
            {
                var ingredientSize = new RecipeStep()
                {
                    Description = addFoodStepViewModel.Description,
                    Title       = addFoodStepViewModel.Title,
                    Order       = addFoodStepViewModel.Order,
                    RecipeID    = addFoodStepViewModel.StebRecipeID
                };

                if (Request.Files.Count > 0)
                {
                    ingredientSize.Image = new Image(Request.Files[0]);
                }
                var recipe = repository.GetRecipe(addFoodStepViewModel.StebRecipeID);

                recipe.Steps.Add(ingredientSize);

                repository.UpdateRecipe(recipe);

                TempData["Message"] = $"Step added to {recipe.Title}";
            }

            return(RedirectToAction("Details", new { id = addFoodStepViewModel.StebRecipeID }));
        }
Beispiel #7
0
 public RecipeStep UpdateRecipeStep(RecipeStep recipeStep)
 {
     this.db.Attach(recipeStep);
     this.db.Entry(recipeStep).State = EntityState.Modified;
     this.db.SaveChanges();
     return(recipeStep);
 }
Beispiel #8
0
        public RecipeStep Dequeue(string executionId)
        {
            if (!_appDataFolder.DirectoryExists(Path.Combine(_recipeQueueFolder, executionId)))
            {
                return(null);
            }
            RecipeStep recipeStep = null;
            int        stepIndex  = GetFirstStepIndex(executionId);

            if (stepIndex >= 0)
            {
                var stepPath = Path.Combine(_recipeQueueFolder, executionId + Path.DirectorySeparatorChar + stepIndex);
                // string to xelement
                var stepElement = XElement.Parse(_appDataFolder.ReadFile(stepPath));
                var stepName    = stepElement.Element("Name").Value;
                recipeStep = new RecipeStep {
                    Name = stepName,
                    Step = stepElement.Element(stepName)
                };
                _appDataFolder.DeleteFile(stepPath);
            }

            if (stepIndex < 0)
            {
                _appDataFolder.DeleteFile(Path.Combine(_recipeQueueFolder, executionId));
            }

            return(recipeStep);
        }
Beispiel #9
0
		public static Recipe FromJson(Context context, JSONObject json) {
			var recipe = new Recipe ();
			try 
			{
				recipe.TitleText = json.GetString(Constants.RecipeFieldTitle);
				recipe.SummaryText = json.GetString(Constants.RecipeFieldSummary);
				if (json.Has(Constants.RecipeFieldImage)) {
					recipe.RecipeImage = json.GetString(Constants.RecipeFieldImage);
				}
				JSONArray ingredients = json.GetJSONArray(Constants.RecipeFieldIngredients);
				recipe.IngredientsText = "";
				for (int i = 0; i < ingredients.Length(); i++)
				{
					recipe.IngredientsText += " - " + ingredients.GetJSONObject(i).GetString(Constants.RecipeFieldText) + "\n";
				}

				JSONArray steps = json.GetJSONArray(Constants.RecipeFieldSteps);
				for (int i = 0; i < steps.Length(); i++)
				{
					var step = steps.GetJSONObject(i);
					var recipeStep = new RecipeStep();
					recipeStep.StepText = step.GetString(Constants.RecipeFieldText);
					if (step.Has(Constants.RecipeFieldName)) {
						recipeStep.StepImage = step.GetString(Constants.RecipeFieldImage);
					}
					recipe.RecipeSteps.Add(recipeStep);
				}
			}
			catch (Exception ex) {
				Log.Error (Tag, "Error loading recipe: " + ex);
				return null;
			}
			return recipe;
		}
Beispiel #10
0
 private void btnUpdateStep_Click(object sender, EventArgs e)
 {
     if (string.IsNullOrWhiteSpace(txtStepOrder.Text))
     {
         errProvider.SetError(txtStepOrder, "Please select the step you want to update.");
     }
     else if (string.IsNullOrWhiteSpace(txtStepDescription.Text))
     {
         errProvider.SetError(txtStepOrder, "");
         errProvider.SetError(txtStepDescription, "Description must not be blank!");
     }
     else
     {
         errProvider.SetError(txtStepOrder, "");
         errProvider.SetError(txtStepDescription, "");
         int        id          = int.Parse(txtStepOrder.Text);
         string     description = txtStepDescription.Text;
         string     image       = txtStepImage.Text;
         RecipeStep updatedStep = new RecipeStep(id, description, image);
         for (int i = 0; i < recipeSteps.Count; i++)
         {
             if (recipeSteps[i].Equals(updatedStep))
             {
                 recipeSteps[i] = updatedStep;
                 break;
             }
         }
         imagePaths["Step" + id] = tmpFilePath;
         LoadAllSteps();
     }
 }
Beispiel #11
0
        public async Task <bool> AddRecipeSteps(RecipeStep recipeStep)
        {
            _context.Add(recipeStep);
            var saveResult = await _context.SaveChangesAsync();

            return(saveResult == 1);
        }
    void Start()
    {
        _highlightedColor    = new Color(0.937f, 0.741f, 0.42f);
        _viewportActiveColor = new Color(0.56f, 0.67f, 0.85f);
        _selectingColor      = new Color(0.5f, 0.98f, 1f);
        _baseColor           = new Color(1f, 1f, 1f);
        _buttons             = new List <GameObject>();
        active_timer_index   = -1;
        count = 0;

        List <RecipeStep> steps = RecipeMenuList.SelectedRecipe.steps;

        for (int i = 0; i < steps.Count; i++)
        {
            GameObject button = Instantiate(buttonTemplate);
            button.SetActive(true);
            Image buttonImage = button.GetComponent <Image>();
            buttonImage.color = i == 0 ? _highlightedColor : _baseColor;
            int        stepNumber = i + 1;
            RecipeStep step       = steps[i];
            button.GetComponent <StepListButton>().SetText("  " + stepNumber + ". " + step.instruction);
            button.transform.SetParent(buttonTemplate.transform.parent, false);
            _buttons.Add(button);
        }
    }
        public async Task AddStepToRecipeAsync(Recipe recipe, string description)
        {
            string errorMessage = "";

            if (recipe == null)
            {
                errorMessage = "Recipe reference is null.";
                Logger.LogError(errorMessage);
                throw new ArgumentNullException(errorMessage);
            }
            if (description.IsNullOrEmpty())
            {
                errorMessage = "Step Description is empty.";
                Logger.LogError(errorMessage);
                throw new EmptyFieldException(errorMessage);
            }
            var checkRecipe = (await UnitOfWork.Repository.FirstOrDefaultAsync <Recipe>(x => x.Name.ToLower() == recipe.Name.ToLower() && x.CategoryId == recipe.CategoryId && x.Id == recipe.Id));

            if (checkRecipe == null)
            {
                errorMessage = $"Recipe {recipe.Name} : {recipe.Id} doesn't exist in Database.";
                Logger.LogError(errorMessage);
                throw new EntryAlreadyExistsException(errorMessage);
            }
            var recipeStep = new RecipeStep()
            {
                RecipeId = checkRecipe.Id, Description = description, StepNumber = checkRecipe.Steps.Count + 1
            };

            checkRecipe.Steps.Add(recipeStep);
            await UnitOfWork.Repository.UpdateAsync <Recipe>(checkRecipe);
        }
        public IHttpActionResult PutRecipeStep(int id, RecipeStep recipeStep)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != recipeStep.ID)
            {
                return(BadRequest());
            }

            db.Entry(recipeStep).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RecipeStepExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Beispiel #15
0
        public RecipeStep GetRecipeStep(byte tubeIndex, int stepIndex)
        {
            //add validation
            RecipeStep step = RecipeService.Instance.GetRecipeStep(stepIndex);

            return(step);
        }
Beispiel #16
0
        public RecipeStep Dequeue(string executionId)
        {
            Logger.Information("Dequeuing recipe steps.");
            if (!_appDataFolder.DirectoryExists(Path.Combine(_recipeQueueFolder, executionId)))
            {
                return(null);
            }
            RecipeStep recipeStep = null;
            int        stepIndex  = GetFirstStepIndex(executionId);

            if (stepIndex >= 0)
            {
                var stepPath = Path.Combine(_recipeQueueFolder, executionId + Path.DirectorySeparatorChar + stepIndex);
                // string to xelement
                var stepElement = XElement.Parse(_appDataFolder.ReadFile(stepPath));
                var stepName    = stepElement.Element("Name").Value;
                var stepId      = stepElement.Attr("Id");
                var recipeName  = stepElement.Attr("RecipeName");
                Logger.Information("Dequeuing recipe step '{0}'.", stepName);
                recipeStep = new RecipeStep(id: stepId, recipeName: recipeName, name: stepName, step: stepElement.Element(stepName));
                _appDataFolder.DeleteFile(stepPath);
            }

            if (stepIndex < 0)
            {
                _appDataFolder.DeleteFile(Path.Combine(_recipeQueueFolder, executionId));
            }

            return(recipeStep);
        }
        public async Task <ActionResult <RecipeStep> > PostRecipeStep(RecipeStep recipeStep)
        {
            _context.RecipeSteps.Add(recipeStep);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetRecipeStep", new { id = recipeStep.Id }, recipeStep));
        }
        public async Task <IActionResult> PutRecipeStep(int id, RecipeStep recipeStep)
        {
            if (id != recipeStep.Id)
            {
                return(BadRequest());
            }

            _context.Entry(recipeStep).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RecipeStepExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        /// <summary>
        /// Gets the list of steps related to the recipe with the given ID
        /// </summary>
        /// <param name="recipeId">
        /// the ID for the recipe to get steps for
        /// </param>
        /// <returns>
        /// a list of the steps for the related recipe
        /// </returns>
        public static ObservableCollection <RecipeStep> getSteps(long recipeId)
        {
            ObservableCollection <RecipeStep> savedSteps = new ObservableCollection <RecipeStep>();
            SqliteConnection db = new SqliteConnection("Filename=RecipeBook.db");

            db.Open();

            SqliteCommand selectCommand = new SqliteCommand("SELECT * from STEPS WHERE RID = " + recipeId +
                                                            " ORDER BY STEPORDER ASC", db);

            SqliteDataReader query = selectCommand.ExecuteReader();

            while (query.Read())
            {
                long       id          = query.GetInt64(0);
                int        order       = query.GetInt32(1);
                String     description = query.GetString(2);
                long       rid         = query.GetInt64(3);
                RecipeStep savedStep   = new RecipeStep(id, order, description);
                savedStep.setRecipeId(rid);
                savedSteps.Add(savedStep);
            }

            db.Close();
            return(savedSteps);
        }
Beispiel #20
0
            public static RecipeStep FromBundle(Bundle bundle)
            {
                var recipeStep = new RecipeStep();

                recipeStep.StepText  = bundle.GetString(Constants.RecipeFieldStepText);
                recipeStep.StepImage = bundle.GetString(Constants.RecipeFieldStepImage);
                return(recipeStep);
            }
Beispiel #21
0
        public ActionResult DeleteConfirmed(int id)
        {
            RecipeStep recipeStep = db.RecipeSteps.Find(id);

            db.RecipeSteps.Remove(recipeStep);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #22
0
        public static Pipe <R> WhenRecipe <T, R>(this Pipe <T> pipe, RecipeStep <T, R> recipeStepFunc)
        {
            if (recipeStepFunc == null)
            {
                throw new ArgumentNullException(nameof(recipeStepFunc));
            }

            return(recipeStepFunc(new Recipe <T, R>(pipe, Step.When)));
        }
        public async Task DeleteStepByIdAsync(int stepId)
        {
            RecipeStep toDelete = await UnitOfWork.Repository.GetByIdAsync <RecipeStep>(stepId);

            if (toDelete == null)
            {
                throw new EntryNotFoundException("This step doesn't exist in database.");
            }
            await UnitOfWork.Repository.DeleteAsync <RecipeStep>(toDelete);
        }
Beispiel #24
0
        public void GivenRecipe_OfUnitRecipeStepFuncNull_ThrowsArgNullException()
        {
            RecipeStep <Unit, int> stepFunc = null;

            Action call = () => GivenRecipe(stepFunc);

            call.Should().ThrowExactly <ArgumentNullException>()
            .Which
            .ParamName.Should().Be("recipeStepFunc");
        }
 public RecipeStepViewModel(RecipeViewModel recipeDisplay, RecipeStep step, bool isDone)
 {
     if (step is null)
     {
         throw new ArgumentNullException(nameof(step));
     }
     RecipeDisplay = recipeDisplay;
     RecipeStep    = step;
     _isDone       = isDone;
 }
Beispiel #26
0
 public ActionResult Edit([Bind(Include = "Id,StepNo,StepDesc,RecipeId")] RecipeStep recipeStep)
 {
     if (ModelState.IsValid)
     {
         db.Entry(recipeStep).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.RecipeId = new SelectList(db.RecipeModels, "Id", "Description", recipeStep.RecipeId);
     return(View(recipeStep));
 }
Beispiel #27
0
        public static Pipe <R> GivenRecipe <R>(RecipeStep <Unit, R> recipeStepFunc)
        {
            if (recipeStepFunc == null)
            {
                throw new ArgumentNullException(nameof(recipeStepFunc));
            }

            var pipe = Runner.CreatePipe();

            return(recipeStepFunc(new Recipe <Unit, R>(pipe, Step.Given)));
        }
        public IHttpActionResult GetRecipeStep(int id)
        {
            RecipeStep recipeStep = db.RecipeSteps.Find(id);

            if (recipeStep == null)
            {
                return(NotFound());
            }

            return(Ok(recipeStep));
        }
Beispiel #29
0
        public void SearchUstencils(RecipeStep step, int backX, int backY)
        {
            this.Sprite.Move(materialStock.Sprite.PositionX, materialStock.Sprite.PositionY);
            for (int i = 0; i < step.ListUstencils.Count; i++)
            {
                step.ListUstencils.ElementAt(i).getMaterial();
            }

            Thread.Sleep(100);
            this.Sprite.Move(backX, backY);
        }
Beispiel #30
0
        public void GivenRecipe_OfScenarioScenarioNull_ThrowsArgNullException()
        {
            RecipeStep <Scenario, int> stepFunc = null;
            Scenario scenario = null;

            Action call = () => scenario.GivenRecipe(RecipeStepReturnsDefault <Scenario, int>(GivenStepTitle));

            call.Should().ThrowExactly <ArgumentNullException>()
            .Which
            .ParamName.Should().Be("scenario");
        }
        public IHttpActionResult PostRecipeStep(RecipeStep recipeStep)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.RecipeSteps.Add(recipeStep);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = recipeStep.ID }, recipeStep));
        }
Beispiel #32
0
			public static RecipeStep FromBundle(Bundle bundle) {
				var recipeStep = new RecipeStep ();
				recipeStep.StepText = bundle.GetString (Constants.RecipeFieldStepText);
				recipeStep.StepImage = bundle.GetString (Constants.RecipeFieldStepImage);
				return recipeStep;
			}