forked from amkovkov/GranuSightSoftware2
fix: logic errors in view models
This commit is contained in:
@@ -321,63 +321,11 @@ public partial class SampleCalibrationViewModel : ViewModelBase
|
||||
_logger.LogTrace("Выбран элемент из списка: {}", value);
|
||||
// Находим запись в базе данных
|
||||
var selectedRecord = _context.SampleRecords.Find(MenuItems[value].Id);
|
||||
// Если запись найдена, то заполняем поля из базы данных
|
||||
if (selectedRecord is not null)
|
||||
{
|
||||
// Заполняем простые поля
|
||||
Record.Id = selectedRecord.Id;
|
||||
Record.Uuid = selectedRecord.Uuid;
|
||||
Record.CreateDateTime = selectedRecord.CreateDateTime;
|
||||
Record.EditDateTime = selectedRecord.EditDateTime;
|
||||
Record.SampleName = selectedRecord.SampleName;
|
||||
Record.SampleComment = selectedRecord.SampleComment;
|
||||
Record.SamplingDateTime = selectedRecord.SamplingDateTime;
|
||||
Record.SamplingPlace = selectedRecord.SamplingPlace;
|
||||
Record.MixtureActualRate = selectedRecord.MixtureActualRate;
|
||||
Record.MeasuredContent = selectedRecord.MeasuredContent;
|
||||
if (selectedRecord.Features.Count() > 0)
|
||||
Record.Features = selectedRecord.Features.Chunk(AnalyzerService.FEATURES_LENGTH).Select(v => v.ToArray()).ToList();
|
||||
else
|
||||
Record.Features = new List<float[]>();
|
||||
|
||||
// Ищем изображение в базе данных
|
||||
var imageRecord = _context.ImageRecords.Find(selectedRecord.ImageId);
|
||||
// Если изображение не найдено в базе данных, то логгируем как ошибку
|
||||
if (imageRecord is null)
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в таблице {}", selectedRecord.ImageId, nameof(_context.ImageRecords));
|
||||
// В любом случае заполняем изображение
|
||||
Record.Image.Data = imageRecord?.Base64 ?? "";
|
||||
|
||||
// Ищем марку в базе данных
|
||||
var brandRecord = _context.BrandRecords.Find(selectedRecord.BrandId);
|
||||
// Если марка не найдена в базе данных
|
||||
if (brandRecord is null)
|
||||
{
|
||||
// Логгируем как ошибку
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в таблице {}", selectedRecord.BrandId, nameof(_context.BrandRecords));
|
||||
// Устанавливаем, что элемент не выбран
|
||||
BrandComboBoxSelectedIndex = -1;
|
||||
}
|
||||
// Если марка найдена в базе данных
|
||||
else
|
||||
{
|
||||
// Ищем марку в выпадающем списке марок
|
||||
var brandComboBoxItem = BrandComboBoxItems.FirstOrDefault(r => r.Id == brandRecord.Id);
|
||||
// Если марка не найдена в выпадающем списке марок, то логгируем как ошибку
|
||||
if (brandComboBoxItem is null)
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в списке {}", brandRecord.Id, nameof(BrandComboBoxItems));
|
||||
// Если марка найдена в выпадающем списке марок, выбираем её
|
||||
else
|
||||
BrandComboBoxSelectedIndex = BrandComboBoxItems.IndexOf(brandComboBoxItem);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
// Если значение не найдено в базе данных
|
||||
else
|
||||
if (selectedRecord is null)
|
||||
{
|
||||
// Логгируем как ошибку
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в таблице {}", MenuItems[value].Id, nameof(_context.BrandRecords));
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в таблице {}", MenuItems[value].Id, nameof(_context.SampleRecords));
|
||||
var nonExistingIndex = MenuSelectedIndex; // Сохраняем несуществующий индекс
|
||||
// Устанавливаем, что запись не выбрана, этот метод вызовется повторно и заполнит поля пустыми значениями
|
||||
MenuSelectedIndex = -1;
|
||||
@@ -385,6 +333,55 @@ public partial class SampleCalibrationViewModel : ViewModelBase
|
||||
MenuItems.RemoveAt(nonExistingIndex);
|
||||
return;
|
||||
}
|
||||
// Если запись найдена, то заполняем поля из базы данных
|
||||
// Заполняем простые поля
|
||||
Record.Id = selectedRecord.Id;
|
||||
Record.Uuid = selectedRecord.Uuid;
|
||||
Record.CreateDateTime = selectedRecord.CreateDateTime;
|
||||
Record.EditDateTime = selectedRecord.EditDateTime;
|
||||
Record.SampleName = selectedRecord.SampleName;
|
||||
Record.SampleComment = selectedRecord.SampleComment;
|
||||
Record.SamplingDateTime = selectedRecord.SamplingDateTime;
|
||||
Record.SamplingPlace = selectedRecord.SamplingPlace;
|
||||
Record.MixtureActualRate = selectedRecord.MixtureActualRate;
|
||||
Record.MeasuredContent = selectedRecord.MeasuredContent;
|
||||
if (selectedRecord.Features.Count() > 0)
|
||||
Record.Features = selectedRecord.Features.Chunk(AnalyzerService.FEATURES_LENGTH).Select(v => v.ToArray()).ToList();
|
||||
else
|
||||
Record.Features = new List<float[]>();
|
||||
|
||||
// Ищем изображение в базе данных
|
||||
var imageRecord = _context.ImageRecords.Find(selectedRecord.ImageId);
|
||||
// Если изображение не найдено в базе данных, то логгируем как ошибку
|
||||
if (imageRecord is null)
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в таблице {}", selectedRecord.ImageId, nameof(_context.ImageRecords));
|
||||
// В любом случае заполняем изображение
|
||||
Record.Image.Data = imageRecord?.Base64 ?? "";
|
||||
|
||||
// Ищем марку в базе данных
|
||||
var brandRecord = _context.BrandRecords.Find(selectedRecord.BrandId);
|
||||
// Если марка не найдена в базе данных
|
||||
if (brandRecord is null)
|
||||
{
|
||||
// Логгируем как ошибку
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в таблице {}", selectedRecord.BrandId, nameof(_context.BrandRecords));
|
||||
// Устанавливаем, что элемент не выбран
|
||||
BrandComboBoxSelectedIndex = -1;
|
||||
}
|
||||
// Если марка найдена в базе данных
|
||||
else
|
||||
{
|
||||
// Ищем марку в выпадающем списке марок
|
||||
var brandComboBoxItem = BrandComboBoxItems.FirstOrDefault(r => r.Id == brandRecord.Id);
|
||||
// Если марка не найдена в выпадающем списке марок, то логгируем как ошибку
|
||||
if (brandComboBoxItem is null)
|
||||
_logger.LogError("Не удалось найти элемент с Id({}) в списке {}", brandRecord.Id, nameof(BrandComboBoxItems));
|
||||
// Если марка найдена в выпадающем списке марок, выбираем её
|
||||
else
|
||||
BrandComboBoxSelectedIndex = BrandComboBoxItems.IndexOf(brandComboBoxItem);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Если элемент не выбран, заполняем поля пустыми значениями
|
||||
|
||||
Reference in New Issue
Block a user