예제 #1
0
        private void Load_Hot_recipe() //點選切換跳轉
        {
            PageControl.SelectedIndex = 1;

            var q = ((from l in dbcontext.LikeRecipe_Table.AsEnumerable()
                      group l by new
            {
                l.Recipe_Table.RecipeName,
                l.RecipeID,
                l.Recipe_Table.PostTime.Year,
                l.Recipe_Table.DisVisible,
                l.Recipe_Table.DeleteOrNot,
                l.Member_Table.Nickname,
                l.Recipe_Table.Picture,
                l.Recipe_Table.Views,
                season = SeasonSort(l.Recipe_Table.PostTime.Month)
            } into g
                      where g.Key.season == "第二季" && g.Key.Year == DateTime.Now.Year && g.Key.DisVisible == false && g.Key.DeleteOrNot == false
                      select new
            {
                g.Key.RecipeName,
                g.Key.RecipeID,
                g.Key.Nickname,
                g.Key.Picture,
                g.Key.Views,
                LikeCount = g.Count(),
            }).OrderByDescending(r => r.LikeCount).Take(5)).ToList();

            foreach (var item in q)
            {
                RecipeControl recipe = new RecipeControl(item.RecipeID);
                recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.LikeCount);
                flp_HotRecipe.Controls.Add(recipe);
            }
        }
예제 #2
0
        private void LoadRecipe()
        {
            flp_LikeRecipe.Controls.Clear();
            int result;

            if (int.TryParse(lbox_FolderID.Text, out result))
            {
                var q = (from c in dbcontext.Collection_Table.AsEnumerable()
                         let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == c.ReicipeID select r2).Count()
                                    where c.CollectionFolderID == result
                                    select new
                {
                    c.ReicipeID,
                    c.Recipe_Table.RecipeName,
                    c.Recipe_Table.Member_Table.Nickname,
                    c.Recipe_Table.Picture,
                    c.Recipe_Table.Views,
                    like = like
                }).ToList();
                foreach (var item in q)
                {
                    RecipeControl recipe = new RecipeControl(item.ReicipeID);
                    recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                    recipe.ContextMenuStrip = contextMenuStrip1;
                    flp_LikeRecipe.Controls.Add(recipe);
                }

                //foreach (var item in q)
                //{
                //    Panel p = new Panel();
                //    Label l = new Label();
                //    PictureBox pb = new PictureBox();
                //    MemoryStream ms = new MemoryStream(item.Picture);
                //    pb.Image = Image.FromStream(ms);
                //    l.Text = item.RecipeName;
                //    pb.BackColor = Color.AliceBlue;
                //    p.Controls.Add(l);
                //    p.Controls.Add(pb);
                //    p.ContextMenuStrip = contextMenuStrip1;
                //    p.Name = item.ReicipeID.ToString();
                //    flp_LikeRecipe.Controls.Add(p);
                //}
            }
            else
            {
                return;
            }
        }
예제 #3
0
        private void 儲存至其他收藏夾ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripItem    clickedItem = sender as ToolStripItem;
            ContextMenuStrip owner       = clickedItem.Owner as ContextMenuStrip;
            RecipeControl    p           = owner.SourceControl as RecipeControl;

            Recipeid = Convert.ToInt32(p.Name);

            Form AddForm = new Form();
            var  q       = dbcontext.CollectionFolder_Table.Where(f => f.MemberID == memberData.MemberID).Select(f2 => f2.CollectionFolder).ToList();

            var q2 = dbcontext.Collection_Table.Where(f => f.CollectionFolder_Table.MemberID == memberData.MemberID && f.ReicipeID == Recipeid).Select(f2 => f2.CollectionFolder_Table.CollectionFolder).ToList();

            int x = 10;
            int y = 10;

            foreach (var item in q)
            {
                CheckBox cb = new CheckBox();
                cb.Location = new Point(x, y);
                y          += 30;
                if (q2.Contains(item))
                {
                    cb.Checked = true;
                }
                cb.CheckedChanged += Cb_FolderCurrentChanged;
                cb.Name            = item;
                AddForm.Controls.Add(cb);
            }

            x = 110;
            y = 10;
            foreach (var item in q)
            {
                Label lb = new Label();
                lb.Text      = item;
                lb.ForeColor = Color.Black;
                lb.Location  = new Point(x, y);
                y           += 30;
                AddForm.Controls.Add(lb);
            }
            AddForm.Text = dbcontext.Recipe_Table.Where(r => r.RecipeID == Recipeid).Select(r2 => r2.RecipeName).FirstOrDefault();
            AddForm.Show();
        }
예제 #4
0
        private void Load_All_recipe()
        {
            var q = (from r in dbcontext.Recipe_Table.AsEnumerable()
                     let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == r.RecipeID select r2).Count()
                                select new
            {
                r.RecipeID,
                r.Picture,
                r.RecipeName,
                r.Member_Table.Nickname,
                r.Views,
                like = like
            }).ToList();

            foreach (var item in q)
            {
                RecipeControl recipe = new RecipeControl(item.RecipeID);
                recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                flp_AllRecipe.Controls.Add(recipe);
            }
        }
예제 #5
0
        private void LoadMyRecipe()
        {
            var q = (from r in dbcontext.Recipe_Table
                     let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == r.RecipeID select r2).Count()
                                where r.MemberID == memberData.MemberID
                                select new
            {
                r.RecipeID,
                r.Picture,
                r.RecipeName,
                r.Member_Table.Nickname,
                r.Views,
                like = like,
                r.DisVisible,
                r.DeleteOrNot
            }).ToList();

            foreach (var item in q)
            {
                if (!item.DeleteOrNot && !item.DisVisible)
                {
                    RecipeControl recipe = new RecipeControl(item.RecipeID);
                    recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                    flp_myRecipe.Controls.Add(recipe);
                }
                else if (item.DeleteOrNot)
                {
                    RecipeControl recipe = new RecipeControl(item.RecipeID, Color.Red);
                    recipe.setAll(item.Picture, "此食譜已刪除", item.Nickname, item.Views, item.like);
                    flp_myRecipe.Controls.Add(recipe);
                }
                else
                {
                    RecipeControl recipe = new RecipeControl(item.RecipeID, Color.Black);
                    recipe.setAll(item.Picture, "此食譜已被檢舉", item.Nickname, item.Views, item.like);
                    flp_myRecipe.Controls.Add(recipe);
                }
            }
        }
예제 #6
0
        private void Category_Search(string CategoryName)
        {
            var q = from r in dbcontext.Recipe_Table
                    let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == r.RecipeID select r2).Count()
                               where r.RecipeCategory_Table.RecipeCategory == CategoryName && r.DeleteOrNot == false && r.DisVisible == false
                               select new
            {
                r.Picture,
                r.RecipeName,
                r.Member_Table.Nickname,
                r.Views,
                r.RecipeID,
                like = like
            };

            flp_Search.Controls.Clear();
            foreach (var item in q)
            {
                RecipeControl recipe = new RecipeControl(item.RecipeID);
                recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                flp_Search.Controls.Add(recipe);
            }
        }
예제 #7
0
        public void RefreshRecipies()
        {
            Modified = false;
            RecipesCollection.Clear();
            IngredientsRowsCollection.Clear();
            Worker.EnqueueTask(new WorkerTask((args) =>
            {
                try
                {
                    using (var proxy = new WorkChannel())
                    {
                        return proxy.GetRecipeTabData(new EmptyRequest
                        {
                            Login = ClientConfig.CurrentUser.Email,
                            Password = ClientConfig.CurrentUser.Password
                        });
                    }
                    //        using (var db = new PizzaUnitOfWork())
                    //        {
                    //            return db.inTransaction(uof =>
                    //            {
                    //                Console.WriteLine("LoadDataStart");
                    //                var result = new Trio<IEnumerable<Recipe>, PizzaNetDataModel.Model.Size[], IEnumerable<Ingredient>>
                    //                {
                    //                    First = db.Recipies.FindAllEagerly(),
                    //                    Second = db.Sizes.FindAll().ToArray(),
                    //                    Third = db.Ingredients.FindAll()
                    //                };

                    //                Console.WriteLine("after query");

                    //                Console.WriteLine("Result is null: {0}", result == null);

                    //                return result;
                    //            });
                    //        }
                }
                catch (Exception exc)
                {
                    Console.WriteLine(exc.Message);
                    return exc;
                }
            }, (s, args) =>
            {
                if (args.Result is Exception)
                {
                    Utils.HandleException(args.Result as Exception);
                    return;
                }
                var result = args.Result as TrioResponse<List<RecipeDTO>, List<SizeDTO>, List<OrderIngredientDTO>>;
                //    var result = args.Result as Trio<IEnumerable<Recipe>, PizzaNetDataModel.Size[], IEnumerable<Ingredient>>;
                if (result == null)
                {
                    Console.WriteLine("Result is null");
                    Utils.showError(Utils.Messages.UNKNOWN_ERROR_FORMAT);
                    return;
                }
                foreach (var item in result.First)
                {
                    var rc = new RecipeControl();
                    rc.Recipe = item;
                    rc.Update(result.Second.ToArray());
                    RecipesCollection.Add(rc);
                }
                foreach (var item in result.Third)
                {
                    var row = new IngredientsRowWork(item, false);
                    row.ButtonIncludeChanged += row_PropertyChanged;
                    IngredientsRowsCollection.Add(row);
                }

                Sizes = result.Second.ToArray();
                //    foreach (var item in result.First)
                //    {
                //        var rc = new RecipeControl();
                //        rc.Recipe = item;
                //        rc.RecalculatePrices(result.Second.ToArray());
                //        RecipesCollection.Add(rc);
                //        Console.WriteLine(item.Name);
                //    }
                //    foreach (var item in result.Third)
                //    {
                //        var row = new IngredientsRowWork(item, false);
                //        row.ButtonIncludeChanged += row_PropertyChanged;
                //        IngredientsRowsCollection.Add(row);
                //    }
            }));
        }
예제 #8
0
        internal void SaveChanges()
        {
            Worker.EnqueueTask(new WorkerTask(args =>
                {
                    try
                    {
                        using (var proxy = new WorkChannel())
                        {
                            List<RecipeDTO> toUpdate = new List<RecipeDTO>();
                            foreach (var recControl in RecipesCollection)
                            {
                                toUpdate.Add(recControl.Recipe);
                            }
                            return proxy.UpdateOrRemoveRecipe(new UpdateOrRemoveRequest<List<RecipeDTO>>
                            {
                                Data = toUpdate,
                                DataToRemove = RemovedRecipes,
                                Login = ClientConfig.CurrentUser.Email,
                                Password = ClientConfig.CurrentUser.Password
                            });
                        }
                    }
                    catch (Exception exc)
                    {
                        Console.WriteLine(exc.Message);
                        Console.WriteLine("Failed");
                        return exc;
                    }
                }, (s, e) =>
                    {
                        if (e.Result is Exception)
                        {
                            Utils.HandleException(e.Result as Exception);
                            return;
                        }
                        var result = e.Result as TrioResponse<List<RecipeDTO>, List<OrderIngredientDTO>, int>;
                        if (result == null)
                        {
                            Utils.showError(Utils.Messages.UNKNOWN_ERROR_FORMAT);
                            return;
                        }

                        RecipesCollection.Clear();
                        IngredientsRowsCollection.Clear();
                        RemovedRecipes.Clear();
                        foreach (var item in result.First)
                        {
                            var rc = new RecipeControl();
                            rc.Recipe = item;
                            //rc.RecalculatePrices(result.Second.ToArray());
                            rc.Update(Sizes);
                            RecipesCollection.Add(rc);
                        }
                        foreach (var item in result.Second)
                        {
                            var row = new IngredientsRowWork(item, false);
                            row.ButtonIncludeChanged += row_PropertyChanged;
                            IngredientsRowsCollection.Add(row);
                        }
                        Modified = false;
                    }, null));
        }
예제 #9
0
        private void btn_Search_Click(object sender, EventArgs e)
        {
            List <Recipe_Table> recipes = new List <Recipe_Table>();

            PageControl.SelectedIndex = 1;
            if (cb_Sort.SelectedIndex == 0)
            {
                string   s  = tb_SearchValue.Text;
                string[] s2 = s.Split(' ');
                for (int i = 0; i < s2.Length; i++)
                {
                    var q = (from r in dbcontext.Recipe_Table.AsEnumerable()
                             where r.RecipeName.Contains(s2[i]) && r.DisVisible == false && r.DisVisible == false
                             select r).ToList();
                    if (q.Count != 0)
                    {
                        recipes.AddRange(q);
                    }
                }
                var q1 = from r in recipes
                         let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == r.RecipeID select r2).Count()
                                    select new
                {
                    r.Picture,
                    r.RecipeName,
                    r.Member_Table.Nickname,
                    r.Views,
                    r.RecipeID,
                    like = like
                };
                flp_Search.Controls.Clear();
                foreach (var item in q1)
                {
                    RecipeControl recipe = new RecipeControl(item.RecipeID);
                    recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                    flp_Search.Controls.Add(recipe);
                }
            }

            if (cb_Sort.SelectedIndex == 1)
            {
                var q2 = (from r in dbcontext.Recipe_Table
                          let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == r.RecipeID select r2).Count()
                                     where r.Member_Table.Nickname.Contains(tb_SearchValue.Text) && r.DisVisible == false && r.DisVisible == false
                                     select new
                {
                    r.Picture,
                    r.RecipeName,
                    r.Member_Table.Nickname,
                    r.Views,
                    r.RecipeID,
                    like = like
                }).ToList();
                if (q2.Count != 0)
                {
                    flp_Search.Controls.Clear();
                    foreach (var item in q2)
                    {
                        RecipeControl recipe = new RecipeControl(item.RecipeID);
                        recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                        flp_Search.Controls.Add(recipe);
                    }
                }
                else
                {
                    MessageBox.Show("查無此作者");
                }
            }
            if (cb_Sort.SelectedIndex == 2)//食材找食譜
            {
                int[] tagids    = sbt.IngdStringToIngdIds(dbcontext, tb_SearchValue.Text, checkBox1.Checked);
                int[] recipeids = sbt.IngdIdsToRecipeIds(dbcontext, tagids, !checkBox2.Checked);
                var   hrecipes  = dbcontext.Recipe_Table.Where(r => recipeids.Contains(r.RecipeID) && r.DisVisible == false && r.DeleteOrNot == false).Select(r => r);
                var   hrecipes2 = (from r in hrecipes
                                   let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == r.RecipeID select r2).Count()
                                              select new
                {
                    r.Picture,
                    r.RecipeName,
                    r.Member_Table.Nickname,
                    r.Views,
                    r.RecipeID,
                    like = like
                }).ToList();
                flp_Search.Controls.Clear();
                foreach (var item in hrecipes2)
                {
                    RecipeControl recipe = new RecipeControl(item.RecipeID);
                    recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                    flp_Search.Controls.Add(recipe);
                }

                string stchar = "TagIds:";
                foreach (int id in tagids)
                {
                    stchar += id.ToString() + ",";
                }
            }
            if (cb_Sort.SelectedIndex == 3)//HashTag找食譜
            {
                int[] tagids    = sbt.TagsStringToTagIds(dbcontext, tb_SearchValue.Text, checkBox1.Checked);
                int[] recipeids = sbt.TagIdsToRecipeIds(dbcontext, tagids, !checkBox2.Checked);
                var   hrecipes  = dbcontext.Recipe_Table.Where(r => recipeids.Contains(r.RecipeID) && r.DisVisible == false && r.DeleteOrNot == false).Select(r => r);
                var   hrecipes2 = (from r in hrecipes
                                   let like = (from r2 in dbcontext.LikeRecipe_Table.AsEnumerable() where r2.RecipeID == r.RecipeID select r2).Count()
                                              select new
                {
                    r.Picture,
                    r.RecipeName,
                    r.Member_Table.Nickname,
                    r.Views,
                    r.RecipeID,
                    like = like
                }).ToList();
                flp_Search.Controls.Clear();
                foreach (var item in hrecipes2)
                {
                    RecipeControl recipe = new RecipeControl(item.RecipeID);
                    recipe.setAll(item.Picture, item.RecipeName, item.Nickname, item.Views, item.like);
                    flp_Search.Controls.Add(recipe);
                }

                string stchar = "TagIds:";
                foreach (int id in tagids)
                {
                    stchar += id.ToString() + ",";
                }
            }
        }
예제 #10
0
        public void RefreshRecipes()
        {
            this.IngredientsCollection.Clear();
            this.RecipesCollection.Clear();
            this.OrderedPizzasCollection.Clear();
            this.Ingredients.Clear();

            Worker.EnqueueTask(new WorkerTask((args) =>
            {
                try
                {
                    using (var proxy = new WorkChannel())
                    {
                        return proxy.GetRecipeTabData(new PizzaNetCommon.Requests.EmptyRequest
                        {
                            Login = ClientConfig.CurrentUser.Email,
                            Password = ClientConfig.CurrentUser.Password
                        });
                    }
                    //using (var db = new PizzaUnitOfWork())
                    //{
                    //    return db.inTransaction(uof =>
                    //    {
                    //        Console.WriteLine("LoadDataStart");
                    //        var result = new Trio<IEnumerable<Recipe>, PizzaNetDataModel.Model.Size[], IEnumerable<Ingredient>>
                    //        {
                    //            First = uof.Db.Recipies.FindAllEagerly(),
                    //            Second = uof.Db.Sizes.FindAll().ToArray(),
                    //            Third = uof.Db.Ingredients.FindAll()
                    //        };

                    //        Console.WriteLine("after query");

                    //        Console.WriteLine("Result is null: {0}", result == null);

                    //        return result;
                    //    });
                    //}
                }
                catch (Exception exc)
                {
                    return exc;
                }
            }, (s, args) =>
            {
                if (args.Result is Exception)
                {
                    Utils.HandleException(args.Result as Exception);
                    return;
                }
                var result = args.Result as TrioResponse<List<RecipeDTO>, List<SizeDTO>, List<OrderIngredientDTO>>;
                if (result == null)
                {
                    Utils.showExclamation(Utils.Messages.RECIPES_REFRESH_FAILED);
                    return;
                }
                if (result.Second.Count != 3) throw new Exception(INVALID_SIZES_COUNT);
                foreach (var item in result.First)
                {
                    var rc = new RecipeControl();
                    rc.Recipe = item;
                    rc.RecalculatePrices(result.Second.ToArray());
                    RecipesCollection.Add(rc);
                    Console.WriteLine(item.Name);
                }
                foreach (var item in result.Third)
                {
                    var row = new IngredientsRow(item, 0, result.Second[0]);
                    row.PropertyChanged += row_PropertyChanged;
                    IngredientsCollection.Add(row);
                    Ingredients.Add(item);
                }
                // MODIFIED Tag uses now dependency property
                SmallSize = result.Second[0];
                MedSize = result.Second[1];
                GreatSize = result.Second[2];
                CurrentSizeValue = result.Second[0];
            }));
        }