Esempio n. 1
0
        public IHttpActionResult Post(FilterUserLogModel request)
        {
            var query = db.UserLog.Select(s => new UserLogModel
            {
                Id        = s.Id,
                UserName  = s.User.Name,
                Module    = s.Module,
                UserId    = s.UserId,
                LogDate   = s.LogDate,
                Activity  = s.Activity,
                Details   = s.Details,
                IPAddress = s.IPAddress
            });

            var totalCount = query.Count();

            //advance search
            query = query.Where(s => (request.UserName == null || s.UserName.Contains(request.UserName)) &&
                                (request.Module == null || s.Module == request.Module) &&
                                (request.Activity == null || s.Activity.Contains(request.Activity)) &&
                                (request.Details == null || s.Details.Contains(request.Details)) &&
                                (request.IPAddress == null || s.IPAddress.Contains(request.IPAddress)) &&
                                (request.LogDateFrom == null || request.LogDateTo == null || DbFunctions.TruncateTime(s.LogDate) <= DbFunctions.TruncateTime(request.LogDateTo) && DbFunctions.TruncateTime(s.LogDate) >= DbFunctions.TruncateTime(request.LogDateFrom))
                                );

            //quick search
            if (!string.IsNullOrEmpty(request.search.value))
            {
                var value = request.search.value.Trim();

                query = query.Where(p => p.UserName.Contains(value) ||
                                    p.Activity.Contains(value) ||
                                    p.Details.Contains(value) ||
                                    p.IPAddress.Contains(value)
                                    );
            }

            var filteredCount = query.Count();

            //order
            if (request.order != null)
            {
                string sortBy        = request.columns[request.order[0].column].data;
                bool   sortAscending = request.order[0].dir.ToLower() == "asc";

                switch (sortBy)
                {
                case "UserName":

                    if (sortAscending)
                    {
                        query = query.OrderBy(o => o.UserName);
                    }
                    else
                    {
                        query = query.OrderByDescending(o => o.UserName);
                    }

                    break;

                case "Module":

                    if (sortAscending)
                    {
                        query = query.OrderBy(o => o.Module);
                    }
                    else
                    {
                        query = query.OrderByDescending(o => o.Module);
                    }

                    break;

                case "Activity":

                    if (sortAscending)
                    {
                        query = query.OrderBy(o => o.Activity);
                    }
                    else
                    {
                        query = query.OrderByDescending(o => o.Activity);
                    }

                    break;

                case "LogDate":

                    if (sortAscending)
                    {
                        query = query.OrderBy(o => o.LogDate);
                    }
                    else
                    {
                        query = query.OrderByDescending(o => o.LogDate);
                    }

                    break;

                default:
                    query = query.OrderByDescending(o => o.LogDate);
                    break;
                }
            }
            else
            {
                query = query.OrderByDescending(o => o.LogDate);
            }

            var data = query.Skip(request.start).Take(request.length).ToList();

            data.ForEach(s =>
            {
                s.ModuleDesc = s.Module.GetDisplayName();
            });

            return(Ok(new DataTableResponse
            {
                draw = request.draw,
                recordsTotal = totalCount,
                recordsFiltered = filteredCount,
                data = data.ToArray()
            }));
        }
Esempio n. 2
0
        public async Task <ActionResult> List(FilterUserLogModel filter)
        {
            var response = await WepApiMethod.SendApiAsync <DataTableResponse>(HttpVerbs.Post, $"Logs/UserLog/GetAll", filter);

            return(Content(JsonConvert.SerializeObject(response.Data), "application/json"));
        }