Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        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
            }
        }