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()); }
// 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)); }
/// <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 }); }
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")); }
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); } }
/// <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); } }
/// <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); }
public void Try_GetInvalidCallSign() { CallSign res = GetCallSign("XXXXX"); Assert.IsNull(res); }
public override int GetHashCode() { return(CallSign.GetHashCode()); }
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(); } } }
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(); } }
public override int GetHashCode() => CallSign.GetHashCode();