Beispiel #1
0
        internal bool AddRecipeToUserFavorites(int userId, int recipeId, out int favRecipesNum)
        {
            using (DataContext)
            {
                try
                {
                    UserFavoriteRecipe ufrep = DataContext.UserFavoriteRecipes.SingleOrDefault(ufr => ufr.UserId == userId &&
                                                                                               ufr.RecipeId == recipeId);
                    if (ufrep == null)
                    {
                        ufrep          = new UserFavoriteRecipe();
                        ufrep.UserId   = userId;
                        ufrep.RecipeId = recipeId;
                        DataContext.UserFavoriteRecipes.InsertOnSubmit(ufrep);
                        DataContext.SubmitChanges();
                    }
                    favRecipesNum = DataContext.UserFavoriteRecipes.Where(ufr => ufr.UserId == userId && (ufr.Recipe.UserId == userId || ufr.Recipe.IsPublic)).Count();

                    return(true);
                }
                catch
                {
                    favRecipesNum = 0;
                    return(false);
                }
            }
        }
Beispiel #2
0
        internal void ReplaceUserIds(int sourceUserId, int targetUserId)
        {
            using (DataContext)
            {
                // foods
                var foods = from f in DataContext.Foods
                            where f.CreatedBy == sourceUserId
                            select f;

                foreach (var food in foods)
                {
                    food.CreatedBy = targetUserId;
                }

                var foods2 = from f in DataContext.Foods
                             where f.ModifiedBy == sourceUserId
                             select f;

                foreach (var food in foods2)
                {
                    food.ModifiedBy = targetUserId;
                }

                // menus
                var menus = from m in DataContext.Menus
                            where m.UserId == sourceUserId
                            select m;

                foreach (var menu in menus)
                {
                    menu.UserId = targetUserId;
                }

                // recipes
                var recipes = from r in DataContext.Recipes
                              where r.UserId == sourceUserId
                              select r;

                foreach (var recipe in recipes)
                {
                    recipe.UserId = targetUserId;
                }

                // favorites
                var favs = from f in DataContext.UserFavoriteRecipes
                           where f.UserId == sourceUserId
                           select f;

                foreach (var fav in favs)
                {
                    UserFavoriteRecipe fav2 = new UserFavoriteRecipe();
                    fav2.UserId   = targetUserId;
                    fav2.RecipeId = fav.RecipeId;
                    DataContext.UserFavoriteRecipes.InsertOnSubmit(fav2);
                    DataContext.UserFavoriteRecipes.DeleteOnSubmit(fav);
                }

                DataContext.SubmitChanges();
            }
        }
Beispiel #3
0
        internal Recipe GetRecipe(int recipeId)
        {
            DataLoadOptions dlo = new DataLoadOptions();

            dlo.LoadWith <Recipe>(r => r.User);
            dlo.LoadWith <Recipe>(r => r.RecipeCategories);
            dlo.LoadWith <RecipeCategory>(rc => rc.Category);
            dlo.LoadWith <Recipe>(r => r.UserFavoriteRecipes);
            dlo.LoadWith <Recipe>(r => r.MenuRecipes);
            dlo.LoadWith <Recipe>(r => r.Ingredients);
            dlo.LoadWith <Ingredient>(i => i.Food);
            dlo.LoadWith <Ingredient>(i => i.MeasurementUnit);


            DataContext.LoadOptions = dlo;

            Recipe recipe = DataContext.Recipes.Single(r => r.RecipeId == recipeId);

            if (recipe != null)
            {
                UserFavoriteRecipe ufrep = DataContext.UserFavoriteRecipes.SingleOrDefault(ufr => ufr.RecipeId == recipe.RecipeId &&
                                                                                           ufr.UserId == recipe.UserId);
                recipe.ShowInFavorites = (ufrep != null);

                //recipe.SHOPPING_LIST = recipe.RecipesInShoppingLists.Any();
            }
            else
            {
                recipe.ShowInFavorites = false;
            }

            return(recipe);
        }
Beispiel #4
0
        public async Task <JsonResult> AddToFavorite([FromBody] int recipeHeaderId)
        {
            SetUser();
            var dbRecipeHeader = await recipeRepository.GetRecipeHeader(recipeHeaderId);

            if (dbRecipeHeader is null)
            {
                HasError     = true;
                ErrorMessage = "Η συνταγή που ζητήσατε δεν υπάρχει.";
                return(new JsonResult(new { result = false, message = ErrorMessage }));
            }

            var userFavoriteRecipe = new UserFavoriteRecipe()
            {
                RecipeHeaderId = recipeHeaderId,
                UserId         = CurrentUser.Id
            };

            if (!await userFavoriteRecipeRepository.InsertUserFavoriteRecipe(userFavoriteRecipe))
            {
                HasError     = true;
                ErrorMessage = "Κάτι πήγε στραβά και δεν μπορέσαμε να εισάγουμε το αγαπημένο.";
                return(new JsonResult(new { result = false, message = ErrorMessage }));
            }

            HasError       = false;
            SuccessMessage = $"Το αντικείμενο {dbRecipeHeader.Name} προστέθηκε στα αγαπημένα.";
            return(new JsonResult(new { result = true, message = SuccessMessage }));
        }
        public async Task <bool> UpdateUserFavoriteRecipe(UserFavoriteRecipe userFavoriteRecipe)
        {
            context.SC_UserFavoriteRecipe.Update(userFavoriteRecipe);

            if (await context.SaveChangesAsync() <= 0)
            {
                return(false);
            }

            return(true);
        }
Beispiel #6
0
        public async Task <ActionResult> AddFavorite(string label, string url, string image)
        {
            try
            {
                var user = await GetUserAsync();

                var userFavoriteRecipes = await _context.UserFavoriteRecipes
                                          .Where(ufr => ufr.UserId == user.Id)
                                          .Include(fr => fr.FavoriteRecipe)
                                          .ToListAsync();

                var matchingRecipe = userFavoriteRecipes.FirstOrDefault(ufr => ufr.FavoriteRecipe.Label == label);

                if (matchingRecipe == null)
                {
                    var newFavoriteRecipe = new FavoriteRecipe()
                    {
                        Label = label,
                        Image = image,
                        Url   = url
                    };

                    _context.FavoriteRecipes.Add(newFavoriteRecipe);
                    await _context.SaveChangesAsync();

                    var newUserFavRecipe = new UserFavoriteRecipe()
                    {
                        UserId           = user.Id,
                        FavoriteRecipeId = newFavoriteRecipe.Id
                    };

                    _context.UserFavoriteRecipes.Add(newUserFavRecipe);
                    await _context.SaveChangesAsync();
                }


                return(RedirectToAction(nameof(Favorites)));
            }
            catch
            {
                return(View());
            }
        }
Beispiel #7
0
        internal bool RemoveUserFavoritesRecipe(int userId, int recipeId, out int favRecipesNum)
        {
            using (DataContext)
            {
                try
                {
                    UserFavoriteRecipe ufrep = DataContext.UserFavoriteRecipes.Single(ufr => ufr.UserId == userId &&
                                                                                      ufr.RecipeId == recipeId);
                    DataContext.UserFavoriteRecipes.DeleteOnSubmit(ufrep);
                    DataContext.SubmitChanges();

                    favRecipesNum = DataContext.UserFavoriteRecipes.Where(ufr => ufr.UserId == userId && (ufr.Recipe.UserId == userId || ufr.Recipe.IsPublic)).Count();

                    return(true);
                }
                catch
                {
                    favRecipesNum = 0;
                    return(false);
                }
            }
        }
Beispiel #8
0
        internal bool SaveRecipe(Recipe data, out int recipeId)
        {
            using (DataContext)
            {
                try
                {
                    //Foods
                    foreach (Ingredient ing in data.Ingredients)
                    {
                        //find food by name for getting FoodId
                        Food food = DataContext.Foods.SingleOrDefault(f => f.FoodName.Trim() == ing.FoodName);
                        if (food != null)
                        {
                            ing.FoodId = food.FoodId;
                        }
                        else
                        {
                            //Create new food and mark it temporary
                            food                 = new Food();
                            food.FoodName        = ing.FoodName;
                            food.IsTemporary     = true;
                            food.FoodCategoryId  = 0;
                            food.CalculateUnitId = 0;
                            food.CreatedBy       = data.UserId;
                            food.CreatedDate     = DateTime.Now;
                            food.ModifiedBy      = data.UserId;
                            food.ModifiedDate    = DateTime.Now;
                            DataContext.Foods.InsertOnSubmit(food);
                            DataContext.SubmitChanges();

                            ing.FoodId = food.FoodId;
                        }
                    }

                    Recipe recipe = DataContext.Recipes.SingleOrDefault(r => r.RecipeId == data.RecipeId);
                    if (recipe == null)
                    {
                        recipe             = new Recipe(data);
                        recipe.CreatedDate = DateTime.Now;

                        int max = 0;

                        if (DataContext.Recipes.Where(r => r.UserId == recipe.UserId).Count() > 0)
                        {
                            max = DataContext.Recipes.Where(r => r.UserId == recipe.UserId).Max(r => r.SortOrder);
                        }

                        recipe.SortOrder = max + 1;



                        recipe.RecipeCategories.AddRange(data.RecipeCategories);
                        recipe.Ingredients.AddRange(data.Ingredients);

                        DataContext.Recipes.InsertOnSubmit(recipe);
                    }
                    else
                    {
                        recipe.SetValues(data);
                        DataContext.RecipeCategories.DeleteAllOnSubmit(recipe.RecipeCategories);
                        recipe.RecipeCategories.AddRange(data.RecipeCategories);

                        DataContext.Ingredients.DeleteAllOnSubmit(recipe.Ingredients);
                        recipe.Ingredients.AddRange(data.Ingredients);
                    }

                    recipe.ModifiedDate = DateTime.Now;
                    DataContext.SubmitChanges();

                    recipeId = recipe.RecipeId;

                    //Show recipe in favorites
                    UserFavoriteRecipe ufrep = DataContext.UserFavoriteRecipes.SingleOrDefault(fr => fr.RecipeId == recipe.RecipeId &&
                                                                                               fr.UserId == recipe.UserId);
                    if (recipe.ShowInFavorites)
                    {
                        if (ufrep == null)
                        {
                            ufrep          = new UserFavoriteRecipe();
                            ufrep.RecipeId = recipe.RecipeId;
                            ufrep.UserId   = recipe.UserId;
                            DataContext.UserFavoriteRecipes.InsertOnSubmit(ufrep);
                            DataContext.SubmitChanges();
                        }
                    }
                    else
                    {
                        if (ufrep != null)
                        {
                            DataContext.UserFavoriteRecipes.DeleteOnSubmit(ufrep);
                            DataContext.SubmitChanges();
                        }
                    }

                    return(true);
                }
                catch
                {
                    recipeId = 0;
                    return(false);
                }
            }
        }
Beispiel #9
0
 public async Task DeleteRecipeFromFavorite(UserFavoriteRecipe favorite)
 {
     _context.UserFavoriteRecipes.Remove(favorite);
     await _context.SaveChangesAsync();
 }
Beispiel #10
0
    private void Rebind()
    {
        Recipe recipe = BusinessFacade.Instance.GetRecipe(this.RecipeId);

        if (recipe != null)
        {
            PlaceHolder1.Visible = ((BasePage)Page).UserId == recipe.UserId;
            PlaceHolder2.Visible = ((BasePage)Page).UserId == recipe.UserId;

            this.lblRecipeName.Text = recipe.RecipeName;
            this.lblServNumber.Text = recipe.Servings.ToString();

            if (recipe.Tags != null)
            {
                this.lblRecipeTags.Text = recipe.Tags;
            }
            if (recipe.Description != null)
            {
                this.lblRecipeDescription.Text = recipe.Description;
            }

            if (recipe.DifficultyLevel != null)
            {
                this.txtDifficulty.Text = this.GetDifficultyLevelString(recipe.DifficultyLevel.Value);
            }

            if (recipe.PreperationTime != null)
            {
                string units;
                this.lblPrepTime.Text = this.GetTimeInCorrectUnits(recipe.PreperationTime.Value, out units).ToString() + " " + units;
            }

            if (recipe.CookingTime != null)
            {
                string units;
                this.lblCookTime.Text = this.GetTimeInCorrectUnits(recipe.CookingTime.Value, out units).ToString() + " " + units;
            }

            if (!string.IsNullOrEmpty(recipe.Remarks))
            {
                this.lblRemarks.Text = recipe.Remarks;
            }
            else
            {
                this.recipe_remarks.Visible = false;
            }

            if (!string.IsNullOrEmpty(recipe.PreparationMethod))
            {
                this.txtPreparationMethod.Text = recipe.PreparationMethod.Replace("\n", "<br />");
            }

            if (!string.IsNullOrEmpty(recipe.Tools))
            {
                this.txtTools.Text = recipe.Tools.Replace("\n", "<br />");
            }

            bool isInMyFavorites = (recipe.UserFavoriteRecipes.SingleOrDefault(ufr => ufr.UserId == ((BasePage)this.Page).UserId) != null);
            if (isInMyFavorites)
            {
                this.myFavoritesTopTag.Visible = true;
            }
            else
            {
                this.myFavoritesTopTag.Visible = false;
            }

            lblAllFavorites.Text = recipe.UserFavoriteRecipes.Count.ToString();

            lblAllMenus.Text = recipe.MenuRecipes.Count.ToString();

            string str = "";
            foreach (RecipeCategory rc in recipe.RecipeCategories)
            {
                str += rc.Category.CategoryName + ", ";
            }
            str = str.Remove(str.Length - 2);
            this.lblRecipeCategories.Text = str;

            dlistIngredients.DataSource = recipe.Ingredients;
            dlistIngredients.DataBind();

            bool allowRecipeEdit = (bool)((recipe.UserId == ((BasePage)Page).UserId) || (((BasePage)Page).UserType == 1));
            lblEditRecipeSeparator.Visible        = allowRecipeEdit;
            lblEditRecipeSeparator_bottom.Visible = allowRecipeEdit;
            //btnEditRecipe.Visible = allowRecipeEdit;
            //btnEditRecipe_bottom.Visible = allowRecipeEdit;
            lblCopyRecipeSeperator.Visible        = allowRecipeEdit;
            lblCopyRecipeSeperator_bottom.Visible = allowRecipeEdit;
            btnDeleteRecipe.Visible        = allowRecipeEdit;
            btnDeleteRecipe_bottom.Visible = allowRecipeEdit;

            UserFavoriteRecipe ufrep = recipe.UserFavoriteRecipes.SingleOrDefault(ufr => ufr.RecipeId == recipe.RecipeId &&
                                                                                  ufr.UserId == ((BasePage)Page).UserId);
            bool isValidUser      = (((BasePage)Page).UserId != -1);
            bool existInFavorites = (ufrep != null);
            lblAddToFavoritesSeparator.Visible          = isValidUser;
            lblAddToFavoritesSeparator_bottom.Visible   = isValidUser;
            btnAddRecipeToFavorites.Visible             = ((!existInFavorites) && isValidUser);
            btnAddRecipeToFavorites_bottom.Visible      = ((!existInFavorites) && isValidUser);
            btnRemoveRecipeFromFavorites.Visible        = ((existInFavorites) && isValidUser);
            btnRemoveRecipeFromFavorites_bottom.Visible = ((existInFavorites) && isValidUser);

            if ((isValidUser) && (((BasePage)Page).UserType == 1))
            //if ((isValidUser))
            {
                btnCopyRecipe.Visible        = true;
                btnCopyRecipe_bottom.Visible = true;
                lblSeparator3.Visible        = true;
                lblSeparator3_bottom.Visible = true;
            }

            //this.btnSendMail.Visible = isValidUser;
            //this.lblSeparator1.Visible = isValidUser;

            //if (allowRecipeEdit && recipe.MenuRecipes.Count > 0)
            if (allowRecipeEdit && recipe.MenuRecipes.Count > 0 && ((BasePage)Page).UserType != 1)
            {
                btnDeleteRecipe.Visible                = false;
                btnDeleteRecipe_bottom.Visible         = false;
                lblDeleteRecipeDisabled.Visible        = true;
                lblDeleteRecipeDisabled_bottom.Visible = true;
                lblDeleteRecipeDisabled.ToolTip        = "לא ניתן למחוק את המתכון משום שהוא קיים בתפריט/ים. אם ברצונך למחוק את המתכון - נא ליצור קשר עם מנהלת האתר.";
                lblDeleteRecipeDisabled_bottom.ToolTip = "לא ניתן למחוק את המתכון משום שהוא קיים בתפריט/ים. אם ברצונך למחוק את המתכון - נא ליצור קשר עם מנהלת האתר";
                //btnEditRecipe.Visible = false;
                //btnEditRecipe_bottom.Visible = false;
                lblEditRecipeDisabled.Visible        = true;
                lblEditRecipeDisabled_bottom.Visible = true;
                lblEditRecipeDisabled.ToolTip        = "לא ניתן לערוך את המתכון משום שהוא קיים בתפריט/ים. אם ברצונך לערוך את המתכון - נא ליצור קשר עם מנהלת האתר.";
                lblEditRecipeDisabled_bottom.ToolTip = "לא ניתן לערוך את המתכון משום שהוא קיים בתפריט/ים. אם ברצונך לערוך את המתכון - נא ליצור קשר עם מנהלת האתר";
            }

            Dictionary <int, Recipe> selectedRecipes = Utils.SelectedRecipes;
            bool isSelectedRecipe = (selectedRecipes.Keys.Contains(recipe.RecipeId));

            if (!isSelectedRecipe)
            {
                this.blkAddRemove.Text        = "הוסף לרשימת קניות";
                this.blkAddRemove_bottom.Text = "הוסף לרשימת קניות";
            }
            else
            {
                this.blkAddRemove.Text                  = "הסר מרשימת קניות";
                this.blkAddRemove_bottom.Text           = "הסר מרשימת קניות";
                this.blkAddRemove.Style["color"]        = "Red";
                this.blkAddRemove_bottom.Style["color"] = "Red";
            }

            bool isCompleteCalculation = false;
            RecipeTotalNutValues[] nutritionalValues = BusinessFacade.Instance.GetRecipeTotalNutValues(this.RecipeId, out isCompleteCalculation);
            if (nutritionalValues == null || nutritionalValues.Length == 0 || !isCompleteCalculation)
            {
                this.divNutritionalValues.Visible          = false;
                this.txtNoDataForNutritionalValues.Visible = true;
                this.txtNoDataForNutritionalValues.Text    = MyGlobalResources.NoDataForNutritionalValues.Replace("\n", "<br>");
            }
            else
            {
                if (rptNutritionalValues != null)
                {
                    this.rptNutritionalValues.DataSource = nutritionalValues;
                    this.rptNutritionalValues.DataBind();
                    this.rptNutritionalValues1.DataSource = nutritionalValues;
                    this.rptNutritionalValues1.DataBind();
                }
            }

            if (recipe.Picture != null)
            {
                this.imgRecipePicture.ImageUrl = "~/ShowPicture.ashx?RecipeId=" + recipe.RecipeId;
            }
            else
            {
                this.imgRecipePicture.ImageUrl = "~/Images/Img_Default.jpg";
            }

            if (!string.IsNullOrEmpty(recipe.VideoLink) && recipe.VideoLink.Contains("object") && recipe.VideoLink.Contains("embed"))
            {
                //adjustment method may not work for embedded videos that are not from youtube.
                this.recipe_video.InnerHtml = this.AdjustVideo(recipe.VideoLink);
            }
            else
            {
                this.recipe_video.Visible = false;
            }

            this.lnkPublisher.Text   = recipe.User.DisplayName;
            this.lblPublishDate.Text = recipe.ModifiedDate.ToString("dd/MM/yyyy");

            string userEmail = string.Empty;
            MyBuyList.Shared.Entities.User currentUser = BusinessFacade.Instance.GetUser(((BasePage)this.Page).UserId);
            if (currentUser != null)
            {
                userEmail = currentUser.Email;
            }
            this.ucSendMailToFriend.BindItemDetails("Recipe", recipe.RecipeId, recipe.RecipeName, userEmail);

            UpdatePanel2.Update();
            UpdatePanel1.Update();
        }
    }