private void dgDevices_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {//обработчик смены текущего активного устройства
     if (dgDevices.SelectedItem != null)
     {
         clientDevice device = dgDevices.SelectedItem as clientDevice;
         updateDbGridService(ref device); //обновляем список услуг
     }
     controlButtonsEnable();
 }
 public DeviceWindow(ref contract contract, ref clientDevice clientDevice)
 {//редактировать существующее описание устройства, 1 параметр ссылка на договор, 2 параметр ссылка на редактируемое описание
     InitializeComponent();
     this.contractId = contract.Id;
     NewDevice       = clientDevice;
     //заполняем поля для ввода существующими данными
     cbTypeOfDevice.SelectedItem = clientDevice.typeOfDevice;
     tbModelName.Text            = NewDevice.modelName;
     tbSerialNumber.Text         = NewDevice.serialNumber;
     tbDescription.Text          = NewDevice.description;
     updateTypesList();
 }
 private void bDeleteSevice_Click(object sender, RoutedEventArgs e)
 {//Обработчик кнопки удалить услугу
     if (dgServices.SelectedItem != null)
     {
         clientDevice     currentdevice  = dgDevices.SelectedItem as clientDevice; //выбираем текущее устройство
         service          currentService = (dgServices.SelectedItem as requestedService).service;
         requestedService rs             = currentdevice.requestedServices.Where(r => r.service == currentService).FirstOrDefault();
         Contract.approximateCost -= rs.cost;
         currentdevice.requestedServices.Remove(rs);
         updateDbGridService(ref currentdevice);
         tbApproximateEndCost.Text = Contract.approximateCost.ToString();
         controlButtonsEnable();
     }
 }
        private void bReturnToRepairer_Click(object sender, RoutedEventArgs e)
        {
            requestedService currentRS = dgServices.SelectedItem as requestedService;

            if (requestedServiceIsExecution(currentRS))
            {
                currentRS.stageOfImplementationId = 2;
                currentRS.servicesExecution.First().dateOfEnd = null;
                core.serviceCenterDB.SaveChanges();
                MessageBox.Show("Возвращено в работу мастеру");
                clientDevice currentDevice = currentRS.clientDevice;
                updateDbGridService(ref currentDevice);
            }
        }
 private void bEditDevice_Click(object sender, RoutedEventArgs e)
 {//Обработчик кнопки "Редактировать" описание устройства
     if (dgDevices.SelectedItem != null)
     {
         clientDevice         editableDevice = dgDevices.SelectedItem as clientDevice; // выделяем текущее описание
         Windows.DeviceWindow w = new DeviceWindow(ref _contract, ref editableDevice); //окно для редактирования описания
         w.ShowDialog();
         if (w.DialogResult == true)                                                   //если редактирование описание было выполнено
         {                                                                             //находим текущее описание объектной модели и обновляем описание свойств
             Contract.clientDevices.Where(d => d.serialNumber == editableDevice.serialNumber).FirstOrDefault().typeOfDevice = w.NewDevice.typeOfDevice;
             Contract.clientDevices.Where(d => d.serialNumber == editableDevice.serialNumber).FirstOrDefault().modelName    = w.NewDevice.modelName;
             Contract.clientDevices.Where(d => d.serialNumber == editableDevice.serialNumber).FirstOrDefault().serialNumber = w.NewDevice.serialNumber;
             Contract.clientDevices.Where(d => d.serialNumber == editableDevice.serialNumber).FirstOrDefault().description  = w.NewDevice.description;
             updateDbGridClientDevices(); //обновляем список устройств
         }
     }
 }
 private void bAddService_Click(object sender, RoutedEventArgs e)
 {//обработчик кнопки "добавить" услугу
     Windows.ServicesWindow w = new ServicesWindow();
     w.ShowDialog();
     if (w.DialogResult == true)                                                  //если пользователь выбрал услугу
     {
         clientDevice     currentdevice = dgDevices.SelectedItem as clientDevice; //выбираем текущее устройство
         requestedService rs            = new requestedService();                 //формируем запрос на услугу
         rs.clientDevice = currentdevice;
         currentdevice.requestedServices.Add(rs);
         rs.service                 = w.Service;
         rs.cost                    = w.Cost;
         rs.description             = w.Description;
         rs.stageOfImplementationId = 1;
         Contract.approximateCost  += w.Cost;    //добавляем стоимость услуги к общей стоимости
         tbApproximateEndCost.Text  = Contract.approximateCost.ToString();
         updateDbGridService(ref currentdevice); //обновляем список услуг для данного устройства
         controlBokEnable();
         controlButtonsEnable();
     }
 }
 public bool SetDeviceData()
 {        //функция для проверки заполнения полей данных и заполнения объектной модели обновленными данными
     if ( //если поля заполнены не корректно
         (cbTypeOfDevice.SelectedItem == null) |
         (String.IsNullOrWhiteSpace(tbModelName.Text)) |
         (String.IsNullOrWhiteSpace(tbSerialNumber.Text)) |
         (String.IsNullOrWhiteSpace(tbDescription.Text))
         )
     {
         return(false);
     }
     else
     {//если поля заполнены корректно, обновляем объектную модель
         NewDevice = new clientDevice();
         NewDevice.typeOfDevice = (cbTypeOfDevice.SelectedItem as typeOfDevice);
         NewDevice.modelName    = tbModelName.Text;
         NewDevice.serialNumber = tbSerialNumber.Text;
         NewDevice.description  = tbDescription.Text;
         NewDevice.contractId   = contractId;
         return(true);
     }
 }
 private void updateDbGridService(ref clientDevice device)
 {                                                               //обновление данныех таблицы устройства клиента
     dgServices.ItemsSource = device.requestedServices.ToList(); //устанавливаем источник данных для таблицы услуги
 }