/* * Необходимо реализовать программу, которая будет делать запрос двух информационных справочников, разбирать их и записывать в базу. * * Первым справочником является набор кодов ошибок и их описание. Адрес для запроса - https://pastebin.com/raw/JK7WiMax * Тип запроса – GET. Формат ответа – "text/plain; charset=utf-8". * Пример ответа: * <ErrorCodes> * <ErrorCode code="-1" text="Оператор временно недоступен"/> * <ErrorCode code="0" text="Ошибки нет"/> * </ErrorCodes> * * Code - код ошибки; * Text - описание кода ошибки; * * Для обоих справочников нужно создать в БД таблицы. Запись в таблицу должна производиться через * хранимую процедуру. В процедуре должна быть реализована проверка на существование записей (любым * возможным способом). Если такая запись существует, то добавлять ее не нужно. */ public async Task Test1() { var workWeb = new WorkWeb(); var list = await workWeb.GetErrorCodesAsync(); var bataBase = new DataBase(); foreach (var errorCode in list.ListErrorCodes) { bataBase.InsertErrorCode(errorCode); } }
/* * Вторым справочником является список категорий и их детали. Адрес для запроса - https://pastebin.com/raw/0RpLbQ19 * Тип запроса – GET. Формат ответа – "text/plain; charset=utf-8". * Пример ответа: * <Categories> * <category id="100" name="Автоматический выбор оператора" parent="0" image="main_main_ico.gif"/> * <category id="101" name="Мобильная связь" parent="0" image="main_mobile_ico.gif"/> * </Categories> * * ID - уникальный идентификатор категории; * Name - название категории; * Parent - идентификатор родительской категории. Если значение равно 0 - значит родителя - нет; * Image - лого категории; * * Для обоих справочников нужно создать в БД таблицы. Запись в таблицу должна производиться через * хранимую процедуру. В процедуре должна быть реализована проверка на существование записей (любым * возможным способом). Если такая запись существует, то добавлять ее не нужно. */ public async Task Test2() { var workWeb = new WorkWeb(); var list = await workWeb.GetCategoriesAsync(); var bataBase = new DataBase(); foreach (var category in list.ListCategories) { bataBase.InsertCategory(category); } }
/* * Будет вторым плюсом, если будет выполнено следующее: * * Вывести пользователю отсортированные по имени категории сгруппированные по родительской категории. */ public async Task Test4() { var workWeb = new WorkWeb(); var list = await workWeb.GetCategoriesAsync(); var groups = list.ListCategories.GroupBy(x => x.Parent); foreach (var group in groups) { if (group.Key != 0) { var temp = list.ListCategories.First(x => x.Id == group.Key); Console.WriteLine($"{temp.Name}:"); foreach (var category in group) { if (category.Name != temp.Name) { Console.WriteLine($" {category.Name}"); } } } } }