/
AstroJohn
/
MailRobot
Обзор
Документация
Войти
/
AstroJohn
/
MailRobot
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
CsParser/EdiParserStandard.cs
106 строк
4 KB
AstroJohn
error
22 фев 2026, 12:22
22 фев 2026, 12:22
cd3ce5a
Код
Авторство
О чём код?
using LogProcessingModels.Parsing; namespace CsParser { /// <summary> /// Класс EDI-парсинга отчетов за стандартные VHF-тесты /// </summary> /// <remarks></remarks> public class EdiParserStandard : EdiParser { public override bool CheckOperatorsTagForRussianCallsigns => true; public override bool FailedIfNotCheckedQsoTimeDuringContest => false; public override bool IsSerialNrAllowedEmpty => false; /// <summary> /// Проверка QSO в зависимости от контеста /// </summary> protected override void CheckQso(ParsedQSO parsedQso, ParsedLog parsedLog, int lineNumber) { parsedQso.SentNr = $"{parsedQso.SentNr} {ParsedLog.GridLocator?.ToUpper() ?? string.Empty}"; parsedQso.RcvdNr = $"{parsedQso.RcvdNr} {parsedQso.RcvdLocator?.ToUpper() ?? string.Empty}"; parsedQso.Band = parsedLog.Band; } /// <summary> /// Получение и проверка категории в зависимости от контеста /// </summary> protected override bool ParseCategory(out string category) { category = string.Empty; if (HeaderFields != null) { GetHeaderValue(HeaderFields, "PSect", 1, out category); ParsedLog.Category = category; } if ( InStr(category, "A2") >= 0 || InStr(category, "B2") >= 0 || InStr(category, "А2") >= 0 || InStr(category, "В2") >= 0 || InStr(category, "144") >= 0 ) category = "144"; else if ( InStr(category, "A0") >= 0 || InStr(category, "B0") >= 0 || InStr(category, "А0") >= 0 || InStr(category, "В0") >= 0 || InStr(category, "MULTI OP") >= 0 || InStr(category, "MULTI-OP") >= 0 || InStr(category, "MO") >= 0 || InStr(category, "MOMB") >= 0 ) category = "MULTI-OP"; else if ( InStr(category, "A1") >= 0 || InStr(category, "B1") >= 0 || InStr(category, "А1") >= 0 || InStr(category, "В1") >= 0 || InStr(category, "SINGLE OP") >= 0 || InStr(category, "SINGLE-OP") >= 0 || category == "SO" || category == "SOMB" ) category = "SINGLE-OP"; /* // Такой подгруппы больше нет else if ( InStr(category, "LIMITED") >= 0 || InStr(category, "A3") >= 0 || InStr(category, "B3") >= 0 ) category = "SINGLE-OP LIMITED"; */ else if (InStr(category, "CHECK") >= 0) category = "CHECKLOG"; else category = "SINGLE-OP"; return true; } /// <summary> /// Получение и проверка категории в зависимости от контеста /// </summary> protected override void GetCategory() { if (ParseCategory(out var category)) { ParsedLog.Category = category; ParsedLog.ParseResult.AddInfo("Your category is detected as: " + ParsedLog.Category); ParsedLog.ParseResult.AddInfoRu("Определена ваша заявленная подгруппа: " + ParsedLog.Category); } } } }