/// <summary> /// Converts an <see cref="EnvironmentExportWindowViewModel"/> to an <see cref="EnvironmentViewModel"/>. /// </summary> /// <param name="entity">The <see cref="EnvironmentExportWindowViewModel"/> to convert from.</param> /// <returns>A converted instance of <see cref="EnvironmentViewModel"/>.</returns> public EnvironmentViewModel To(EnvironmentExportWindowViewModel entity) { if (entity.Environment == null) { return(null); } var newModel = new EnvironmentViewModel() { Name = entity.Environment.Name, AddedOn = entity.Environment.AddedOn, Id = entity.Environment.Id }; foreach (var environmentVariable in entity.Environment.EnvironmentVariables) { var newVariable = new EnvironmentVariableViewModel() { Id = environmentVariable.Id, Name = environmentVariable.Name, Value = environmentVariable.Value, AddedOn = environmentVariable.AddedOn, Environment = newModel }; newModel.EnvironmentVariables.Add(newVariable); } return(newModel); }
/// <summary> /// Converts an <see cref="EnvironmentViewModel"/> to an <see cref="EnvironmentExportWindowViewModel"/> for use in the Chami export window. /// </summary> /// <param name="model">The <see cref="EnvironmentViewModel"/> to convert from.</param> /// <returns>A converted instance of <see cref="EnvironmentExportWindowViewModel"/>.</returns> public EnvironmentExportWindowViewModel From(EnvironmentViewModel model) { var newModel = new EnvironmentViewModel() { Name = model.Name, AddedOn = model.AddedOn, Id = model.Id }; foreach (var environmentVariable in model.EnvironmentVariables) { var newVariable = new EnvironmentVariableViewModel() { Id = environmentVariable.Id, Name = environmentVariable.Name, Value = environmentVariable.Value, AddedOn = environmentVariable.AddedOn, Environment = newModel }; newModel.EnvironmentVariables.Add(newVariable); } return(new EnvironmentExportWindowViewModel() { Environment = newModel }); }
/// <summary> /// Custom logic for reading a JSON object and converting it to an <see cref="EnvironmentViewModel"/>. /// </summary> /// <param name="reader">A <see cref="JsonReader"/>.</param> /// <param name="objectType">The <see cref="Type"/> to convert from.</param> /// <param name="existingValue">Unused.</param> /// <param name="serializer">The <see cref="JsonSerializer"/> to use.</param> /// <returns>A converter <see cref="EnvironmentViewModel"/> object.</returns> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (!CanConvert(objectType)) { throw new NotSupportedException($"The converter cannot handle type {objectType}!"); } JObject jObject = JObject.Load(reader); var viewModel = new EnvironmentViewModel { Name = jObject.GetValue("name", StringComparison.InvariantCultureIgnoreCase).ToString() }; if (jObject.GetValue("environmentvariables", StringComparison.InvariantCultureIgnoreCase) is JObject environmentVariablesJObject) { foreach (var environmentVariable in environmentVariablesJObject) { var environmentVariableViewModel = new EnvironmentVariableViewModel { Environment = viewModel, Name = environmentVariable.Key, Value = environmentVariable.Value.ToString() }; viewModel.EnvironmentVariables.Add(environmentVariableViewModel); } } return(viewModel); }
public void TestWriting() { var outputFile = "D:/code/Chami/ChamiTests/OutputFiles/chami-output-test.json"; var environment = new EnvironmentViewModel(); environment.Name = "Test environment"; var environmentVariable = new EnvironmentVariableViewModel(); environmentVariable.Name = "USER"; environmentVariable.Value = "ChamiUser"; var environmentVariable2 = new EnvironmentVariableViewModel(); environmentVariable2.Name = "PASSWORD"; environmentVariable2.Value = "Passw0rd!"; environment.EnvironmentVariables.Add(environmentVariable); environment.EnvironmentVariables.Add(environmentVariable2); var json = JsonConvert.SerializeObject(environment, Formatting.Indented, new EnvironmentViewModelJsonConverter()); File.WriteAllText(outputFile, json); FileInfo fileInfo = new FileInfo(outputFile); Assert.Equal(124, fileInfo.Length); }
/// <summary> /// Reads the file and returns a new <see cref="EnvironmentViewModel"/>. /// </summary> /// <returns>An <see cref="EnvironmentViewModel"/> with variables read from the dotEnv file.</returns> public EnvironmentViewModel Process() { var newVariables = DotEnv.Fluent().WithEnvFiles(_inputFile).Read(); var environmentViewModel = new EnvironmentViewModel(); environmentViewModel.Name = _inputFile; foreach (var variable in newVariables) { var environmentVariable = new EnvironmentVariableViewModel(); environmentVariable.Name = variable.Key; environmentVariable.Value = variable.Value; if (environmentVariable.Name == "_CHAMI_ENV") { environmentViewModel.Name = environmentVariable.Value; } else { environmentViewModel.EnvironmentVariables.Add(environmentVariable); } } return(environmentViewModel); }
/// <summary> /// Deletes an <see cref="EnvironmentVariableViewModel"/> object from the datastore. /// </summary> /// <param name="selectedVariable"></param> public void DeleteVariable(EnvironmentVariableViewModel selectedVariable) { _repository.DeleteVariableById(selectedVariable.Id); }