internal static WsProfile GetWsProfile(IManProfile imProf, IManWorkspace imWs) { var wsProf = new WsProfile(); wsProf = PopulateCustomAttr(wsProf, imProf); wsProf.IsUnderPreservation = wsProf.Status.IndexOf("UNDER PRESERVATION", StringComparison.OrdinalIgnoreCase) != -1; //wsProf.Status.Equals("UNDER PRESERVATION", StringComparison.OrdinalIgnoreCase); var clientCustAttr = WsUtility.GetWsCustAttr(wsProf.GetType().GetProperty("Client"), wsProf.Client); wsProf.ClientDesc = clientCustAttr == null ? string.Empty : clientCustAttr.Description; if (!string.IsNullOrWhiteSpace(wsProf.Partner)) { wsProf.PartnerDesc = WsUtility.GetWsUser(wsProf.Partner, ImDbType.Active); } if (!string.IsNullOrWhiteSpace(wsProf.Manager)) { wsProf.ManagerDesc = WsUtility.GetWsUser(wsProf.Manager, ImDbType.Active); } //wsProf.WsProfile_TP = GetWsProfile_TP(wsProf.EngNum); //wsProf.KPMGOnly = GetKPMGOnlyFlag(wsProf.EngNum); return(wsProf); }
private static T PopulateCustomAttr <T>(T type, dynamic imObj) { foreach (PropertyInfo pI in type.GetType().GetProperties()) { if (Attribute.IsDefined(pI, typeof(ImProfileAttrInfo), false)) { var cA = (ImProfileAttrInfo)pI.GetCustomAttributes(typeof(ImProfileAttrInfo), false)[0]; dynamic imProfAttrVal = null; if ((imObj as IManProfile) != null) { IManProfile imp = (IManProfile)imObj; imProfAttrVal = imp.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum)); } else if ((imObj as IManWorkspace) != null) { IManWorkspace imws = (IManWorkspace)imObj; imProfAttrVal = imws.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum)); } else if ((imObj as IManDocument) != null) { IManDocument imd = (IManDocument)imObj; imProfAttrVal = imd.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum)); } else { IManProfile imp = (IManProfile)imObj; imProfAttrVal = imp.GetAttributeValueByID((imProfileAttributeID)Enum.Parse(typeof(imProfileAttributeID), cA.AttrImProfileEnum)); } if (imProfAttrVal == null) { continue; } if (cA.AttrDataType == typeof(bool)) { bool b; if (bool.TryParse(imProfAttrVal.ToString(), out b)) { pI.SetValue(type, b); } else { pI.SetValue(type, false); } } else if (cA.AttrDataType == typeof(DateTime)) { if (imProfAttrVal == null || imProfAttrVal.Date == null) { pI.SetValue(type, null); } else { DateTime dt; if (DateTime.TryParse(imProfAttrVal.Date.ToString(), out dt)) { pI.SetValue(type, dt); } else { pI.SetValue(type, null); } } } else { pI.SetValue(type, imProfAttrVal.ToString()); } } } return(type); }
public static List<KeyValuePair<string, object>> GetIMProfAttrs(IManProfile iMProf) { var iMPAs = new List<KeyValuePair<string, object>>(); foreach (var fld in typeof(imProfileAttributeID).GetFields()) { if (!fld.IsSpecialName) { //if (fld.Name.IsEquals(IMConstant.CONST_IM_PROFILE_FULLTEXT) // || fld.Name.IsEquals(IMConstant.CONST_IM_PROFILE_FTLANGUAGEID) // ) // continue; try { iMPAs.Add(new KeyValuePair<string, object> ( fld.Name, iMProf.GetAttributeValueByID((imProfileAttributeID)fld.Name.ToEnum<imProfileAttributeID>()) )); } catch (Exception ex) { KElmahUtility.LogException(new KException(string.Format("{0}[{1}]", ex.Message, fld.Name), ex)); } } } return iMPAs; }