Beispiel #1
0
 protected virtual CrudActionResult <TViewModel, TForm> GetListAction(DttRequestForm form)
 {
     return(new CrudActionResult <TViewModel, TForm>()
     {
         Action = Json(Service.GetDynamicList(form)), ViewModel = null
     });
 }
Beispiel #2
0
        public IEnumerable <T> GetPaging <T>(IEnumerable <T> filtered, DttRequestForm form) where T : ModelBase
        {
            if (form.order?.Count > 0)
            {
                foreach (var item in form.order)
                {
                    item.colname = form.columns[item.column].data;

                    if (item.colname == "Log")
                    {
                        filtered = filtered
                                   .OrderBy("CreatedDate " + item.dir);
                        if (item.dir == "asc")
                        {
                            filtered = filtered.OrderBy(t => t.UpdatedDate ?? t.CreatedDate);
                        }
                        else
                        {
                            filtered = filtered.OrderByDescending(t => t.UpdatedDate ?? t.CreatedDate);
                        }
                    }
                    else
                    {
                        filtered = filtered.OrderBy(item.colname + " " + item.dir);
                    }
                }
            }
            else
            {
                filtered = filtered.OrderByDescending(t => t.CreatedDate).OrderByDescending(t => t.UpdatedDate ?? t.CreatedDate);
            }

            if (form.length.HasValue)
            {
                return(filtered.Skip((form.start / form.length.Value) * form.length.Value)
                       .Take(form.length.Value));
            }
            else
            {
                return(filtered);
            }
        }
Beispiel #3
0
 public override ActionResult GetList(DttRequestForm form)
 {
     return(base.GetList(form));
 }
Beispiel #4
0
        public IQueryable <ApplicationRole> GetRolePaging(IQueryable <ApplicationRole> filtered, DttRequestForm form)
        {
            if (form.order?.Count > 0)
            {
                foreach (var item in form.order)
                {
                    item.colname = form.columns[item.column].data;

                    if (item.colname != "Log")
                    {
                        filtered = filtered.OrderBy(item.colname + " " + item.dir);
                    }
                }
            }
            else
            {
                filtered = filtered.OrderByDescending(t => t.UpdatedDate ?? t.CreatedDate);
            }

            if (form.length.HasValue)
            {
                return(filtered.Skip((form.start / form.length.Value) * form.length.Value)
                       .Take(form.length.Value));
            }
            else
            {
                return(filtered);
            }
        }
Beispiel #5
0
        public IQueryable <ApplicationRole> GetRoleDynamicFilteredData(IQueryable <ApplicationRole> rawData, DttRequestForm form)
        {
            StringBuilder query = new StringBuilder("");

            if ((form.dyamicSearch?.Count ?? 0) > 0)
            {
                var objParams = new List <object>();

                var filters = form.dyamicSearch.OrderBy(t => t.index)
                              .Where(t => !string.IsNullOrEmpty(t.data) &&
                                     !string.IsNullOrEmpty(t.filter) &&
                                     t.type != "custom")
                              .ToList();

                foreach (var filter in filters)
                {
                    if (filter.value == null && filter.type != "string")
                    {
                        continue;
                    }
                    else if (filter.value == null && filter.type == "string")
                    {
                        filter.value = "";
                    }

                    if (string.IsNullOrEmpty(query.ToString()))
                    {
                        filter.logicgate = null;
                    }


                    query.Append(" ");
                    query.Append(filter.logicgate ?? "");
                    query.Append(" ");



                    var template = "";

                    if (filter.data == "#Status")
                    {
                        if (filter.type == "status")
                        {
                            query.Append(FilterStatus(filter) + " ");
                        }
                        else
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (filter.type == "string")
                        {
                            filter.value = filter.value.ToLower();

                            if (filter.filter == "contains")
                            {
                                template = "{0}.ToLower().Contains(@{1})";
                            }
                            else if (filter.filter == "in")
                            {
                                template = "@{1}.Contains({0}.ToLower())";
                            }
                            else
                            {
                                template = "{0}.ToLower() {2} @{1}.ToLower()";
                            }
                        }
                        else if (filter.type == "nullabledatetime")
                        {
                            template = "{0}.Value.Date {2} @{1}";
                        }
                        else if (filter.type == "date")
                        {
                            template = "{0}.Date {2} @{1}";
                        }
                        else
                        {
                            template = "{0} {2} @{1}";
                        }

                        //} else if (filter.type == "nullabledatetime") {
                        //        template = "{0}.Value.Date {2} @{1}";
                        //    } else if (filter.type == "date") {
                        //        template = "{0}.Date {2} @{1}";
                        //    } else {
                        //        template = "{0} {2} @{1}";
                        //    }

                        query.AppendFormat(template, filter.data, objParams.Count, filter.filter);

                        if (filter.type == "string")
                        {
                            objParams.Add(filter.value);
                        }
                        else if (filter.type == "number")
                        {
                            objParams.Add(filter.value.SafeDecimalConvert());
                        }
                        else if (filter.type == "date")
                        {
                            objParams.Add(filter.value.SafeDateConvert()?.Date);
                        }
                        else if (filter.type == "nullabledatetime")
                        {
                            objParams.Add(filter.value.SafeDateConvert()?.Date);
                        }
                        else if (filter.type == "datetime")
                        {
                            objParams.Add(filter.value.SafeDateConvert());
                        }
                        else if (filter.type.ToLower() == "bool")
                        {
                            objParams.Add(filter.value.SafeConvert <bool>());
                        }
                    }
                }


                rawData = rawData.Where(query.ToString(), objParams.ToArray()).BindDbFunctions();

                //try {
                //    //rawData = ProcessCustomSearch(rawData, form.dyamicSearch.OrderBy(t => t.index)
                //    //.Where(t => !string.IsNullOrEmpty(t.data)
                //    //&& !string.IsNullOrEmpty(t.filter)
                //    //&& t.type == "custom")
                //    //.ToList());
                //} catch (Exception exc) {

                //}
            }
            return(rawData);
        }
Beispiel #6
0
        public DttResponseForm <TForm> ProcessDatatableResult <TForm, TModel>(IQueryable <TModel> query, DttRequestForm form)
            where TForm : FormModelBase, new()
            where TModel : ModelBase
        {
            var result = new DttResponseForm <TForm>();

            var user = GetCurrentUser();

            if (user != null)
            {
                try {
                    var roles = HttpContext.Current.Cache["roles"] as IEnumerable <ApplicationRole>;

                    if (roles == null)
                    {
                        roles = context.Roles.Include("Actions").Where(t => t.IsActive == true && t.IsDeleted != true && t.IsDraft == false).ToList();
                        HttpContext.Current.Cache["roles"] = roles;
                    }

                    var actions = roles.Where(t => user.Roles.Any(r => r.RoleId == t.Id)).ToList().SelectMany(t => t.Actions).ToList();

                    if (!actions.Any(t => t.ActionName == AppActions.Restore_Delete))
                    {
                        query = query.Where(t => t.IsDeleted != true);
                    }
                } catch (Exception exc) {
                    ErrorLog(exc);
                    query = query.Where(t => t.IsDeleted != true);
                }
            }
            else
            {
                query = query.Where(t => t.IsDeleted != true);
            }

            result.recordsTotal = query.Count();

            query = GetDynamicFilteredData(query, form);

            result.recordsFiltered = query.Count();

            result.data = Mapper.Map <List <TModel>, List <TForm> >(GetPaging(query, form).ToList());
            result.draw = form.draw;

            return(result);
        }
 public virtual DttResponseForm <TForm> GetDynamicList(DttRequestForm form)
 {
     return(ProcessDatatableResult <TForm, TModel>(context.Set <TModel>().IncludeAll(Includes), form));//Filter<T>(context.Set<TModel>().IncludeAll(Includes).Where(t => t.IsDeleted != true), form);
 }
Beispiel #8
0
 public virtual ActionResult GetList(DttRequestForm form)
 {
     return(GetListAction(form).Action);
 }