/// <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); } } }
//Створення нового рецепту 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("Додайде інгредієнти"); } } }
/// <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); }