/// <summary> /// This Method is going to include the new information from the specific satellite in the db. /// I know it should be also possible to know (and save) which ship has this message been arrived from, then you can have more than one Ship sending. /// </summary> /// <param name="satelliteData"></param> public override async void SaveNewSatelliteData(SatelliteData satelliteData) { TopSecretSplitItem topSecretSplitItem = CreateDbItemWithSatelliteData(satelliteData); var topSecretSplitItemRequest = await _context.TopSecretSplitItems.FindAsync(topSecretSplitItem.id); if (topSecretSplitItemRequest != null) { _context.TopSecretSplitItems.Remove(topSecretSplitItemRequest); } topSecretSplitItem.createdDate = DateTime.Now; _context.TopSecretSplitItems.Add(topSecretSplitItem); await _context.SaveChangesAsync(); }
public TopSecretSplitItem CreateDbItemWithSatelliteData(SatelliteData satelliteData) { TopSecretSplitItem topSecretSplitItem = new TopSecretSplitItem(); topSecretSplitItem.id = (_rebelSatellites.GetIndexOfSatellite(satelliteData.name) + 1); //Add 1 to this id value to be sure it never reach de 0 value.; topSecretSplitItem.name = satelliteData.name; topSecretSplitItem.distance = satelliteData.distance; //Merge the var result = String.Join(_wordsSeparator, satelliteData.message.ToArray()); topSecretSplitItem.message = result; return(topSecretSplitItem); }
public override async Task <SatelliteData> GetSatelliteDataFromName(string name) { TopSecretSplitItem topSecretSplitItem = new TopSecretSplitItem(); topSecretSplitItem.id = (_rebelSatellites.GetIndexOfSatellite(name) + 1); //Add 1 to this id value to be sure it never reach de 0 value.; var topSecretSplitItemRequest = await _context.TopSecretSplitItems.FindAsync(topSecretSplitItem.id); if (topSecretSplitItemRequest == null) { throw new Exception("There is not information for satellite" + name); } List <string> wordsSeparated = new List <string>(topSecretSplitItemRequest.message.Split(_wordsSeparator)); SatelliteData satelliteData = new SatelliteData(topSecretSplitItemRequest.name, topSecretSplitItemRequest.distance, wordsSeparated); return(satelliteData); }