https://disk.yandex.ru/d/csC_Nvyd7x1rRw
В проекте при добавлении новой записи, ошибка что клиент не найден, что могу делать не так, в этом ли файле ошибка?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Data.Entity.Infrastructure;
namespace Kurs
{
public partial class AddDrivingScheduleWindow : Window
{
private Контакты_Сотрудники _selectedInstructor;
private List<DateTime> _availableDates;
private Контакты_Клиенты _user1;
public AddDrivingScheduleWindow()
{
InitializeComponent();
}
public AddDrivingScheduleWindow(Контакты_Сотрудники user, Контакты_Клиенты user1 = null)
{
InitializeComponent();
LoadInstructors(user);
_user1 = user1;
}
private void LoadInstructors(Контакты_Сотрудники user)
{
using (var context = new АвтошколаEntities6())
{
InstructorsComboBox.ItemsSource = context.Сотрудники
.Where(s => s.Должность == "Инструктор")
.Select(s => s.Контакты_Сотрудники)
.ToList();
InstructorsComboBox.DisplayMemberPath = "Фамилия";
if (user != null)
{
InstructorsComboBox.SelectedItem = user;
_selectedInstructor = user;
}
}
}
private void InstructorsComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
_selectedInstructor = InstructorsComboBox.SelectedItem as Контакты_Сотрудники;
if (_selectedInstructor != null)
LoadAvailableDates();
}
private void LoadAvailableDates()
{
if (_selectedInstructor == null)
{
return;
}
using (var context = new АвтошколаEntities6())
{
var availableDates = context.Расписание_Инструкторов
.Where(s => s.Код_контакта_Сотрудника == _selectedInstructor.Код_Контакта_Сотрудника && s.Время_начала != null && s.Время_окончания != null)
.Select(s => s.Дата_работы)
.ToList();
DatePick.ItemsSource = availableDates;
_availableDates = availableDates;
DatePick.IsEnabled = true;
TimeSlotComboBox.IsEnabled = false;
TimeSlotComboBox.ItemsSource = null;
}
}
private void DatePick_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (DatePick.SelectedItem == null || _selectedInstructor == null)
{
return;
}
DateTime selectedDate = (DateTime)DatePick.SelectedItem;
using (var context = new АвтошколаEntities6())
{
var availableTimeSlots = context.Расписание_Инструкторов
.Where(s => s.Код_контакта_Сотрудника == _selectedInstructor.Код_Контакта_Сотрудника && s.Дата_работы == selectedDate && s.Время_начала != null && s.Время_окончания != null)
.ToList()
.Select(s => new
{
StartTime = s.Время_начала,
EndTime = s.Время_окончания,
})
.Where(s => s.StartTime.HasValue && s.EndTime.HasValue)
.ToList();
var timeSlots = new List<object>();
foreach (var schedule in availableTimeSlots)
{
TimeSpan startTime = schedule.StartTime.Value;
TimeSpan endTime = schedule.EndTime.Value;
while (startTime < endTime)
{
TimeSpan sessionEndTime = startTime.Add(TimeSpan.FromHours(2));
if (sessionEndTime > endTime)
{
sessionEndTime = endTime;
}
timeSlots.Add(new
{
StartTime = startTime,
EndTime = sessionEndTime,
TimeSlot = startTime.ToString(@"hh\:mm\:ss") + " - " + sessionEndTime.ToString(@"hh\:mm\:ss")
});
startTime = sessionEndTime;
}
}
TimeSlotComboBox.ItemsSource = timeSlots;
TimeSlotComboBox.DisplayMemberPath = "TimeSlot";
TimeSlotComboBox.IsEnabled = true;
}
}
private void AddButton_Click(object sender, RoutedEventArgs e)
{
try
{
using (var context = new АвтошколаEntities6())
{
if (InstructorsComboBox.SelectedItem == null)
{
MessageBox.Show("Пожалуйста, выберите инструктора.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
if (DatePick.SelectedItem == null)
{
MessageBox.Show("Пожалуйста, выберите дату.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
if (TimeSlotComboBox.SelectedItem == null)
{
MessageBox.Show("Пожалуйста, выберите время.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
int clientId = 0;
if (_user1 != null)
{
var client = context.Контакты_Клиенты.FirstOrDefault(s => s.Код_Контакта_Клиента == _user1.Код_Контакта_Клиента);
if (client != null)
{
var client1 = client.Клиенты.FirstOrDefault();
if (client1 != null)
{
clientId = client1.Код_клиента;
}
else
{
MessageBox.Show("Клиент не найден", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
else
{
MessageBox.Show("Клиент не найден", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
else
{
MessageBox.Show("Клиент не найден", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
DateTime selectedDate = (DateTime)DatePick.SelectedItem;
var selectedTimeSlot = TimeSlotComboBox.SelectedItem as dynamic;
TimeSpan startTime = selectedTimeSlot.StartTime;
TimeSpan endTime = selectedTimeSlot.EndTime;
var isTimeSlotOccupied = context.Расписание_вождения.Any(s =>
s.Код_сотрудника == _selectedInstructor.Код_Контакта_Сотрудника &&
s.Дата_занятия == selectedDate &&
((s.Время_начала <= startTime && startTime < s.Время_окончания) ||
(startTime <= s.Время_начала && s.Время_начала < endTime))
);
if (isTimeSlotOccupied)
{
MessageBox.Show("Выбранное время занято. Пожалуйста, выберите другое время.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
var newSchedule = new Расписание_вождения
{
Дата_занятия = selectedDate,
Время_начала = startTime,
Время_окончания = endTime,
Код_клиента = clientId,
Код_сотрудника = _selectedInstructor.Код_Контакта_Сотрудника
};
context.Расписание_вождения.Add(newSchedule);
context.SaveChanges();
MessageBox.Show("Запись успешно добавлена.", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
this.Close();
}
}
catch (FormatException)
{
MessageBox.Show("Неверный формат данных", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
}
catch (DbUpdateException ex)
{
MessageBox.Show($"Произошла ошибка при добавлении записи: {ex.InnerException?.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
}
catch (Exception ex)
{
MessageBox.Show($"Произошла ошибка при добавлении записи: {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
}