public static Qso[] ReadAdif(string adifContent, Station station = null) { using (var reader = new AdifReader(adifContent)) { return(Convert(reader.GetAdifRows()?.ToArray(), station)); } }
public static void AssemblyInit(TestContext testContext) { var builder = new DbContextOptionsBuilder <QSOColletorContext>().UseInMemoryDatabase("QSOCollector"); _loggerFactory = new LoggerFactory(); var context = new QSOColletorContext(builder.Options, _loggerFactory); var stations = Enumerable.Range(1, 3) .Select(i => new Station() { StationId = i, Callsign = "SQ7MRU", Locator = "JO91vr", Operator = "Pawel", QTH = "Koluszki", Name = $"Koluszki #{i}" }); context.Station.AddRange(stations); context.SaveChanges(); string adif = File.ReadAllText("Sample.ADIF"); using (AdifReader ar = new AdifReader(adif)) { foreach (Station s in context.Station) { foreach (AdifRow row in ar.GetAdifRows()) { context.Log.Add(Converters.Convert(row, s)); context.SaveChanges(); } } } _context = context; }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogDebug($"{nameof(EqslDownloadService)} is starting."); stoppingToken.Register(() => _logger.LogDebug($"{nameof(EqslDownloadService)} background task is stopping.")); while (!stoppingToken.IsCancellationRequested) { _logger.LogDebug($"{nameof(EqslDownloadService)} task doing background work."); using (IServiceScope scope = _provider.CreateScope()) { using (var context = scope.ServiceProvider.GetRequiredService <QSOColletorContext>()) { foreach (Station station in context.Station) { try { var d = new Downloader(station.Callsign, _config.Password); var adif = d.GetSingleAdif(station.Callsign, _config.Password, station.HamID); using (AdifReader ar = new AdifReader(adif)) { foreach (AdifRow r in ar.GetAdifRows()) { var founded = context.SearchDuplicates(station, r, 10).Where(Q => (Q.EQSL_QSL_RCVD != "Y" || string.IsNullOrEmpty(Q.EQSL_QSL_RCVD))).ToArray(); //update QSOs foreach (Qso qso in founded) { qso.EQSL_QSL_RCVD = "Y"; qso.EQSL_QSLRDATE = DateTime.UtcNow.ToString("yyyyMMdd"); if (string.IsNullOrEmpty(qso.SUBMODE) && !string.IsNullOrEmpty(r.SUBMODE)) { qso.SUBMODE = r.SUBMODE; } if (string.IsNullOrEmpty(qso.GRIDSQUARE) && !string.IsNullOrEmpty(r.GRIDSQUARE)) { qso.GRIDSQUARE = r.GRIDSQUARE; } context.SaveChanges(); _logger.LogInformation($"{qso.CALL},{qso.QSO_DATE},{qso.MODE},{qso.BAND} has been updated from eQSL.cc"); } } } } catch (Exception exc) { _logger.LogError(exc.Message); } } } } await Task.Delay(new TimeSpan(_config.JobInterval, 0, 0)); } _logger.LogDebug($"{nameof(EqslDownloadService)} background task is stopping."); }