Exemplo n.º 1
0
 public static Qso[] ReadAdif(string adifContent, Station station = null)
 {
     using (var reader = new AdifReader(adifContent))
     {
         return(Convert(reader.GetAdifRows()?.ToArray(), station));
     }
 }
Exemplo n.º 2
0
        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.");
        }