Ejemplo n.º 1
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            CallSign = await _context.CallSigns.FirstOrDefaultAsync(m => m.ID == id);

            if (CallSign == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Ejemplo n.º 2
0
        // GET: CallSigns/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CallSign callSign = await db.CallSigns.FindAsync(id);

            if (callSign == null)
            {
                return(HttpNotFound());
            }
            ViewBag.CategoryID = new SelectList(db.Categories, "ID", "ID", callSign.CategoryID);
            return(View(callSign));
        }
Ejemplo n.º 3
0
 /// <summary>
 ///     To the station item.
 /// </summary>
 /// <param name="res">The resource.</param>
 /// <returns>StationItem.</returns>
 public static StationItem ToStationItem(this CallSign res)
 {
     return(new StationItem
     {
         Id = res.user,
         Address1 = res.addr1,
         Address2 = res.addr2,
         AreaCode = res.AreaCode,
         Bio = res.bio,
         Born = res.born,
         CallId = res.call,
         Class = res.Class,
         Codes = res.codes,
         Country = res.country,
         County = res.county,
         CqZone = res.cqzone,
         DST = res.DST,
         EQsl = res.eqsl,
         EfDate = res.efdate,
         Email = res.email,
         ExpDate = res.expdate,
         Fips = res.fips,
         FirstName = res.fname,
         GmtOffset = res.GMTOffset,
         Grid = res.grid,
         ImageUrl = res.image,
         Iota = res.iota,
         ItuZone = res.ituzone,
         Land = res.land,
         LastName = res.name,
         Latitude = res.lat,
         LocRef = res.locref,
         Longitude = res.lon,
         Lotw = res.lotw,
         MQsl = res.mqsl,
         ModDate = res.moddate,
         Msa = res.MSA,
         PCall = res.p_call,
         QslManager = res.qslmgr,
         State = res.state,
         TimeZone = res.TimeZone,
         Trustee = res.trustee,
         UViews = res.u_views,
         User = res.user,
         Url = res.url,
         Zip = res.zip
     });
 }
Ejemplo n.º 4
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            CallSign = await _context.CallSigns.FindAsync(id);

            if (CallSign != null)
            {
                _context.CallSigns.Remove(CallSign);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Ejemplo n.º 5
0
 public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = Identifier.GetHashCode();
         hashCode = (hashCode * 397) ^ (Name != null ? Name.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Country != null ? Country.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (FIPSCountryId != null ? FIPSCountryId.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (State != null ? State.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (CallSign != null ? CallSign.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Latitude.GetHashCode();
         hashCode = (hashCode * 397) ^ Longitude.GetHashCode();
         hashCode = (hashCode * 397) ^ Elevation.GetHashCode();
         hashCode = (hashCode * 397) ^ Begin.GetHashCode();
         hashCode = (hashCode * 397) ^ End.GetHashCode();
         return(hashCode);
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        ///     Gets the station information.
        /// </summary>
        /// <param name="callId">The call identifier.</param>
        /// <returns>StationItem.</returns>
        public StationItem GetStationInfo(string callId)
        {
            try
            {
                callId = callId.ToUpper();
                StationItem si = null;
                logger.Info("Saving {0}.", callId);
                CallSign res = QrzDotComPortal
                               .Proxy
                               .GetCallSign(callId);
                si = res != null?res.ToStationItem() : CreateUnknownStationItem(callId);

                return(Provider <StationItem> .Save(si));
            }
            catch (Exception exception)
            {
                logger.Error(exception.GetCombinedMessages());
                return(null);
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 ///     Gets the call sign.
 /// </summary>
 /// <param name="callSign">The call sign.</param>
 /// <returns>CallSign.</returns>
 public CallSign GetCallSign(string callSign)
 {
     try
     {
         CallSign res = QrzDotCom
                        .Proxy
                        .GetCallSign(callSign);
         //var res = QrzDotComPortal
         //    .Proxy
         //    .GetCallSign(callSign);
         if (res != null)
         {
             Console.WriteLine(res.call);
         }
         return(res);
     }
     catch (Exception exception)
     {
         Assert.Fail(exception.Message);
     }
     return(null);
 }
Ejemplo n.º 8
0
        public void Try_GetInvalidCallSign()
        {
            CallSign res = GetCallSign("XXXXX");

            Assert.IsNull(res);
        }
Ejemplo n.º 9
0
 public override int GetHashCode()
 {
     return(CallSign.GetHashCode());
 }
Ejemplo n.º 10
0
        static void UpdateCallTimes()
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json");
            var Configuration = configBuilder.Build();

            Console.WriteLine("Starting Time Parsing");
            Console.WriteLine("Reading DB Config");
            var builder          = new DbContextOptionsBuilder <AppDbContext>();
            var connectionString = Configuration.GetConnectionString("DefaultConnection");

            builder.UseSqlite(connectionString);

            var clearDbConfig = Configuration["deleteDb"];
            var clearDb       = false;

            bool.TryParse(clearDbConfig, out clearDb);


            using (var db = new AppDbContext(builder.Options))
            {
                if (clearDb)
                {
                    foreach (var trams in db.VoiceTransmissions)
                    {
                        db.VoiceTransmissions.Remove(trams);
                    }
                    db.SaveChanges();
                }

                IQueryable <Server> Servers;
                if (ServerId == 0)
                {
                    Servers = db.Servers;
                }
                else
                {
                    Servers = db.Servers.Where(x => x.ServerId == ServerId);
                }
                foreach (var server in Servers)
                {
                    Console.WriteLine("Processing: " + server.ServerSearchString);

                    var fileLines = new string[0];
                    if (ReadAllLines == true)
                    {
                        fileLines = System.IO.File.ReadAllLines(server.LogFileLocation);
                    }
                    else
                    {
                        fileLines = System.IO.File.ReadLines(server.LogFileLocation).Reverse().Take(1500).ToArray();
                    }

                    for (int i = 0; i < fileLines.Length - 1; i++)
                    {
                        var line = fileLines[i];
                        if (line.Contains("Voice Transmission Start"))
                        {
                            var line2 = "";
                            for (int i2 = 1; i2 < 11; i2++)
                            {
                                if (fileLines[i + i2].Contains("Voice Transmission End"))
                                {
                                    line2 = fileLines[i + i2];
                                    break;
                                }
                            }

                            if (line2.Contains("Voice Transmission End"))
                            {
                                var transmission = new VoiceTransmission();
                                var strStartDate = line.Split(',')[0].Replace("INFO ", "");
                                var startDate    = DateTime.Now;
                                var strEndDate   = line2.Split(',')[0].Replace("INFO ", "");
                                var endDate      = DateTime.Now;
                                DateTime.TryParse(strStartDate, out startDate);
                                DateTime.TryParse(strEndDate, out endDate);

                                var strCallSign   = line.Substring(line.IndexOf("from")).Replace("from", "").Trim();
                                var index1        = line.IndexOf("(");
                                var index2        = line.IndexOf(")");
                                var talkGroup     = line.Substring(index1 + 1, index2 - index1 - 1).Trim();
                                var lostRateIndex = line2.LastIndexOf(":");
                                var strLossRate   = line2.Substring(lostRateIndex + 1, 5).Trim();
                                var lossRate      = new double();
                                double.TryParse(strLossRate, out lossRate);


                                var callSign = db.CallSigns.Where(x => x.Text.ToUpper() == strCallSign.ToUpper().Trim()).FirstOrDefault();
                                if (callSign == null)
                                {
                                    callSign      = new CallSign();
                                    callSign.Text = strCallSign.ToUpper().Trim();
                                    db.CallSigns.Add(callSign);
                                    db.SaveChanges();
                                }

                                var tg = db.TalkGroups.Where(x => x.Ts1Id == talkGroup.Trim() || x.Ts2Id == talkGroup.Trim());
                                if (tg.Count() > 0)
                                {
                                    talkGroup = tg.FirstOrDefault().Name + " (" + talkGroup.Trim() + ")";
                                }

                                if (db.VoiceTransmissions.Where(x => x.CallSign == callSign &&
                                                                x.TransmissionDateTimeStart == startDate &&
                                                                x.TransmissionDateTimeEnd == endDate &&
                                                                x.TalkGroup == talkGroup &&
                                                                x.LossRate == lossRate &&
                                                                x.Server == server).Count() == 0)
                                {
                                    transmission.CallSign = callSign;
                                    transmission.TransmissionDateTimeStart = startDate;
                                    transmission.TransmissionDateTimeEnd   = endDate;
                                    transmission.TalkGroup = talkGroup;
                                    transmission.LossRate  = lossRate;
                                    transmission.Server    = server;
                                    db.Add(transmission);
                                }
                            }
                        }
                    }
                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 11
0
        static void ParseLogs()
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json");
            var Configuration = configBuilder.Build();

            Console.WriteLine("Starting Parsing");
            Console.WriteLine("Reading DB Config");
            var builder          = new DbContextOptionsBuilder <AppDbContext>();
            var connectionString = Configuration.GetConnectionString("DefaultConnection");

            builder.UseSqlite(connectionString);

            var clearDbConfig = Configuration["deleteDb"];
            var clearDb       = false;

            bool.TryParse(clearDbConfig, out clearDb);
            using (var db = new AppDbContext(builder.Options))
            {
                if (clearDb)
                {
                    CleanDb();
                }
                IQueryable <Server> Servers;
                if (ServerId == 0)
                {
                    Servers = db.Servers;
                }
                else
                {
                    Servers = db.Servers.Where(x => x.ServerId == ServerId);
                }
                foreach (var server in Servers)
                {
                    Console.WriteLine("Processing: " + server.ServerSearchString);
                    Console.WriteLine("File: " + server.LogFileLocation);
                    var lines = new string[0];
                    if (ReadAllLines == true)
                    {
                        Console.WriteLine("Reading All Lines");
                        lines = System.IO.File.ReadAllLines(server.LogFileLocation);
                    }
                    else
                    {
                        Console.WriteLine("Reading Last 500 Lines");
                        lines = System.IO.File.ReadLines(server.LogFileLocation).Reverse().Take(500).ToArray();
                    }
                    Console.WriteLine(lines.Count().ToString() + " Lines Read");
                    WriteDebug(server.ServerSearchString);
                    foreach (var line in lines)
                    {
                        if (line.Contains(server.ServerSearchString))
                        {
                            WriteDebug(line);
                            if (line.Contains("configuration"))
                            {
                                WriteDebug(line);
                                //INFO 2018-01-16 11:45:28,110 (Suzy-East-Spokane) Client WA7BFN   (3153439) has sent repeater configuration
                                var strDate        = line.Split(',')[0].Replace("INFO ", "");
                                var date           = DateTime.Now;
                                var partialLine    = line.Split("(")[1];
                                var callStartIndex = partialLine.IndexOf("Client");
                                var callSignString = partialLine.Substring(callStartIndex).Replace("Client", "").Trim();   //Regex.Match(line, @"(?<=\bClient\s+)\p{L}+\p{N}+\p{L}+").Value;

                                if (callSignString.Trim().Length > 0)
                                {
                                    var radioIdStartIndex = line.IndexOf("Client");
                                    var radioIdEndIndex   = line.LastIndexOf(")");
                                    var radioId           = line.Substring(radioIdStartIndex, radioIdEndIndex - radioIdStartIndex).Replace(callSignString, "").Replace("(", "").Replace(callSignString, "").Replace("Client", "").Trim();
                                    DateTime.TryParse(strDate, out date);
                                    if (db.LogEntries.Where(x => x.Entry == line.Trim()).FirstOrDefault() == null)
                                    {
                                        var callSignId = db.CallSigns.Where(x => x.Text.ToUpper() == callSignString.ToUpper().Trim()).Select(x => x.CallSignId).FirstOrDefault();
                                        if (callSignId == 0)
                                        {
                                            Console.WriteLine("Adding Call Sign: " + callSignString.ToUpper().Trim());
                                            var callSign = new CallSign();
                                            callSign.Text = callSignString.ToUpper().Trim();
                                            db.CallSigns.Add(callSign);
                                            db.SaveChanges();
                                            callSignId = callSign.CallSignId;
                                        }
                                        var log = new LogEntry();
                                        log.Entry         = line.Trim();
                                        log.EntryDateTime = date;
                                        log.CallSignId    = callSignId;
                                        log.ServerId      = server.ServerId;
                                        log.LogEntryType  = LogEntryType.RepeaterConfigStart;
                                        db.LogEntries.Add(log);

                                        if (radioId != "1" && db.RadioIdLogs.Where(x => x.RadioId == radioId && x.CallSignId == callSignId).Count() == 0)
                                        {
                                            Console.WriteLine("Adding Radio ID: " + radioId + " For Call Sign: " + callSignString + " On Server: " + server.DisplayName);
                                            var radioIdLog = new RadioIdLog();
                                            radioIdLog.CallSignId = callSignId;
                                            radioIdLog.ServerId   = server.ServerId;
                                            radioIdLog.RadioId    = radioId;
                                            db.RadioIdLogs.Add(radioIdLog);
                                            db.SaveChanges();
                                        }
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("ERROR: Call Sign not found");
                                    Console.WriteLine(line);
                                }
                            }
                            else if (line.ToLower().Contains("client is closing down"))
                            {
                                WriteDebug(line);
                                //INFO 2018-01-16 11:45:11,387 (Suzy-East-Spokane) Client is closing down: WA7BFN   (3153439)
                                var strDate = line.Split(',')[0].Replace("INFO ", "");
                                var date    = DateTime.MinValue;
                                DateTime.TryParse(strDate, out date);
                                if (db.LogEntries.Where(x => x.Entry == line.Trim()).FirstOrDefault() == null)
                                {
                                    var callStartIndex = line.LastIndexOf(":") + 1;
                                    var callEndIndex   = line.LastIndexOf("(") - 1;
                                    var callSignString = line.Substring(callStartIndex, callEndIndex - callStartIndex).Trim(); //Regex.Match(line, @"(?<=\bdown:\s+)\p{L}+\p{N}+\p{L}+").Value;
                                    if (callSignString.Trim().Length > 0)
                                    {
                                        var callSignId = db.CallSigns.Where(x => x.Text.ToUpper() == callSignString.ToUpper().Trim()).Select(x => x.CallSignId).FirstOrDefault();
                                        if (callSignId == 0)
                                        {
                                            var callSign = new CallSign();
                                            callSign.Text = callSignString.ToUpper().Trim();
                                            db.CallSigns.Add(callSign);
                                            db.SaveChanges();
                                            callSignId = callSign.CallSignId;
                                        }
                                        var log = new LogEntry();
                                        log.Entry         = line;
                                        log.EntryDateTime = date;
                                        log.CallSignId    = callSignId;
                                        log.ServerId      = server.ServerId;
                                        log.LogEntryType  = LogEntryType.ClientClosingDown;
                                        db.LogEntries.Add(log);
                                    }
                                    else
                                    {
                                        Console.WriteLine("ERROR: Call Sign not found");
                                        Console.WriteLine(line);
                                    }
                                }
                            }
                            else if (line.ToLower().Contains("begin ambe encode"))
                            {
                                WriteDebug(line);
                                var streamNumberStartIndex = line.IndexOf("STREAM ID:") + 1;
                                var streamNumberEndIndex   = line.IndexOf("SUB") - 1;
                                var streamNumber           = line.Substring(streamNumberStartIndex, streamNumberEndIndex - streamNumberStartIndex); //Regex.Match(line, @"(?<=\bSTREAM ID:\s+)\p{N}+").Value;
                                if (db.Streams.Where(x => x.StreamNumber == streamNumber).Count() == 0)
                                {
                                    var callSignString = Regex.Match(line, @"(?<=\bSUB:\s+)\p{L}+\p{N}+\p{L}+").Value;
                                    if (callSignString.Length > 1)
                                    {
                                        var strDate = line.Split(',')[0].Replace("INFO ", "");
                                        var date    = DateTime.MinValue;
                                        DateTime.TryParse(strDate, out date);
                                        var repeaterIdString = Regex.Match(line, @"(?<=\bREPEATER:\s+)\p{N}+").Value;
                                        var talkGroupId      = Regex.Match(line, @"(?<=\bTGID\s+)\p{N}+").Value;
                                        var timeSlot         = Regex.Match(line, @"(?<=\bTS\s+)\p{N}+").Value;

                                        var callSign = db.CallSigns.Where(x => x.Text.ToUpper() == callSignString.ToUpper().Trim()).FirstOrDefault();
                                        if (callSign == null)
                                        {
                                            callSign      = new CallSign();
                                            callSign.Text = callSignString.ToUpper().Trim();
                                            db.CallSigns.Add(callSign);
                                            db.SaveChanges();
                                        }
                                        var tgText = talkGroupId.Trim();
                                        if (talkGroupId.Trim().Length > 0)
                                        {
                                            var tg = db.TalkGroups.Where(x => x.Ts1Id == talkGroupId.Trim() || x.Ts2Id == talkGroupId.Trim());
                                            if (tg.Count() > 0)
                                            {
                                                tgText = tg.FirstOrDefault().Name + " (" + talkGroupId.Trim() + ")";
                                            }
                                        }

                                        var stream = new Data.Models.Stream();
                                        stream.Server         = server;
                                        stream.CallSign       = callSign;
                                        stream.StreamDateTime = date;
                                        stream.StreamNumber   = streamNumber;
                                        stream.RepeaterId     = repeaterIdString;
                                        stream.TalkGroup      = tgText;
                                        stream.TimeSlot       = timeSlot;
                                        db.Add(stream);
                                    }
                                    else
                                    {
                                        Console.WriteLine("ERROR: Call Sign not found");
                                        Console.WriteLine(line);
                                    }
                                }
                            }
                        }
                    }
                    Console.WriteLine("Updating DB");
                    db.SaveChanges();
                }
                Console.WriteLine("Updating DB");
                db.SaveChanges();
            }
        }
Ejemplo n.º 12
0
 public override int GetHashCode() => CallSign.GetHashCode();