private void ParseLineForKdtt(string callType, double totalSeconds, ref SpRecordFileInformation.DayInfo dayInfo) { callType = callType.ToLower(); if (callType.Contains("непринятый")) { dayInfo.TotalMissed++; } else if (callType.Contains("принятый")) { dayInfo.TotalIncoming++; if (totalSeconds <= 5) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf5sec); } else if (totalSeconds > 5 && totalSeconds <= 10) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf10sec); } else if (totalSeconds > 10 && totalSeconds <= 15) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf15sec); } else if (totalSeconds > 15 && totalSeconds <= 20) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf20sec); } else if (totalSeconds > 20 && totalSeconds <= 25) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf25sec); } else if (totalSeconds > 25 && totalSeconds <= 30) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf30sec); } } }
private void AnalyseFileContentAndAddToDictionary(string fileName, List <List <string> > fileContent) { if (filesInfo.ContainsKey(fileName)) { UpdateTextBox("Файл уже проанализирован ранее"); return; } if (fileContent.Count < 7) { UpdateTextBox("Файл не соответствует формату SpRecord" + "(должно быть минимум 7 строк, в файле: " + fileContent.Count, error: true); return; } List <string> lastRow = fileContent.Last(); if (lastRow.Count < 1) { UpdateTextBox("Не соответсвует формат последней строки, " + "должен быть хотя бы 1 столбец", error: true); } string lastRowText = lastRow[0]; if (!lastRowText.StartsWith("Всего записей:")) { UpdateTextBox("В последней строке отсутствует информация об общем " + "количестве записей"); return; } SpRecordFileInformation fileInformation = ParseLastRow(lastRowText); for (int row = 0; row < 5; row++) { if (row >= fileContent.Count) { break; } List <string> line = fileContent[row]; if (line.Count == 1) { string text = line[0]; if (text.StartsWith("Выбраны записи")) { ParseLineAccountingPeriod(text, ref fileInformation); } if (text.StartsWith("Рабочая станция")) { ParseLineWorkstation(text, ref fileInformation); } if (text.StartsWith("Отчет создан")) { ParseLineCreationDate(text, ref fileInformation); } } } for (int row = fileContent.Count - 2; row >= 0; row--) { List <string> line = fileContent[row]; if (line.Count < 8 && line.Count != 1) { UpdateTextBox("Размер строки " + (row + 1) + " не совпадает с форматом SpRecord"); continue; } if (line.Count >= 8) { if (line[0].Equals("Название канала")) { continue; } try { DateTime dateTime = DateTime.Parse(line[1]); dateTime = dateTime.AddMilliseconds(dateTime.TimeOfDay.TotalMilliseconds * -1); if (!fileInformation.DaysInfo.ContainsKey(dateTime)) { fileInformation.DaysInfo.Add(dateTime, new SpRecordFileInformation.DayInfo()); } SpRecordFileInformation.DayInfo dayInfo = fileInformation.DaysInfo[dateTime]; TimeSpan duration = ParseTimeSpan(line[2]); double totalSeconds = duration.TotalSeconds; string callType = line[3]; string phoneNumbers = line[4]; if (fileInformation.WorkstationName.ToLower().Contains("splp")) { ParseLineForSplp(phoneNumbers, totalSeconds, ref dayInfo); } else if (fileInformation.WorkstationName.ToLower().Contains("kdtt")) { ParseLineForKdtt(callType, totalSeconds, ref dayInfo); } } catch (Exception e) { Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace); } //TimeSpan duration = ParseTimeSpan(line[2]); //string type = line[3]; //if (type.Contains("Принятый")) { // fileInformation.CallsAccepted++; // fileInformation.TimeAccepted = fileInformation.TimeAccepted.Add(duration); //} else if (type.Contains("Набранный")) { // fileInformation.CallsDialed++; // fileInformation.TimeDialed = fileInformation.TimeDialed.Add(duration); //} else if (type.Contains("Непринятый")) { // if (line.Count > 9) { // fileInformation.CallsMissedAccidentialWrongValues++; // fileInformation.TimeAccidential = fileInformation.TimeAccidential.Add(duration); // continue; // } // if (duration.TotalSeconds <= 5) { // fileInformation.CallsMissedAccidentialShort++; // fileInformation.TimeAccidential = fileInformation.TimeAccidential.Add(duration); // fileContent[row].Add("Ошибочный, длительность меньше 6 секунд"); // } else { // if (IsAnalysingAMissedCallSucceed(row, ref fileInformation, ref fileContent)) { // fileInformation.CallsMissed++; // fileInformation.TimeMissed = fileInformation.TimeMissed.Add(duration); // } else { // fileInformation.CallsMissedAccidentialWrongValues++; // fileInformation.TimeAccidential = fileInformation.TimeAccidential.Add(duration); // } // } //} else { // UpdateTextBox("Неизвестный тип звонка: " + type); //} } } fileInformation.FileContent = fileContent; filesInfo.Add(fileName, fileInformation); }
private void ParseLineForSplp(string phoneNumbers, double totalSeconds, ref SpRecordFileInformation.DayInfo dayInfo) { if (phoneNumbers.EndsWith("-> 601") || phoneNumbers.EndsWith("-> 611")) { dayInfo.TotalIncoming++; if (totalSeconds <= 5) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf5sec); } else if (totalSeconds > 5 && totalSeconds <= 10) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf10sec); } else if (totalSeconds > 10 && totalSeconds <= 15) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf15sec); } else if (totalSeconds > 15 && totalSeconds <= 20) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf20sec); } else if (totalSeconds > 20 && totalSeconds <= 25) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf25sec); } else if (totalSeconds > 25 && totalSeconds <= 30) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostSelf30sec); } } else if (phoneNumbers.EndsWith("-> 30400")) { dayInfo.TotalRedirected++; if (totalSeconds <= 5) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostRedirected5sec); } else if (totalSeconds > 5 && totalSeconds <= 10) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostRedirected10sec); } else if (totalSeconds > 10 && totalSeconds <= 15) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostRedirected15sec); } else if (totalSeconds > 15 && totalSeconds <= 20) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostRedirected20sec); } else if (totalSeconds > 20 && totalSeconds <= 25) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostRedirected25sec); } else if (totalSeconds > 25 && totalSeconds <= 30) { dayInfo.IncrementMissedCallCount( SpRecordFileInformation.DayInfo.MissedCallType.ConditionalyLostRedirected30sec); } } }