コード例 #1
0
ファイル: ReceptAdd.cs プロジェクト: FM-I/Cylinar-Recepts
        //Редагування рецепту
        public void receptChange()
        {
            using (var context = new ReceptContext())
            {
                var recept = context.Recepts.Where(r => r.id == receptId).FirstOrDefault();

                if (recept != null)
                {
                    recept.Name         = receptNameBox.Text;
                    recept.Description  = receptDescBox.Text;
                    recept.ReceptTypeId = ((ReceptType)receptTypesBox.SelectedItem).id;
                    recept.Moderation   = false;

                    context.Ingredients.RemoveRange(recept.Ingredients);

                    var ingrds = GetIngredients(recept.id);

                    if (ingrds.Count != 0)
                    {
                        context.Ingredients.AddRange(ingrds);
                        context.SaveChanges();
                        MessageBox.Show("Рецепт відправленно на модерацію");

                        Close();
                    }
                }
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: FM-I/Cylinar-Recepts
        private void refreshUserList()
        {
            using (var context = new ReceptContext())
            {
                List <ReceptDb.Recept> recepts;

                if (user.isAdmin)
                {
                    recepts = context.Recepts
                              .Where(r => r.Moderation == false)
                              .ToList();
                }
                else
                {
                    recepts = context.Recepts
                              .Where(r => r.UserId == user.id && r.Moderation == true)
                              .ToList();
                }


                userReceptsListBox.DataSource    = recepts;
                userReceptsListBox.ValueMember   = "Id";
                userReceptsListBox.DisplayMember = "Name";
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: FM-I/Cylinar-Recepts
        //Будування інтерфейу відповідно до користувача
        private void LoadIntefaceFor()
        {
            //Перевірка чи являється користувач адміном
            if (user.isAdmin)
            {
                receptAddBtn.Visible      = false;
                receptDeleteBtn.Visible   = false;
                receptChangeBtn.Visible   = false;
                openModerationBtn.Visible = true;

                using (var context = new ReceptContext())
                {
                    var recepts = context.Recepts.AsNoTracking().Where(r => r.Moderation == false).ToList();
                    userReceptsListBox.DataSource    = recepts;
                    userReceptsListBox.ValueMember   = "Id";
                    userReceptsListBox.DisplayMember = "Name";
                }
            }
            else
            {
                userReceptsListBox.DataSource    = user.Recepts;
                userReceptsListBox.ValueMember   = "Id";
                userReceptsListBox.DisplayMember = "Name";
            }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: FM-I/Cylinar-Recepts
        //Видалення рецепту
        private void receptDeleteBtn_Click(object sender, EventArgs e)
        {
            if (userReceptsListBox.SelectedItems.Count > 0)
            {
                var id = (ReceptDb.Recept)userReceptsListBox.SelectedItem;


                using (var context = new ReceptContext())
                {
                    var res = MessageBox.Show("Ви точно хочете видалити?", "Видалити", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

                    if (res == DialogResult.No)
                    {
                        return;
                    }

                    var recept = context.Recepts.Where(r => r.id == id.id).FirstOrDefault();

                    context.Recepts.Remove(recept);
                    context.SaveChanges();
                }

                refreshUserBtn_Click(this, EventArgs.Empty);
            }
        }
コード例 #5
0
ファイル: EnterForm.cs プロジェクト: FM-I/Cylinar-Recepts
        private void enterBtn_Click(object sender, EventArgs e)
        {
            enterBtn.Enabled        = false;
            registrationBtn.Enabled = false;
            using (var context = new ReceptContext())
            {
                var login    = loginTextBox.Text.Trim();
                var password = passwordTextBox.Text.Trim();

                if (string.IsNullOrWhiteSpace(login) || string.IsNullOrWhiteSpace(password))
                {
                    MessageBox.Show("Заповніть всі поля");
                }
                else
                {
                    var user = context.Users.Where(u => u.Login == login && u.Password == password).FirstOrDefault();

                    if (user != null)
                    {
                        MainForm mainForm = new MainForm(user);
                        mainForm.Show();
                        Hide();
                    }
                    else
                    {
                        MessageBox.Show("Введені невірні дані входу");
                    }
                }
            }
            registrationBtn.Enabled = true;
            enterBtn.Enabled        = true;
        }
コード例 #6
0
ファイル: Recept.cs プロジェクト: FM-I/Cylinar-Recepts
        /// <summary>
        /// Ініціалізація форм
        /// </summary>
        /// <param name="s">Кнопка яка викликала відкриття форми</param>
        /// <param name="user">Користувач</param>
        /// <param name="recept">Рецепт для якого відкривається форма</param>
        public Recept(object s, User user, ReceptDb.Recept recept, MainForm main)
        {
            InitializeComponent();
            printDocument            = new PrintDocument();
            printDialog              = new PrintDialog();
            printDocument.PrintPage += PrintDocument_PrintPage;
            mainForm = main;

            currentRecept = recept;


            if (user.isAdmin)
            {
                receptPrintBtn.Visible = false;

                if (((s is Button) && ((Button)s).Name == "openModerationBtn") ||
                    ((s is ListBox) && ((ListBox)s).Name == "userReceptsListBox"))
                {
                    rejectBtn.Text     = "Відхилити";
                    confirmBtn.Visible = true;
                }

                rejectBtn.Visible = true;
            }

            receptNameLabel.Text   = recept.Name;
            receptTypeLabel.Text   = recept.ReceptType.Name;
            descriptionBox.Text    = recept.Description;
            receptAurhorLabel.Text = recept.User.Login;

            using (var context = new ReceptContext())
            {
                var rec = recept.Ingredients.Join(
                    context.Units,
                    r => r.UnitId,
                    u => u.id,
                    (r, u) => new
                {
                    Name  = r.Name,
                    Count = r.Count,
                    Unit  = u.Name
                });


                ingredientsData.Columns.Add("Name", "Назва");
                ingredientsData.Columns.Add("Count", "Кількість");
                ingredientsData.Columns.Add("Unit", "Мірна одиниця");


                foreach (var ingr in rec.ToList())
                {
                    ingredientsData.Rows.Add(ingr.Name, ingr.Count, ingr.Unit);
                }
            }
        }
コード例 #7
0
ファイル: ReceptAdd.cs プロジェクト: FM-I/Cylinar-Recepts
        //Конструкто редагування рецепту
        public ReceptAdd(User user, int receptId)
        {
            InitializeComponent();


            Text = "Редагування рецепту";


            this.receptId = receptId;
            currentUser   = user;

            using (var context = new ReceptContext())
            {
                var recept = context.Recepts.Where(r => r.id == receptId).FirstOrDefault();

                if (recept != null)
                {
                    receptNameBox.Text = recept.Name;
                    receptDescBox.Text = recept.Description;


                    receptTypesBox.DataSource    = context.ReceptTypes.ToList();
                    receptTypesBox.ValueMember   = "id";
                    receptTypesBox.DisplayMember = "Name";

                    receptTypesBox.SelectedItem = recept.ReceptType;


                    var ingrds = recept.Ingredients.Join(
                        context.Units,
                        i => i.UnitId,
                        u => u.id,
                        (i, u) => new
                    {
                        Name  = i.Name,
                        Count = i.Count,
                        Unit  = u.id
                    }).ToList();

                    foreach (var i in ingrds)
                    {
                        ingredientsData.Rows.Add(i.Name, i.Count);

                        ingrUnit.DataSource    = context.Units.ToList();
                        ingrUnit.ValueMember   = "id";
                        ingrUnit.DisplayMember = "Name";

                        int currRow = ingredientsData.Rows.Count - 1;

                        ingredientsData.Rows[currRow].Cells["ingrUnit"].Value = i.Unit;
                    }
                }
            }
        }
コード例 #8
0
ファイル: ReceptAdd.cs プロジェクト: FM-I/Cylinar-Recepts
        //Додавання нового рядка для інгредієнту
        private void addIngredient_Click(object sender, EventArgs e)
        {
            ingredientsData.Rows.Add();

            using (var context = new ReceptContext())
            {
                ingrUnit.DataSource    = context.Units.ToList();
                ingrUnit.ValueMember   = "id";
                ingrUnit.DisplayMember = "Name";
            }
        }
コード例 #9
0
ファイル: ReceptAdd.cs プロジェクト: FM-I/Cylinar-Recepts
        //Створення нового рецепту
        private void receptCreate()
        {
            using (var context = new ReceptContext())
            {
                var type = (ReceptType)receptTypesBox.SelectedItem;

                if (string.IsNullOrWhiteSpace(receptNameBox.Text))
                {
                    MessageBox.Show("Вкажіть назву");
                    return;
                }

                if (string.IsNullOrWhiteSpace(receptDescBox.Text))
                {
                    MessageBox.Show("Вкажіть рецепт");
                    return;
                }

                var recept = new ReceptDb.Recept()
                {
                    Name         = receptNameBox.Text.Trim(),
                    Description  = receptDescBox.Text.Trim(),
                    UserId       = currentUser.id,
                    ReceptTypeId = type.id
                };

                context.Recepts.Add(recept);

                var ingrds = GetIngredients(recept.id);


                if (ingrds.Count != 0)
                {
                    if (CheckProhibitedIngredient(recept, ingrds) == false)
                    {
                        context.Ingredients.AddRange(ingrds);
                        context.SaveChanges();
                        MessageBox.Show("Рецепт відправленно на модерацію");

                        Close();
                    }
                    else
                    {
                        MessageBox.Show("Ваш рецепт містить заборонені інгредієнти");
                    }
                }
                else
                {
                    MessageBox.Show("Додайде інгредієнти");
                }
            }
        }
コード例 #10
0
ファイル: MainForm.cs プロジェクト: FM-I/Cylinar-Recepts
        //Відкриття форми для відображення рецепту
        private void ShowRecept(int id, object sender)
        {
            using (var contex = new ReceptContext())
            {
                var recept = contex.Recepts.Where(r => r.id == id).FirstOrDefault();

                if (recept != null)
                {
                    Recept receptForm = new Recept(sender, user, recept, this);
                    receptForm.Show();
                }
            }
        }
コード例 #11
0
ファイル: ReceptAdd.cs プロジェクト: FM-I/Cylinar-Recepts
        //Конструктор Додавання рецепту
        public ReceptAdd(User user)
        {
            InitializeComponent();

            Text = "Додати рецепт";

            currentUser = user;
            receptId    = 0;

            using (var context = new ReceptContext())
            {
                receptTypesBox.DataSource    = context.ReceptTypes.ToList();
                receptTypesBox.ValueMember   = "id";
                receptTypesBox.DisplayMember = "Name";
            }
        }
コード例 #12
0
ファイル: ReceptAdd.cs プロジェクト: FM-I/Cylinar-Recepts
        /// <summary>
        /// Отримання інгредієнтів рецепту
        /// </summary>
        /// <param name="receptId">Іденитфікатор рецпту</param>
        /// <returns>Список інгредієнтів рецепту</returns>
        private List <Ingredient> GetIngredients(int receptId)
        {
            List <Ingredient> ingredientList = new List <Ingredient>();

            using (var context = new ReceptContext())
            {
                for (int i = 0; i < ingredientsData.Rows.Count; i++)
                {
                    string name;

                    if (ingredientsData.Rows[i].Cells["ingrName"].Value != null)
                    {
                        name = ingredientsData.Rows[i].Cells["ingrName"].Value.ToString();
                    }
                    else
                    {
                        MessageBox.Show("Вказано пустий інгредієнт, заповнійть його або видаліть");
                        return(new List <Ingredient>());
                    }

                    if (!float.TryParse(ingredientsData.Rows[i].Cells["ingrCount"].Value.ToString(), out float count))
                    {
                        MessageBox.Show("Вказано невірну кількість");
                        return(new List <Ingredient>());
                    }

                    Unit unit = new Unit();
                    if (ingredientsData.Rows[i].Cells["ingrUnit"].Value != null)
                    {
                        int.TryParse(ingredientsData.Rows[i].Cells["ingrUnit"].Value.ToString(), out int uId);
                        unit = context.Units.Where(u => u.id == uId).FirstOrDefault();
                    }
                    else
                    {
                        MessageBox.Show("Вкажіть одиницю виміру");
                        return(new List <Ingredient>());
                    }

                    ingredientList.Add(new Ingredient()
                    {
                        Name = name, Count = count, ReceptId = receptId, UnitId = unit.id
                    });
                }
            }

            return(ingredientList);
        }
コード例 #13
0
ファイル: Recept.cs プロジェクト: FM-I/Cylinar-Recepts
        //Друк рецепту
        private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
        {
            using (var context = new ReceptContext())
            {
                var recept = context.Recepts.Where(r => r.id == currentRecept.id).FirstOrDefault();

                string print = recept.Name + "\n\nІнгредієнти\n\n";

                foreach (var ingr in recept.Ingredients.ToList())
                {
                    print += $"{ingr.Name} - {ingr.Count} {ingr.Unit.Name}\n";
                }

                print += "\nРецепт\n\n" + recept.Description;

                e.Graphics.DrawString(print, new Font("Arial", 14), Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic);
            }
        }
コード例 #14
0
        private void regBtn_Click(object sender, EventArgs e)
        {
            enterBtn.Enabled = false;
            regBtn.Enabled   = false;

            using (var context = new ReceptContext())
            {
                var login    = loginTextBox.Text.Trim();
                var password = passTextBox.Text.Trim();


                if (String.IsNullOrWhiteSpace(login) || String.IsNullOrWhiteSpace(password))
                {
                    MessageBox.Show("Заповніть всі поля");
                }
                else
                {
                    var user = context.Users.AsNoTracking().Where(u => u.Login == login).FirstOrDefault();

                    if (user == null)
                    {
                        context.Users.Add(new User()
                        {
                            Login    = login,
                            Password = password
                        });
                        context.SaveChanges();

                        MessageBox.Show("Користувача зареєстровано");

                        EnterForm enterForm = new EnterForm();
                        enterForm.Show();
                        Close();
                    }
                    else
                    {
                        MessageBox.Show("Користувач з даним логіном зареєстрований");
                    }
                }
            }

            enterBtn.Enabled = true;
            regBtn.Enabled   = true;
        }
コード例 #15
0
ファイル: Recept.cs プロジェクト: FM-I/Cylinar-Recepts
        //Підтвердження додававння рецепту
        private void confirmBtn_Click(object sender, System.EventArgs e)
        {
            using (var context = new ReceptContext())
            {
                var result = MessageBox.Show("Підтвердити?", "Додавання", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result == DialogResult.No)
                {
                    return;
                }


                var recept = context.Recepts.Where(r => r.id == currentRecept.id).FirstOrDefault();
                recept.Moderation = true;
                context.SaveChanges();
            }
            mainForm.refreshList();
            Close();
        }
コード例 #16
0
ファイル: MainForm.cs プロジェクト: FM-I/Cylinar-Recepts
        private void ChangeType()
        {
            if (receptTypesBox.Items.Count > 0)
            {
                using (var context = new ReceptContext())
                {
                    var type = (ReceptType)receptTypesBox.SelectedItem;
                    List <ReceptDb.Recept> recepts;
                    if (type.id != 0)
                    {
                        recepts = context.Recepts.AsNoTracking().Where(r => r.ReceptTypeId == type.id && r.Moderation == true).ToList();
                    }
                    else
                    {
                        recepts = context.Recepts.AsNoTracking().Where(r => r.Moderation == true).ToList();
                    }

                    receptsListBox.DataSource    = recepts;
                    receptsListBox.ValueMember   = "Id";
                    receptsListBox.DisplayMember = "Name";
                }
            }
        }
コード例 #17
0
ファイル: MainForm.cs プロジェクト: FM-I/Cylinar-Recepts
        //Пошук
        private void findBtn_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(findTextBox.Text))
            {
                var findedRecept = findTextBox.Text;
                var type         = (ReceptType)receptTypesBox.SelectedItem;

                using (var context = new ReceptContext())
                {
                    List <ReceptDb.Recept> recepts;

                    if (type.id != 0)
                    {
                        recepts = context.Recepts.AsNoTracking()
                                  .Where(r => r.ReceptTypeId == type.id && r.Name.Contains(findedRecept))
                                  .ToList();
                    }
                    else
                    {
                        recepts = context.Recepts.AsNoTracking()
                                  .Where(r => r.Name.Contains(findedRecept))
                                  .ToList();
                    }

                    if (recepts.Count > 0)
                    {
                        receptsListBox.DataSource    = recepts;
                        receptsListBox.ValueMember   = "Id";
                        receptsListBox.DisplayMember = "Name";
                    }
                    else
                    {
                        MessageBox.Show("Нічого не знайдено");
                    }
                }
            }
        }
コード例 #18
0
ファイル: MainForm.cs プロジェクト: FM-I/Cylinar-Recepts
        //Загрузка форми
        public MainForm(User user)
        {
            InitializeComponent();
            this.user = user;

            //Обработчики событий для двойного клика по ListBox
            receptsListBox.DoubleClick     += OpenDouble_Click;
            userReceptsListBox.DoubleClick += OpenDouble_Click;

            userReceptsListBox.SelectionMode = SelectionMode.One;
            receptsListBox.SelectionMode     = SelectionMode.One;

            LoadIntefaceFor();

            userNameLabel.Text = user.Login;

            using (var context = new ReceptContext())
            {
                var types   = context.ReceptTypes.AsNoTracking().ToList();
                var recepts = context.Recepts.AsNoTracking().Where(r => r.Moderation == true).ToList();

                types.Add(new ReceptType()
                {
                    Name = "Всі", id = 0
                });

                receptTypesBox.DataSource    = types;
                receptTypesBox.ValueMember   = "id";
                receptTypesBox.DisplayMember = "Name";

                receptTypesBox.SelectedItem = types.Last();

                receptsListBox.DataSource    = recepts;
                receptsListBox.ValueMember   = "Id";
                receptsListBox.DisplayMember = "Name";
            }
        }
コード例 #19
0
ファイル: ReceptAdd.cs プロジェクト: FM-I/Cylinar-Recepts
        /// <summary>
        /// Перевірка на заборонені інгредієнти
        /// </summary>
        /// <param name="recept">Рецепт</param>
        /// <param name="ingredientList">Список інгредієнтів</param>
        /// <returns>True якщо не знайдено, False - знайдено</returns>
        private bool CheckProhibitedIngredient(ReceptDb.Recept recept, List <Ingredient> ingredientList)
        {
            using (var context = new ReceptContext())
            {
                var desc = recept.Description.ToLower().Split(' ');

                foreach (var prohibitedIngrd in context.ProhibitedIngredients.ToList())
                {
                    if (desc.Contains(prohibitedIngrd.Name))
                    {
                        return(true);
                    }

                    foreach (var ingr in ingredientList)
                    {
                        if (ingr.Name.ToLower() == prohibitedIngrd.Name.ToLower())
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }