123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- using school.FolderClasses;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- 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.Shapes;
- namespace school
- {
- /// <summary>
- /// Логика взаимодействия для winWriteService.xaml
- /// </summary>
- public partial class winWriteService : Window
- {
- Service thisService;
- public winWriteService(int idServise)
- {
- thisService = baseConnect.thisBase.Service.Where(tb => tb.ID == idServise).FirstOrDefault();
- InitializeComponent();
- init();
- }
- private void init()
- {
- List<ClientService> list = baseConnect.thisBase.ClientService.Where(tb => tb.ServiceID == thisService.ID).OrderBy(tb => tb.Client.LastName).ThenBy(tb => tb.Client.FirstName).ThenBy(tb => tb.Client.Patronymic).ToList();
- if (list.Count > 0)
- {
- DGClientService.ItemsSource = list;
- TBnoWrites.Visibility = Visibility.Collapsed;
- }
- else
- {
- DGClientService.Visibility = Visibility.Collapsed;
- TBnoWrites.Visibility = Visibility.Visible;
- }
- TBName.Text = thisService.Title;
- string line = (thisService.Description == null || thisService.Description == "") ? "Описание отсутствует" : thisService.Description.ToString();
- TBDescription.Text = line;
- TBTime.Text = (thisService.DurationInSeconds / 60).ToString() + " мин.";
- TBOldPrice.Visibility = thisService.discountVisible;
- TBOldPrice.Text = thisService.oldPrice;
- TBPrice.Text = Convert.ToInt32(thisService.Cost) + " рублей";
- if (dataAdminRoot.adminRoot == ("0000").GetHashCode())
- {
- TBHeader.Text = "Просмотр услуги";
- BtnWrite.Content = "Проверить";
- }
- else
- {
- GInfo.Visibility = Visibility.Collapsed;
- }
- }
- private bool check()
- {
- try
- {
- bool flag = true;
- string mess = "";
- Regex reg_time = new Regex("^[0-2][0-9]:[0-6][0-9]$");
- if (!reg_time.IsMatch(TBTimeServ.Text))//проверка корректности времени
- {
- flag = false;
- mess += "Формат введенного времени не совпадает\n";
- }
- if (DPDate.SelectedDate <= DateTime.Today)//проверка даты на корректность
- {
- flag = false;
- mess += "Выбранная дата не подходит для записи, выберите дату, например, завтра или позднее";
- }
- if (flag)
- {
- List<ClientService> list = baseConnect.thisBase.ClientService.Where(tb => tb.ServiceID == thisService.ID).ToList();//все записи на услугу
- DateTime thisTime = (DateTime)DPDate.SelectedDate;//начало услуги
- thisTime = thisTime.AddHours(Convert.ToDouble(TBTimeServ.Text.Split(':')[0])).AddMinutes(Convert.ToDouble(TBTimeServ.Text.Split(':')[1]));
- DateTime endThisTime = thisTime.AddHours(thisService.DurationInSeconds / 3600).AddMinutes(thisService.DurationInSeconds %3600);//конец услуги
- foreach (ClientService service in list)//проверка на время
- {
- DateTime start = service.StartTime;
- DateTime end = service.StartTime.AddHours(thisService.DurationInSeconds / 3600).AddMinutes(thisService.DurationInSeconds % 3600);
- if (start == thisTime || thisTime == end || (thisTime < start && endThisTime > start) || (end > thisTime && start < thisTime))
- flag = false;
- }
- if (!flag) mess += "Выбранное время недоступно";
- }
- if (mess != "") MessageBox.Show(mess);
- return flag;
- }
- catch
- {
- MessageBox.Show("Возникли ошибки при проверке данных");
- return false;
- }
- }
- private void BtnWriteClick(object sender, RoutedEventArgs e)
- {
- if (check())
- {
- if (dataAdminRoot.adminRoot == ("0000").GetHashCode())//проверка работы
- {
- MessageBox.Show("Запись корректна");
- }
- else
- {
- try
- {
- DateTime thisTime = (DateTime)DPDate.SelectedDate;//начало услуги
- thisTime = thisTime.AddHours(Convert.ToDouble(TBTimeServ.Text.Split(':')[0])).AddMinutes(Convert.ToDouble(TBTimeServ.Text.Split(':')[1]));
- ClientService cs = new ClientService()
- {
- ClientID = dataUser.user.ID,
- ServiceID = thisService.ID,
- StartTime = thisTime
- };
- baseConnect.thisBase.ClientService.Add(cs);
- baseConnect.thisBase.SaveChanges();
- this.Close();
- MessageBox.Show("Вы успешно добавлены на услугу");
- }
- catch
- {
- MessageBox.Show("Возникла ошибка");
- }
- }
- }
- }
- private void TBTimeServTextChanged(object sender, TextChangedEventArgs e)
- {
- try
- {
- string line = TBTimeServ.Text;
- int lenght = line.Length;
- switch (lenght)
- {
- case 0:
- {
- break;
- }
- case 1:
- {
- Regex n = new Regex(@"^[0-2]$");
- if (!n.IsMatch(line))
- {
- line = "";
- }
- break;
- }
- case 2:
- {
- Regex n = new Regex(@"^[0-2][0-9]$");
- if (!n.IsMatch(line))
- {
- int num = Convert.ToInt32(line);
- if (num > 23 || num < 8) line = line.Substring(0, line.Length - 1);
- }
- else line += ":";
- break;
- }
- case 4:
- {
- Regex n = new Regex(@"^[0-2][0-9]:[0-6]$");
- if (!n.IsMatch(line))
- {
- int num = Convert.ToInt32(line);
- if (num > 23 || num < 8) line = line.Substring(0, line.Length - 1);
- }
- break;
- }
- case 5:
- {
- Regex n = new Regex(@"^[0-2][0-9]:[0-6][0-9]$");
- if (!n.IsMatch(line))
- {
- int num = Convert.ToInt32(line.Split(':')[0]);
- int num2 = Convert.ToInt32(line.Split(':')[1]);
- if (num > 23 || num < 8 || num2 > 60) line = line.Substring(0, line.Length - 1);
- }
- else
- {
- DateTime thisTime = (DateTime)DPDate.SelectedDate;//начало услуги
- thisTime = thisTime.AddHours(Convert.ToDouble(TBTimeServ.Text.Split(':')[0])).AddMinutes(Convert.ToDouble(TBTimeServ.Text.Split(':')[1]));
- DateTime endThisTime = thisTime.AddHours(thisService.DurationInSeconds / 3600).AddMinutes(thisService.DurationInSeconds % 3600);//конец услуги
- TBEndTime.Text = "Время окончания " + endThisTime.ToString("dd MMMM yyyy HH:mm");
- }
- break;
- }
- default:
- {
- line = line.Substring(0, line.Length - 1);
- break;
- }
- }
- if (lenght != 3) TBTimeServ.Text = line;
- }
- catch
- {
- MessageBox.Show("Ошибка ввода");
- }
- }
- }
- }
|