Beispiel #1
0
        /// <summary>
        /// 根据条件获取所有数据
        /// </summary>
        /// <param name="input">查询条件的类</param>
        private async Task <List <OperateLogEntity> > GetAllListByCondition(QueryOperateLogInputDto input)
        {
            try
            {
                // 打开Translate.xml文件获取翻译结果
                XElement xElement   = XElement.Load(ConfigHelper.TranslateFilePath);
                XElement OperateLog = xElement.Descendants("Class").FirstOrDefault(s => s.Attribute("name").Value.Equals("OperateLog"));
                List <TranslateOutput> listTranslate = new List <TranslateOutput>();
                OperateLog.Descendants("word").ToList().ForEach(s =>
                {
                    listTranslate.Add(GetTranslateOutput(s));
                });
                bool bIsEnglish = ConfigHelper.IsEnglish == "1" ? true : false;

                // 系统功能
                string SystemFunc = null;
                switch (input.SystemFunc)
                {
                case "1":
                    SystemFunc = GetTranslate(1001, bIsEnglish, listTranslate);
                    break;

                case "2":
                    SystemFunc = GetTranslate(1002, bIsEnglish, listTranslate);
                    break;

                case "3":
                    SystemFunc = GetTranslate(1003, bIsEnglish, listTranslate);
                    break;

                default:
                    break;
                }

                // 操作类型
                string OperateType = null;
                switch (input.OperateType)
                {
                case "1":
                    OperateType = GetTranslate(1101, bIsEnglish, listTranslate);
                    break;

                case "2":
                    OperateType = GetTranslate(1102, bIsEnglish, listTranslate);
                    break;

                case "3":
                    OperateType = GetTranslate(1103, bIsEnglish, listTranslate);
                    break;

                case "4":
                    OperateType = GetTranslate(1104, bIsEnglish, listTranslate);
                    break;

                case "5":
                    OperateType = GetTranslate(1105, bIsEnglish, listTranslate);
                    break;

                case "6":
                    OperateType = GetTranslate(1106, bIsEnglish, listTranslate);
                    break;

                default:
                    break;
                }

                // 操作时间
                DateTime?StartTime = string.IsNullOrEmpty(input.StartTime) ? null : (DateTime?)Convert.ToDateTime(input.StartTime + " 00:00:00");
                DateTime?EndTime   = string.IsNullOrEmpty(input.EndTime) ? null : (DateTime?)Convert.ToDateTime(input.EndTime + " 23:59:59");

                // 查询用户
                List <string> UserCode = new List <string>();

                if (string.IsNullOrEmpty(input.QueryId))
                {
                    List <SystemUserEntity> queryUser = GetAllUserByUserAreaCode(input.OperateId, null).Result;
                    if (queryUser == null)
                    {
                        return(null);
                    }
                    if (queryUser.Count() == 0)
                    {
                        return(null);
                    }

                    foreach (SystemUserEntity element in queryUser)
                    {
                        UserCode.Add(element.UserCode);
                    }
                }
                else
                {
                    JavaScriptSerializer json = new JavaScriptSerializer();
                    UserCode = json.Deserialize <List <string> >(input.QueryId);
                }

                //List<OperateLogEntity> query = await _IOperateLogRepository.GetAllListAsync(s => (UserCode.Contains(s.UserCode)
                //    && (string.IsNullOrEmpty(SystemFunc) ? true : s.SystemFunc.Equals(SystemFunc))
                //    && (string.IsNullOrEmpty(OperateType) ? true : s.OperateType.Equals(OperateType))
                //    && (string.IsNullOrEmpty(input.StartTime) ? true : s.OperateTime > StartTime)
                //    && (string.IsNullOrEmpty(input.EndTime) ? true : s.OperateTime < EndTime)));

                var expression = LinqExtensions.True <OperateLogEntity>();
                expression = expression.And(s => UserCode.Contains(s.UserCode));
                if (!string.IsNullOrEmpty(SystemFunc))
                {
                    expression = expression.And(s => s.SystemFunc.Equals(SystemFunc));
                }
                if (!string.IsNullOrEmpty(OperateType))
                {
                    expression = expression.And(s => s.OperateType.Equals(OperateType));
                }
                if (!string.IsNullOrEmpty(input.StartTime))
                {
                    expression = expression.And(s => s.OperateTime > StartTime);
                }
                if (!string.IsNullOrEmpty(input.EndTime))
                {
                    expression = expression.And(s => s.OperateTime < EndTime);
                }

                List <OperateLogEntity> query = _IOperateLogRepository.GetAllList(expression);
                return(query.OrderByDescending(s => s.OperateTime).ToList());
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }