/// <summary> /// فیلدهایی که باید مقدار بگیرند را مقدار دهی میکند /// </summary> /// <param name="proxy"></param> /// <param name="personId"></param> /// <param name="archiveValues"></param> /// <param name="fildsMapList"></param> /// <returns></returns> private ArchiveCalcValuesProxy SetMapValue(ArchiveCalcValuesProxy proxy, decimal personId, IList <ArchiveConceptValue> archiveValues, IList <ArchiveFieldMap> fildsMapList) { try { ArchiveFieldMap map = null; MemberInfo[] members = proxy.GetType().GetMembers(); foreach (MemberInfo member in members.Where(a => a.MemberType == MemberTypes.Property && !a.Name.ToLower().Contains("person"))) { PropertyInfo prop = typeof(ArchiveCalcValuesProxy).GetProperty(member.Name); map = fildsMapList.Where(x => x.PId.ToLower().Equals(member.Name.ToLower())).FirstOrDefault(); prop.SetValue(proxy, Empty, null); if (map != null) { ArchiveConceptValue cnpValue = archiveValues.Where(x => x.PersonId == personId && x.Concept.KeyColumnName.ToLower().Equals(map.ConceptKeyColumn.ToLower())).FirstOrDefault(); if (cnpValue != null) { string value = Utility.ToString(cnpValue.ChangedValue); switch (cnpValue.Concept.DataType) { case ConceptDataType.Int: value = Utility.ToInteger(value).ToString(); break; case ConceptDataType.Hour: value = Utility.IntTimeToTime(Utility.ToInteger(value)); break; } prop.SetValue(proxy, value, null); } } } return(proxy); } catch (Exception ex) { BaseBusiness <Entity> .LogException(ex); throw ex; } }
public void SetArchiveValues(int year, int month, decimal personId, ArchiveCalcValuesProxy proxy) { IList <ArchiveCalcValuesProxy> resultList = new List <ArchiveCalcValuesProxy>(); int rangeOrder = month; IList <ArchiveConceptValue> archiveValues = archiveRep.LoadArchiveValueList(new List <decimal>() { personId }, year, rangeOrder); IList <ArchiveFieldMap> fildsMapList = mapRep.GetAll(); if (archiveValues.Any(x => x.PersonId == personId)) { ArchiveFieldMap map = null; MemberInfo[] members = proxy.GetType().GetMembers(); #region Data Type Validatin UIValidationExceptions exceptions = new UIValidationExceptions(); foreach (MemberInfo member in members.Where(a => a.MemberType == MemberTypes.Property && !a.Name.ToLower().Contains("person"))) { PropertyInfo prop = typeof(ArchiveCalcValuesProxy).GetProperty(member.Name); map = fildsMapList.Where(x => x.PId.ToLower().Equals(member.Name.ToLower())).FirstOrDefault(); if (map != null) { ArchiveConceptValue cnpValue = archiveValues.Where(x => x.PersonId == personId && x.Concept.KeyColumnName.ToLower().Equals(map.ConceptKeyColumn.ToLower())).FirstOrDefault(); if (cnpValue != null) { bool isValid = false; string pValue = Utility.ToString(prop.GetValue(proxy, null)); int value = 0; string cnpName = ""; if (BLanguage.CurrentLocalLanguage == LanguagesName.Parsi) { cnpName = map.FnTitle; } else { cnpName = map.EnTitle; } switch (cnpValue.Concept.DataType) { case ConceptDataType.Int: if (!Utility.IsNumber(pValue)) { exceptions.Add(new ValidationException(ExceptionResourceKeys.ArchiveDataTypeIsNotValid, cnpName, ExceptionSrc)); } break; case ConceptDataType.Hour: if (!Utility.IsTime(pValue)) { exceptions.Add(new ValidationException(ExceptionResourceKeys.ArchiveDataTypeIsNotValid, cnpName, ExceptionSrc)); } break; } if (isValid) { cnpValue.ChangedValue = value; archiveRep.SaveOrUpdate(cnpValue); } } } } if (exceptions.Count > 0) { throw exceptions; } #endregion #region Set Value foreach (MemberInfo member in members.Where(a => a.MemberType == MemberTypes.Property && !a.Name.ToLower().Contains("person"))) { PropertyInfo prop = typeof(ArchiveCalcValuesProxy).GetProperty(member.Name); map = fildsMapList.Where(x => x.PId.ToLower().Equals(member.Name.ToLower())).FirstOrDefault(); if (map != null) { ArchiveConceptValue cnpValue = archiveValues.Where(x => x.PersonId == personId && x.Concept.KeyColumnName.ToLower().Equals(map.ConceptKeyColumn.ToLower())).FirstOrDefault(); if (cnpValue != null) { bool isValid = false; string pValue = Utility.ToString(prop.GetValue(proxy, null)); int value = 0; switch (cnpValue.Concept.DataType) { case ConceptDataType.Int: if (Utility.IsNumber(pValue)) { value = Utility.ToInteger(pValue); isValid = true; } break; case ConceptDataType.Hour: if (Utility.IsTime(pValue)) { value = Utility.RealTimeToIntTime(pValue); isValid = true; } break; } if (isValid) { cnpValue.ChangedValue = value; archiveRep.SaveOrUpdate(cnpValue); } } } } #endregion } }