public List <STOP> GetDataFromSTOPDbf(string filename) { DBFProcessor pr = new DBFProcessor(); List <STOP> result = new List <STOP>(); try { DataTable table = DBFProcessor.GetDataTable(filename, string.Format("select * from \"{0}\" where Q=3386;", filename)); foreach (DataRow row in table.Rows) { STOP data = new STOP(); data.SCENARIO = (string)(row["SCENARIO"]); data.S_CARD = (string)(row["S_CARD"]); data.N_CARD = ((decimal)row["N_CARD"]).ToString(); data.ENP = (string)row["ENP"]; data.VSN = ((string)row["VSN"]).Trim(); data.QZ = (long?)((decimal)row["QZ"]); data.DATE_END = (DateTime?)row["DATE_END"]; data.DATE_ARC = (DateTime?)row["DATE_ARC"]; data.IST = (string)row["IST"]; result.Add(data); } } finally { File.Delete(filename); } return(result); }
public void Test_STOP() { var expectedState = new CpuState(); expectedState.StopMode = true; var actualState = new CpuState(); var memoryMock = new Mock <IRandomAccessMemory>(); var instruction = new STOP(); instruction.Initialize(); //act while (!instruction.IsFetchNecessary()) { instruction.ExecuteCycle(actualState, memoryMock.Object); } TestHelper.AssertCpuState(expectedState, actualState); memoryMock.Verify(m => m.WriteByte(It.IsAny <ushort>(), It.IsAny <byte>()), Times.Never); }
/// <summary> /// Восстановить музыку /// </summary> /// <param name="user"></param> /// <returns></returns> public static bool Restore(User user, CancellationTokenSource cancellationToken) { if (!CanRestore("восстановить музыку")) { return(false); } const string header = "Восстановление музыки"; PrintConsole.Header(header); string customPath = General.ChoisePath(header); if (customPath != null && customPath.Length == 0) { return(false); } var data = JsonConvert.DeserializeObject <Backup.Music.Track[]>(Read(user.GetId().ToString(), "Music", customPath)); int error = 0; cancellationToken = new CancellationTokenSource(); STOP = Task.Run(() => General.Cancel(cancellationToken), cancellationToken.Token); int totalRestore = 0; try { for (totalRestore = 0; totalRestore < data.Length; totalRestore++) { cancellationToken.Token.ThrowIfCancellationRequested(); PrintConsole.Header(header, "Для остановки нажмите [SPACE]\n"); PrintConsole.Print($"Восстановлено {totalRestore} из {data.Length}"); PrintConsole.Print($"Не удалось восстановить {error}"); try { user.GetApi().Audio.Add(data[totalRestore].id.Value, data[totalRestore].owner_id.Value); } catch (Exception ex) { error++; } } return(true); } catch (Exception ex) { STOP.Dispose(); if (cts.Token.CanBeCanceled) { PrintConsole.Header(header, $"Восстановлено {totalRestore} треков\nНе удалось восстановить {error}"); BackLine.Continue(); return(true); } else { PrintConsole.Header(header); PrintConsole.Print(ex.Message, MenuType.Warning); BackLine.Continue(); return(false); } } }
/// <summary> /// Восстановить список групп /// </summary> /// <param name="user"></param> /// <returns></returns> public static bool Restore(User user, CancellationTokenSource cancellationToken) { if (!CanRestore("восстановить список сообществ")) { return(false); } const string header = "Восстановление сообществ"; PrintConsole.Header(header); //string userid = ChoiseBackup(MainData.Profiles.GetUser(0).API); string customPath = General.ChoisePath(header); if (customPath != null && customPath.Length == 0) { return(false); } Backup.Groups.Data[] groups = JsonConvert.DeserializeObject <Backup.Groups.Data[]>(Read(user.GetId().ToString(), "Groups", customPath)); cancellationToken = new CancellationTokenSource(); STOP = Task.Run(() => General.Cancel(cancellationToken), cancellationToken.Token); try { for (int i = 0; i < groups.Length; i++) { cancellationToken.Token.ThrowIfCancellationRequested(); PrintConsole.Header("Восстановление сообществ", "Для остановки нажмите [SPACE]\n"); PrintConsole.Print($"Восстановлено {i} из {groups.Length} сообществ.", MenuType.InfoHeader); try { user.GetApi().Groups.Join(groups[i].id); } catch (Exception ex) { } BackLine.Clear(); } PrintConsole.Print($"Восстановлено {groups.Length} сообществ."); BackLine.Continue(); return(true); } catch (Exception ex) { STOP.Dispose(); if (cts.Token.CanBeCanceled) { PrintConsole.Header(header, $"Восстановлено {groups.Length} сообществ."); BackLine.Continue(); return(true); } else { PrintConsole.Header(header); PrintConsole.Print(ex.Message, MenuType.Warning); BackLine.Continue(); return(false); } } }
public List <STOP> GetDataFromSTOPdbf(string dbfFilePath, Nomernik.History nompHistory) { List <STOP> dataFromDBF = NomernikDao.Instance.GetDataFromSTOPDbf(dbfFilePath); //добавляем нули, т.к. //в нашей базе номер старого полиса хранится с нулями с начала строки, т.е. 0000000001 foreach (var item in dataFromDBF) { if (!string.IsNullOrEmpty(item.N_CARD)) { if (item.N_CARD.ToString().Length > 0 && item.N_CARD.ToString().Length < 10) { while (item.N_CARD.ToString().Length != 10) { item.N_CARD = "0" + item.N_CARD; } } } } List <STOP> dataFromDB = new List <STOP>(dataFromDBF.Count); dataFromDB = NomernikDao.Instance.STOP_Find(dataFromDBF); int j = 0; foreach (var elementDBF in dataFromDBF) { //группируем по ENP и по N_CARD List <STOP> group = new List <STOP>(); group.AddRange(dataFromDB.FindAll(a => a.ENP == elementDBF.ENP)); group.AddRange(dataFromDB.FindAll(a => a.N_CARD == elementDBF.N_CARD)); //ищем в группе ID !=0 Это значит, что запись уже есть в истории номерников и выбираем последнюю запись из этой подгруппы STOP lastInNOMP = group.FindAll(a => a.Id != 0).OrderBy(b => b.Id).LastOrDefault(); if (lastInNOMP != null) { //обрабатываем в результаты 4.3 - данные не изменились и 4.4 - данные изменились //флаг -> были ли изменения? По умолчанию - нет bool flagChange = false; if (elementDBF.SCENARIO != lastInNOMP.SCENARIO) { flagChange = true; } if (elementDBF.S_CARD != lastInNOMP.S_CARD) { flagChange = true; } if (elementDBF.N_CARD != lastInNOMP.N_CARD) { flagChange = true; } if (elementDBF.VSN != lastInNOMP.VSN) { flagChange = true; } if (elementDBF.QZ != lastInNOMP.QZ) { flagChange = true; } if (elementDBF.DATE_END != lastInNOMP.DATE_END) { flagChange = true; } if (elementDBF.DATE_ARC != lastInNOMP.DATE_ARC) { flagChange = true; } if (elementDBF.IST != lastInNOMP.IST) { flagChange = true; } if (flagChange) { elementDBF.Status = 4; } else { elementDBF.Status = 3; } elementDBF.ClientID = lastInNOMP.ClientID; } else { if (group.Count > 0) { if (group.Count == 1) { //клиент найден, уникален, записей в таблицу STOP еще не было -> 4.5 elementDBF.Status = 5; elementDBF.ClientID = group.FirstOrDefault().ClientID; } if (group.Count > 1) { //проверяем на уникальность int countClientId = 1; long?ClientId = group.FirstOrDefault().ClientID; foreach (var elem in group) { if (elem.ClientID != ClientId) { countClientId++; } } //ClientId уникален? if (countClientId == 1) { STOP temp = group.OrderBy(b => b.DATE_ARC).LastOrDefault(); //уникален -> 4.5 elementDBF.Status = 5; elementDBF.ClientID = temp.ClientID; } else { //в результаты говорим, что найденный у нас клиент не уникален 4.2 elementDBF.Status = 2; //пытаемся понять: может все-таки это один клиент несмотря на то, что у него разные ClientID //сравниваем фио и дату рождения List <Nomernik.ClientShotInfo> listClient = NomernikDao.Instance.ClientsShotInfo_Get(group.Select(a => (long)a.ClientID).Distinct()); elementDBF.Comment = elementDBF.Comment + string.Format("Найдены {0} клиента(ов). ", listClient.Count()); elementDBF.Comment = elementDBF.Comment + "ClientID = "; bool flag = true; string firstname = listClient.FirstOrDefault().Firstname; string secondname = listClient.FirstOrDefault().Secondname; string lastname = listClient.FirstOrDefault().Lastname; DateTime?birthday = listClient.FirstOrDefault().Birthday; foreach (var el in listClient) { elementDBF.Comment = elementDBF.Comment + string.Format("{0}, ", el.ClientID); if (el.Firstname != firstname) { flag = false; } if (el.Secondname != secondname) { flag = false; } if (el.Lastname != lastname) { flag = false; } if (el.Birthday != birthday) { flag = false; } firstname = el.Firstname; secondname = el.Secondname; lastname = el.Lastname; birthday = el.Birthday; } elementDBF.Comment = elementDBF.Comment.TrimEnd(',', ' '); elementDBF.Comment = elementDBF.Comment + ". "; if (flag) { elementDBF.Comment = elementDBF.Comment + "Есть предположение, что это один клиент. ФИО и дата рождения совпадают."; } else { elementDBF.Comment = elementDBF.Comment + "Это разные клиенты. ФИО и/или дата рождения не совпадают."; } } } } else { //в результаты - клиент в системе не найден 4.1 elementDBF.Status = 1; } } foreach (var elem in group) { dataFromDB.Remove(elem); } j++; } //записать в БД надо только со статусом 4 и 5 var items = dataFromDBF.Where(i => (i.Status == 4 || i.Status == 5)); NomernikDao.Instance.STOP_Save(items, nompHistory); return(dataFromDBF); }