public static void T_OE_PROJECT_validate(ref ProjectImportType a, List <ConfigInfoType> t, Dictionary <string, string> colVals, string f) { var _rules = t.Find(item => item._name == f); //import validation rules for this field if (_rules == null) { return; } string _value = Utils.GetValueOrDefault(colVals, f); //supplied value for this field if (!string.IsNullOrEmpty(_value)) //if value is supplied { _value = _value.Trim(); //strings: field length validation and substring if (_rules._datatype == "" && _rules._length != null) { if (_value.Length > _rules._length) { a.VALIDATE_CD = false; a.VALIDATE_MSG = (a.VALIDATE_MSG + f + " length (" + _rules._length + ") exceeded. "); _value = _value.SubStringPlus(0, (int)_rules._length); } } //integers: check type if (_rules._datatype == "int") { int n; if (int.TryParse(_value, out n) == false) { a.VALIDATE_CD = false; a.VALIDATE_MSG = (a.VALIDATE_MSG + f + " not numeric. "); } } } else { //required check if (_rules._req == "Y") { if (_rules._datatype == "") { _value = "-"; } a.VALIDATE_CD = false; a.VALIDATE_MSG = (a.VALIDATE_MSG + "Required field " + f + " missing. "); } } //finally set the value before returning try { if (_rules._datatype == "") { typeof(T_OE_PROJECTS).GetProperty(f).SetValue(a.T_OE_PROJECT, _value); } else if (_rules._datatype == "int") { typeof(T_OE_PROJECTS).GetProperty(f).SetValue(a.T_OE_PROJECT, _value.ConvertOrDefault <int?>()); } } catch (Exception ex) { } }
//***************************project local**************************************** /// <summary> /// Creates a new local PROJECT record and validates it according to the validation rules contained in XML file /// </summary> /// <param name="UserIDX"></param> /// <param name="colVals">Name value pair for the different fields to import into the project record</param> /// <returns></returns> public static ProjectImportType InsertOrUpdate_T_OE_PROJECT_local(int UserIDX, Dictionary <string, string> colVals) { using (EECIPEntities ctx = new EECIPEntities()) { try { //Boolean insInd = true; ProjectImportType e = new ProjectImportType(); e.T_OE_PROJECT.PROJECT_IDX = Guid.NewGuid(); e.T_OE_PROJECT.CREATE_DT = System.DateTime.Now; e.T_OE_PROJECT.CREATE_USERIDX = UserIDX; //get import config rules List <ConfigInfoType> _allRules = Utils.GetAllColumnInfo("P"); //explicitly validate mandatory fields foreach (string entry in Utils.GetMandatoryImportFieldList("P")) { T_OE_PROJECT_validate(ref e, _allRules, colVals, entry); } //then only validate optional fields if supplied (performance) foreach (string entry in Utils.GetOptionalImportFieldList("P")) { T_OE_PROJECT_validate(ref e, _allRules, colVals, entry); } //********************** CUSTOM POST VALIDATION ******************************************** //SET ORG_IDX based on supplied ORG_NAME e.ORG_NAME = Utils.GetValueOrDefault(colVals, "ORG_NAME"); T_OE_ORGANIZATION oo = db_Ref.GetT_OE_ORGANIZATION_ByName(e.ORG_NAME); if (oo != null) { e.T_OE_PROJECT.ORG_IDX = oo.ORG_IDX; } else { e.VALIDATE_CD = false; e.VALIDATE_MSG += "No matching agency found."; } //MEDIA e.MEDIA_NAME = Utils.GetValueOrDefault(colVals, "MEDIA_TAG"); T_OE_REF_TAGS media1 = db_Ref.GetT_OE_REF_TAGS_ByCategoryAndName("Project Media", e.MEDIA_NAME); if (media1 != null) { e.T_OE_PROJECT.MEDIA_TAG = media1.TAG_IDX; } else { e.VALIDATE_CD = false; e.VALIDATE_MSG += "Invalid Media name."; } //MOBILE e.MOBILE_IND_NAME = Utils.GetValueOrDefault(colVals, "MOBILE_IND"); if (!string.IsNullOrEmpty(e.MOBILE_IND_NAME)) { T_OE_REF_TAGS mobile1 = db_Ref.GetT_OE_REF_TAGS_ByCategoryAndName("Use Amount", e.MOBILE_IND_NAME); if (mobile1 != null) { e.T_OE_PROJECT.MOBILE_IND = mobile1.TAG_IDX; } else { e.VALIDATE_CD = false; e.VALIDATE_MSG += "Invalid Mobile Use. "; } } //ADV MON e.ADV_MON_IND_NAME = Utils.GetValueOrDefault(colVals, "ADV_MON_IND"); if (!string.IsNullOrEmpty(e.ADV_MON_IND_NAME)) { T_OE_REF_TAGS adv1 = db_Ref.GetT_OE_REF_TAGS_ByCategoryAndName("Use Amount", e.ADV_MON_IND_NAME); if (adv1 != null) { e.T_OE_PROJECT.ADV_MON_IND = adv1.TAG_IDX; } else { e.VALIDATE_CD = false; e.VALIDATE_MSG += "Invalid Advanced Monitoring Use. "; } } //BP MODERN e.BP_MODERN_IND_NAME = Utils.GetValueOrDefault(colVals, "BP_MODERN_IND"); if (!string.IsNullOrEmpty(e.BP_MODERN_IND_NAME)) { T_OE_REF_TAGS bp1 = db_Ref.GetT_OE_REF_TAGS_ByCategoryAndName("Use Amount", e.BP_MODERN_IND_NAME); if (bp1 != null) { e.T_OE_PROJECT.BP_MODERN_IND = bp1.TAG_IDX; } else { e.VALIDATE_CD = false; e.VALIDATE_MSG += "Invalid Business Process Improvement Use. "; } } e.PROGRAM_AREAS = Utils.GetValueOrDefault(colVals, "PROGRAM_AREAS"); e.FEATURES = Utils.GetValueOrDefault(colVals, "FEATURES"); //********************** CUSTOM POST VALIDATION END ******************************************** return(e); } catch (Exception ex) { db_Ref.LogEFException(ex); return(null); } } }