public async Task <FadActionResult <T> > QueryAsync(GridQueryModel args = null, IList <string> fields = null)
        {
            var type = System.Reflection.Assembly.GetExecutingAssembly().GetType(nameof(args.Entity));

            var actionResult = new FadActionResult <T>();

            var query = _context.Set <T>().AsQueryable();

            //filter
            if (args != null && args.Filtered != null && args.Filtered.Length > 0)
            {
                var filterExpression = GridQueryUtility.FilterExpression <T>(args.Filtered[0].id, args.Filtered[0].value);
                for (int i = 1; i < args.Filtered.Length; i++)
                {
                    filterExpression = GridQueryUtility.FilterExpression <T>(args.Filtered[i].id, args.Filtered[i].value);
                }
                query = query.Where(filterExpression);
            }

            //total count
            var total = await query.CountAsync();

            //sort
            if (args != null && args.Sorted != null && args.Sorted.Length > 0)
            {
                for (int i = 0; i < args.Sorted.Length; i++)
                {
                    query = query.SortBy(args.Sorted[i].id, args.Sorted[i].desc);
                }
            }


            //projection
            if (fields != null)
            {
                query = query.SelectDynamic(fields);
            }

            var result = await query.Skip(args.Page *args.PageSize)
                         .Take(args.PageSize)
                         .ToListAsync();

            actionResult.Data        = result;
            actionResult.TotalCount  = Convert.ToInt32(Math.Ceiling(total / (float)args.PageSize));;
            actionResult.CurrentPage = args.Page;

            return(actionResult);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Get(int page = 1, int pageItems = 5)
        {
            var result = await _cityRepo.GetAsQueryable(page : page, pageItemCount : pageItems, includeProperties : "Province").ToListAsync();

            var model = _mapper.Map <List <CityViewModel> >(result);

            var actionResult = new FadActionResult <CityViewModel>();

            actionResult.Data        = model;
            actionResult.CurrentPage = page;
            actionResult.IsSuccess   = true;
            actionResult.TotalCount  = await _cityRepo.GetTotalRecordCountAsync();

            actionResult.Pages = Convert.ToInt32(Math.Ceiling((double)actionResult.TotalCount / pageItems));

            return(Ok(actionResult));
        }
Ejemplo n.º 3
0
        //[ValidateAntiForgeryToken]
        public async Task <IActionResult> Edit(int id, [Bind("Id,AreaName,AreaCaption,ControllerName,ControllerCaption,ActionName,ActionCaption,ActionType")] Permissions permissions)
        {
            //if (id != permissions.Id)
            //{
            //    return NotFound();
            //}

            var fadActionResult = new FadActionResult {
                IsSuccess = true
            };

            if (ModelState.IsValid)
            {
                try
                {
                    //int orginalId = Convert.ToInt32(EncyrptionUtility.Decrypt(id));
                    permissions.Id = id;

                    _context.Update(permissions);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    fadActionResult.IsSuccess = false;

                    return(Json(fadActionResult));

                    if (!PermissionsExists(permissions.Id))
                    {
                        return(Json(fadActionResult));
                    }
                    else
                    {
                        throw;
                    }
                }
                fadActionResult.Message = "با موفقیت بروزرسانی شد";
                return(Json(fadActionResult));
            }

            fadActionResult.IsSuccess = false;
            fadActionResult.Message   = "اطلاعات ارسالی صحیح نمی باشد";
            return(Json(fadActionResult));
        }