// Parse array string into dictionary array private static Dictionary <string, BaseParamModel> ParseParamsFromCMD(string[] args) { Dictionary <string, BaseParamModel> dicArgs = new Dictionary <string, BaseParamModel> { }; for (int i = 0; i < args.Length; i++) { if (args[i].IndexOf("--") == 0) { string simplyName = args[i].Substring(2); BaseParamModel _param = new BaseParamModel() { }; if (args.Length <= i + 1 || args[i + 1].IndexOf("--") == 0) { _param.value = "true"; } else { _param.value = args[i + 1]; i++; } dicArgs.Add(simplyName, _param); } } return(dicArgs); }
// Add validations to params by the type of action private static DefinedParamsModel AddValidationType(DefinedParamsModel options, string typeAction) { foreach (PropertyInfo property in options.GetType().GetProperties()) { string name = string.Concat(typeAction, "_", property.Name); string[] validation = SettingsHelper.GetSettingArray(name); // Get object BaseParamModel properties = (BaseParamModel)property.GetValue(options, null); properties.AddValidation(validation); // TODO: Refactor to use reflection // property.SetValue(options, properties, null); switch (property.Name) { case "username": options.username = properties; break; case "password": options.password = properties; break; case "urlSite": options.urlSite = properties; break; case "templateName": options.templateName = properties; break; case "dirPath": options.dirPath = properties; break; } } return(options); }
// Validate necesary params from app public static ValidationParamsModel ValidateParams(DefinedParamsModel options, string typeAction) { DefinedParamsModel validationParams = AddValidationType(options, typeAction); ValidationParamsModel validation = new ValidationParamsModel(true, new String[] { }); // Go over all defined properties in ParamsModel foreach (PropertyInfo property in validationParams.GetType().GetProperties()) { string name = property.Name; // Get object BaseParamModel properties = (BaseParamModel)property.GetValue(options, null); // Check if have validations if (properties.validations?.Length > 0) { string errMsg = ValidateHelper.ValidateField(name, properties.value, properties.validations); if (!string.IsNullOrEmpty(errMsg)) { validation.valid = false; validation.errors.Append(errMsg); } } } return(validation); }