public async Task Add(string group, TargetModel targetModel) { var allTargets = await _targetsProvider.Provide(group); EnsureTargetDoesNotExist(targetModel, allTargets); allTargets.Add(targetModel); var allTargetsJsonText = JsonConvert.SerializeObject(allTargets); var targetsFileLocation = _settingsProvider.ProvideTargetFileLocation(group); await _fileWriter.TryWrite(allTargetsJsonText, targetsFileLocation); }
public async Task <TargetsModel> Provide(string group) { var targetsFileLocation = _settingsProvider.ProvideTargetFileLocation(group); var targetsFileContent = await _fileReader.TryRead(targetsFileLocation); var deserializeObject = JsonConvert.DeserializeObject <TargetsModel>(targetsFileContent); if (deserializeObject == null) { return(new TargetsModel()); } return(deserializeObject); }
public async Task Delete(string group, string targetName) { var allTargets = await _targetsProvider.Provide(group); var targetToDelete = allTargets.ToList().SingleOrDefault(x => x.Targets.Any(t => t.Equals(targetName, StringComparison.InvariantCultureIgnoreCase))); if (targetToDelete == default(TargetModel)) { Console.WriteLine($"Cannot delete target {targetName} -- not found"); return; } var targetIndex = allTargets.IndexOf(targetToDelete); allTargets.RemoveAt(targetIndex); var allTargetsJsonText = JsonConvert.SerializeObject(allTargets); var targetsFileLocation = _settingsProvider.ProvideTargetFileLocation(group); await _fileWriter.TryWrite(allTargetsJsonText, targetsFileLocation); }