private IEnumerable <CustomReportFilterViewModel> GetFilters(CustomReportView_ViewModel model, CustomReportBaseDataViewModel it) { Regex rg = new Regex(@"\(.*?\)"); model.ValuesListString = rg.Replace(model.ValuesListString, "").Replace(" GMT+", ".").Replace(" GMT ", "."); model.ValuesList = model.ValuesListString.Split(';').ToList(); model.IdsList = model.IdsListString.Split(';').Select(x => long.Parse(x)).ToList(); var filters = model.IdsList.Zip(model.ValuesList, (i, v) => new { Id = i, Value = v }).Where(x => !String.IsNullOrEmpty(x.Value)).ToList(); var initFilters = it.GetAllAvailableFilters(Db); var res = from f in filters join i in initFilters on f.Id equals i.Id select new CustomReportFilterViewModel() { Id = i.Id, Field = i.Field, Operation = i.Operation, ValueString = f.Value, Value = SystemTypeHelper.GetObjectByString(f.Value, i.Field.DataType, i.Multi) }; return(res.Where(x => !String.IsNullOrEmpty(x.ValueString))); }
public static List <CustomReportFilterDTO> GetUsedFiltersForReport(IUnitOfWork db, long reportId) { var query = from filter in db.CustomReportFilters.GetAllAsDto() join predefinedField in db.CustomReportPredefinedFields.GetAllAsDto() on filter.CustomReportPredefinedFieldId equals predefinedField.Id where filter.CustomReportId == reportId select new { Id = filter.Id, PredefinedField = predefinedField, Filter = filter, //Field = field }; var res = query.ToList().Select(x => new CustomReportFilterDTO() { Id = x.Filter.Id, CustomReportPredefinedField = x.PredefinedField, //AvailableOperations = GetOperations(x.PredefinedField.DataType), Operation = x.Filter.Operation, ValueObject = SystemTypeHelper.GetObjectByString(x.Filter.Value, x.PredefinedField.DataType), //OperationString = EnumHelper<FilterOperation>.GetEnumDescription(x.Filter.Operation.ToString()) }); return(res.ToList()); }
private object GetValueObject(string val, string dataType, bool multi = false) { int days = 0; if (multi) { return(String.IsNullOrEmpty(val) ? new List <int>() : val.Split(',').Select(x => int.Parse(x)).ToList()); } if (dataType == "datetime" && int.TryParse(val, out days)) { return(DateTime.Now.AddDays(days).Date); } return(SystemTypeHelper.GetObjectByString(val, dataType)); }