Esempio n. 1
0
        public JsonResult StatisticsAjax(IDataTablesRequest request, int battleID)
        {
            var data = battleRepository.GetParticipantsForBattle(battleID);

            var dataCount = data.Count();

            if (string.IsNullOrWhiteSpace(request.Search.Value) == false)
            {
                var query = request.Search.Value.Trim().ToLower();
                data = data.Where(p => p.Name.ToLower().Contains(query));
            }

            var dataFilteredCount = data.Count();

            if (request.Columns.Get("name").Sort != null)
            {
                data = data.OrderBy(p => p.Name, request.Columns.Get("name").Sort);
            }
            else if (request.Columns.Get("side").Sort != null)
            {
                data = data.OrderBy(p => p.IsAttacker, request.Columns.Get("side").Sort);
            }
            else if (request.Columns.Get("dmg").Sort != null)
            {
                data = data.OrderBy(p => p.Damage, request.Columns.Get("dmg").Sort);
            }
            else
            {
                data = data.OrderByDescending(p => p.ID);
            }

            data = data.Skip(request.Start).Take(request.Length);

            var war            = warRepository.GetWarAssociatedWithBattle(battleID);
            var attackerImgUrl = Images.GetCountryFlag(war.AttackerCountryID).Path;
            var defenderImgUrl = Images.GetCountryFlag(war.DefenderCountryID).Path;

            var dataPage = data.Select(p => new
            {
                id         = p.ID,
                name       = p.Name,
                sideImgUrl = p.IsAttacker ? attackerImgUrl : defenderImgUrl,
                damage     = p.Damage,
                imgUrl     = p.ImgUrl
            }).ToList();


            // Response creation. To create your response you need to reference your request, to avoid
            // request/response tampering and to ensure response will be correctly created.
            var response = DataTablesResponse.Create(request, dataCount, dataFilteredCount, dataPage);

            // Easier way is to return a new 'DataTablesJsonResult', which will automatically convert your
            // response to a json-compatible content, so DataTables can read it when received.
            return(new DataTablesJsonResult(response, JsonRequestBehavior.DenyGet));
        }