public async Task <ActionResultDto> Execute(ContextDto context)
        {
            try
            {
                init();
                validate();

                var whereClause = string.Format("MaChucNang LIKE N'%{0}%' OR TenChucNang LIKE N'%{0}%'", search);
                var orderClause = sortName + " " + sortDir;
                var total       = 0;

                ChucNangRepository    repo         = new ChucNangRepository(context);
                IEnumerable <dynamic> listChucNang = await repo.SelectAllByCriteriaProjection(fields, whereClause, orderClause, _start, _length);

                total = await repo.SelectAllByCriteriaCount(whereClause);

                dynamic _metaData = new System.Dynamic.ExpandoObject();
                _metaData.draw  = _draw;
                _metaData.total = total;

                return(returnActionResult(listChucNang, _metaData));
            }
            catch (FormatException ex)
            {
                return(returnActionError(HttpStatusCode.BadRequest, ex.InnerException != null ? ex.InnerException.Message : ex.Message));
            }
            catch (Exception ex)
            {
                return(returnActionError(HttpStatusCode.InternalServerError, ex.InnerException != null ? ex.InnerException.Message : ex.Message));
            }
        }