123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- using Microsoft.Win32;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- namespace school
- /// <summary>
- /// Логика взаимодействия для pageEditService.xaml
- /// </summary>
- {
- public partial class pageEditService : Page
- {
- Service thisService;//текущая услуга
- bool edit;//флаг редактирования
- string messegeErr;//сообщение с ошибками в заполнении формы
- public pageEditService()
- {
- InitializeComponent();
- thisService = new Service();//инициализация услуги
- edit = false; //флаг редактирования
- }
- public pageEditService(int idService)
- {
- thisService = baseConnect.thisBase.Service.Where(tb => tb.ID == idService).FirstOrDefault();//инициализация услуги
- InitializeComponent();
- init();
- edit = true;//флаг редактирования
- }
- /// <summary>
- /// Инициализация компонентов страницы
- /// </summary>
- private void init()
- {
- TBHeader.Text = "Редактирование услуги";
- BtnEdit.Content = "Редактировать";
- TBNameService.Text = thisService.Title;
- TBDescriptionService.Text = thisService.Description;
- TBDiscountService.Text = (thisService.Discount * 100).ToString();
- TBPriceService.Text = thisService.Cost.ToString();
- TBTimeServise.Text = (thisService.DurationInSeconds / 60).ToString();
- if (thisService.MainImagePath != null)
- {
- ImgService.Source = new BitmapImage(new Uri("/" + thisService.MainImagePath.Replace('\\', '/'), UriKind.Relative));
- }
- }
- /// <summary>
- /// Обработка добавления главного изображения
- /// </summary>
- private void BtnAddImageClick(object sender, RoutedEventArgs e)
- {
- try
- {
- string appDir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);//полный путь для проверки наличия файла
- appDir = appDir.Replace("\\bin\\Debug", "");//убираем все лишнее из пути [для отладки]
- appDir = appDir.Replace("\\bin\\Release", "");//убираем все лишнее из пути [для релиза]
- string initPath = appDir + "\\Услуги школы\\";
- OpenFileDialog OFD = new OpenFileDialog(); // создаем объект диалогового окна
- OFD.InitialDirectory = initPath;
- OFD.ShowDialog(); // открываем диалоговое окно
- string path = OFD.FileName; // извлекаем полный путь к картинке
- if (path.Contains(initPath))//проверяем содержит ли наш путь изначальный
- {
- int n = path.IndexOf("Услуги школы");
- path = path.Substring(n); // записываем в бд путь, начиная с имени папки
- thisService.MainImagePath = path;
- ImgService.Source = new BitmapImage(new Uri("/" + thisService.MainImagePath.Replace('\\', '/'), UriKind.Relative));
- }
- else
- {
- MessageBox.Show("Выбранный файл, находится вне дирректории!", "Ошибка выбора фото", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- catch
- {
- MessageBox.Show("Фото не добавлено");
- }
- }
- /// <summary>
- /// Изменение данных о сервисе
- /// </summary>
- private void BtnEditClick(object sender, RoutedEventArgs e)
- {
- if (saveService()) dataFrame.mainFrame.Navigate(new pageServicesList());//сохранение объекта
- }
- /// <summary>
- /// Сохранение сервиса
- /// </summary>
- /// <returns>Успешность сохранения</returns>
- private bool saveService()
- {
- messegeErr = "Во время заполнения формы возникли следующие ошибки:\n";
- bool f1 = checkStr(TBNameService.Text, "Название");
- bool f2 = checkName(TBNameService.Text);
- bool f3 = checkNum(TBPriceService.Text, "Стоимость");
- bool f4 = checkNum(TBTimeServise.Text, "Длительность");
- bool flag = f1 && f2 && f3 && f4;
- if (flag)
- {
- thisService.Title = TBNameService.Text;
- thisService.Cost = Convert.ToDecimal(TBPriceService.Text);
- thisService.DurationInSeconds = (int)Convert.ToDouble(TBTimeServise.Text) * 60;
- if (checkStr(TBDescriptionService.Text, "Описание")) thisService.Description = TBDescriptionService.Text;
- if (checkNum(TBDiscountService.Text, "Скидка")) thisService.Discount = Convert.ToDouble(TBDiscountService.Text) / 100;
- try
- {
- if (!edit)
- {
- baseConnect.thisBase.Service.Add(thisService);
- }
- baseConnect.thisBase.SaveChanges();
- if (edit) MessageBox.Show("Услуга успешно отредактирована");
- else MessageBox.Show("Услуга успешно добавлена");
- return true;
- }
- catch
- {
- if (edit) MessageBox.Show("Ошибка обновления сервиса");
- else MessageBox.Show("Ошибка добавления сервиса");
- return false;
- }
- }
- else
- {
- MessageBox.Show(messegeErr, "Ошибка заполнения формы", MessageBoxButton.OK, MessageBoxImage.Error);
- return false;
- }
- }
- private bool checkName(string name)
- {
- List<Service> list = baseConnect.thisBase.Service.Where(tb => tb.Title == name).ToList();
- bool flag = true;
- if (edit && list.Count > 1)
- {
- flag = false;
- messegeErr += "\n Услуга с таким названием уже существует";
- }
- if (!edit && list.Count > 0)
- {
- flag = false;
- messegeErr += "\n Услуга с таким названием уже существует";
- }
- return flag;
- }
- private bool checkStr(string str, string param)
- {
- bool flag = true;
- if (string.IsNullOrWhiteSpace(str))
- {
- messegeErr += "\n Значение " + param + " пустое";
- flag = false;
- }
- return flag;
- }
- /// <summary>
- /// Проверка числовых значений
- /// </summary>
- /// <param name="strNum">Число</param>
- /// <param name="param">Название параметра</param>
- private bool checkNum(string strNum, string param)
- {
- if (strNum == null || string.IsNullOrWhiteSpace(strNum))
- {
- messegeErr += $"\n Значение " + param + " пустое";
- return false;
- }
- double count = Convert.ToDouble(strNum);
- bool flag = true;
- if (count <= 0)
- {
- messegeErr += $"\n Значение " + param + " не может быть отрицательным";
- flag = false;
- }
- if (param == "Длительность" && count / 60 > 4)
- {
- messegeErr += $"\n Длительность занятия не может быть больше 4 часов";
- flag = false;
- }
- if (param == "Скидка" && count > 100)
- {
- messegeErr += $"\n Скидка занятия не может быть больше 100%";
- flag = false;
- }
- return flag;
- }
- private void BtnBackClick(object sender, RoutedEventArgs e)
- {
- switch (MessageBox.Show("Вы действительно хотите выйти? таком случае, введенные вами данные не сохраняться", "Попытка выхода", MessageBoxButton.YesNo, MessageBoxImage.Warning))
- {
- case MessageBoxResult.Yes:
- {
- dataFrame.mainFrame.Navigate(new pageServicesList());
- break;
- }
- case MessageBoxResult.No:
- {
- break;
- }
- }
- }
- private void BtnAddOtherImageClick(object sender, RoutedEventArgs e)
- {
- switch (MessageBox.Show("Для продолжения работы необходимо сохранить услугу? Желаете сохранить и продолжить?", "Сохранить услугу?", MessageBoxButton.YesNo, MessageBoxImage.Question))
- {
- case MessageBoxResult.Yes:
- {
- if (saveService()) dataFrame.mainFrame.Navigate(new pageEditServiseImage(thisService.ID));
- break;
- }
- case MessageBoxResult.No:
- {
- break;
- }
- }
- }
- }
- }
|