/// <summary> /// Импортирует тесты /// </summary> /// <param name="fileBytes"></param> /// <param name="type"></param> public void ImportTests(byte[] fileBytes, [Optional][DefaultParameterValue(ImportType.Simple)] ImportType type) { // шаблон импорта Dictionary <string, int> templ = GetImportTemplate(type); // парсер для ексель ExcelParser parser = new ExcelParser(fileBytes, templ); // строки с информацией по вопросам QuestRow[] questRows = parser.ParseAll(); // логика сохранения в базу работает в режиме обновления // заголовки ответов var answerTitles = questRows .SelectMany(x => x.Answers) .Select(GetTitle) .Distinct(); // устанавливает ответы SetAnswers(answerTitles); // заголовки вопросов var questTitles = questRows .Select(x => GetTitle(x.QuestTitle)) .Distinct(); // устанавливает вопросы SetQuests(questTitles); // сгруппированные вопросы по заголовку теста var excelTests = questRows.GroupBy(row => row.TestTitle).ToArray(); // заголовки тестов var testTitles = excelTests.Select(x => x.Key).Distinct(); SetTests(testTitles); // текущие тесты var currentTests = _testDao .GetByTitles(testTitles) .ToDictionary(x => x.Title); // текущие ответы var currentAnswers = _answerDao .GetByTitles(answerTitles) .ToDictionary(x => x.Title); // текущие вопросы var currentQuests = _questionDao .GetByTitles(questTitles) .ToDictionary(x => x.Title); // установка привязок SetBindings(currentTests, currentAnswers, currentQuests, excelTests); }