Exemple #1
0
        public async Task <IActionResult> LoadUsers(DatatableRequest datatable)
        {
            var page = datatable.Pagination.Page;

            var limit = datatable.Pagination.PerPage;

            var filter = await datatable.Query.Get("filter", () => Task.FromResult <string?>(null),
                                                   s => string.IsNullOrWhiteSpace(s)?null : s.Trim());

            var instances = await _userService.LoadUsersAsync(filter, page, limit);

            var totalPages = (instances.TotalCount + limit - 1) / limit;

            var list = instances.Rows.ToList();

            var meta = new
            {
                page,
                perpage = limit,
                pages   = totalPages,
                total   = instances.TotalCount
            };

            return(Ok(new
            {
                meta,
                data = list
            }));
        }
        public ActionResult GetData([FromBody] DatatableRequest request)
        {
            if (request.columns != null)
            {
                foreach (var column in request.columns)
                {
                    if (column.search == null)
                    {
                        continue;
                    }
                    switch (column.name)
                    {
                    case "roles":
                        column.search.field    = "roles.Select(r=>r.roleId)";
                        column.search.Operator = FilterOperator.Contains;
                        break;

                    default:
                        column.search.Operator = FilterOperator.Contains;
                        break;
                    }
                }
            }
            DatatableResult <UserGridViewModel> users = _userRepository.GetUserViewModels(request);

            return(Json(users));
        }
        public async Task <TResponse <DatatableResponse <UserModel> > > GetByPaging(DatatableRequest request)
        {
            try
            {
                string username = string.Empty;
                string order    = "Id";
                string dir      = "desc";

                if (request?.Columns != null)
                {
                    if (request.Columns.Any())
                    {
                        username = request.Columns[0]
                                   .Search?.Value;

                        if (request.Order != null)
                        {
                            if (request.Order.Any())
                            {
                                order = request.Columns[request.Order[0]
                                                        .Column]
                                        .Data;
                                dir = request.Order[0]
                                      .Dir;
                            }
                        }
                    }
                }

                int page     = 1;
                int pageSize = 20;
                if (request?.Start > 0)
                {
                    page = (request.Start / request.Length) + 1;
                }

                string url = BaseUrl + string.Format(ApiUrl.USER_GET_PAGING, username, page, pageSize, order, dir);

                var response = await HttpService.Send <PageResult <UserModel> >(url, null, HttpMethod.Get);

                if (response.IsSuccess)
                {
                    return(await Ok(new DatatableResponse <UserModel>
                    {
                        Draw = request?.Draw ?? 1,
                        RecordsFiltered = response.Data.TotalCount,
                        RecordsTotal = response.Data.TotalCount,
                        Data = response.Data.Data.ToList()
                    }));
                }

                return(await Fail <DatatableResponse <UserModel> >(response.Message));
            }
            catch (Exception exception)
            {
                return(await Fail <DatatableResponse <UserModel> >(exception));
            }
        }
        public DatatableResult <T> GetDatatableResult(DatatableRequest request,
                                                      Expression <Func <T, bool> > predicate = null,
                                                      Func <IQueryable <T>, IOrderedQueryable <T> > orderBy            = null,
                                                      Func <IQueryable <T>, IIncludableQueryable <T, object> > include = null,
                                                      bool disableTracking = true)
        {
            IQueryable <T> query = List(predicate, orderBy, include, disableTracking);

            return(query.ToDatatableResult(request));
        }
Exemple #5
0
        public async Task <IActionResult> GetList(DatatableRequest request)
        {
            var result = await _customerVipService.GetByPaging(request);

            if (result.IsSuccess)
            {
                return(Json(result.Data));
            }

            return(Json(DatatableResponse <GetCustomerVipPagingResponse> .Init(request.Draw)));
        }
        public async Task <IActionResult> GetList(DatatableRequest request)
        {
            var result = await _userService.GetByPaging(request);

            if (result.IsSuccess)
            {
                return(Json(result.Data));
            }

            return(null);
        }
        public async Task <IActionResult> GetRole(DatatableRequest request)
        {
            var result = await _roleService.GetByUserId(request);

            if (result.IsSuccess)
            {
                return(Json(result.Data));
            }

            return(null);
        }
        public async Task <IActionResult> GetMyResources([FromBody] DatatableRequest datatableRequest)
        {
            var subject      = User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value;
            var searchResult = await _resourcesActions.GetCurrentUserResources(new SearchCurrentUserResourceSetParameter
            {
                Count      = datatableRequest.Length,
                StartIndex = datatableRequest.Start,
                Owner      = subject
            }).ConfigureAwait(false);

            var result = Convert(datatableRequest, _mappinNameToCallback, searchResult);

            return(new JsonResult(result));
        }
        private static DatatableResponse Convert(DatatableRequest datatableRequest, Dictionary <string, Func <ResourceSet, string> > mapping, SearchResourceSetResult searchResult)
        {
            var response = new DatatableResponse();
            var data     = new List <List <object> >();

            if (searchResult.Content != null)
            {
                foreach (var resource in searchResult.Content)
                {
                    var row = new List <object>();
                    foreach (var column in datatableRequest.Columns.OrderBy(c => c.Data))
                    {
                        if (!mapping.ContainsKey(column.Name))
                        {
                            continue;
                        }

                        row.Add(mapping[column.Name](resource));
                    }

                    row.Add(resource.Scopes);
                    row.Add(resource.Id);
                    var policies = new List <ResourcePolicyResponse>();
                    if (resource.AuthPolicies != null)
                    {
                        foreach (var policy in resource.AuthPolicies)
                        {
                            policies.Add(new ResourcePolicyResponse
                            {
                                PolicyId    = policy.Id,
                                Permissions = policy.Claims.Select(c => $"{c.Type} : {c.Value}"),
                                Scopes      = policy.Scopes
                            });
                        }
                    }

                    row.Add(policies);
                    data.Add(row);
                }
            }

            return(new DatatableResponse
            {
                Draw = datatableRequest.Draw,
                Data = data,
                RecordsFiltered = searchResult.TotalResults,
                RecordsTotal = searchResult.TotalResults
            });
        }
Exemple #10
0
        public DatatableResult <UserGridViewModel> GetUserViewModels(DatatableRequest request)
        {
            var query = this.All.Select(p => new UserGridViewModel
            {
                Id           = p.Id,
                FullName     = p.FullName,
                UserName     = p.UserName,
                Email        = p.Email,
                PhoneNo      = p.PhoneNo,
                ProfileImage = p.ProfileImage,
                Roles        = p.UserRole.Select(r => new UserRoleGridViewModel {
                    RoleId = r.RoleId, RoleName = r.Role.RoleName
                })
            });

            return(query.ToDatatableResult(request));
        }
        public DatatableResult <CustomerViewModel> GetCustomerViewModel(DatatableRequest request)
        {
            var query = All.Select(model => new CustomerViewModel()
            {
                Id               = model.Id,
                Email            = model.Email,
                FirstName        = model.FullName,
                PhoneNo          = model.PhoneNo,
                Address          = model.Address,
                District         = model.District,
                Province         = model.Province,
                Point            = model.TongDiemTichLuy(),
                TenLoaiKhachHang = ""
            });

            return(query.ToDatatableResult(request));
        }
Exemple #12
0
        public async Task <ActionResult> GetDataCustomer([FromBody] DatatableRequest request)
        {
            if (request.columns != null)
            {
                foreach (var column in request.columns)
                {
                    if (column.search == null)
                    {
                        continue;
                    }
                    switch (column.name)
                    {
                    case "roles":
                        column.search.field    = "roles.Select(r=>r.roleId)";
                        column.search.Operator = FilterOperator.Contains;
                        break;

                    default:
                        column.search.Operator = FilterOperator.Contains;
                        break;
                    }
                }
            }
            var users        = _accountRepository.GetCustomerViewModel(request);
            var listdictrict = await _dictrictRepository.All.ToListAsync();

            var listprovince = await _provinceRepository.All.ToListAsync();

            var listdiemtichluy = await _diemTichLuy.All.ToListAsync();

            foreach (var item in users.data)
            {
                item.Address ??= "";
                item.District         = listdictrict.FirstOrDefault(x => x.Id == item.District)?.Name ?? "";
                item.Province         = listprovince.FirstOrDefault(x => x.Id == item.Province)?.Name ?? "";
                item.Point            = listdiemtichluy.Where(x => x.IdKhachHang == item.Id).Sum(x => x.Diem);
                item.TenLoaiKhachHang = _phanQuyenRepository.All.Include(x => x.Quyen)
                                        .FirstOrDefault(x => x.MaTaiKhoan == item.Id)
                                        ?.Quyen.TenQuyen;
            }
            users.data = users.data.Where(x => x.TenLoaiKhachHang.ToLower().Contains("Khách".ToLower()));
            return(await Task.Run(() => Json(users)));
        }
Exemple #13
0
        public async Task <IActionResult> GetPendingRequests([FromBody] DatatableRequest datatableRequest)
        {
            var subject      = User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value;
            var searchResult = await _pendingRequestsActions.GetPendingRequests(new GetPendingRequestsParameter
            {
                Count      = datatableRequest.Length,
                StartIndex = datatableRequest.Start,
                Subject    = subject
            }).ConfigureAwait(false);

            var data = new List <List <object> >();

            if (searchResult.PendingRequests != null)
            {
                foreach (var pendingRequest in searchResult.PendingRequests)
                {
                    var row = new List <object>();
                    foreach (var column in datatableRequest.Columns.OrderBy(c => c.Data))
                    {
                        if (!_mappinNameToCallback.ContainsKey(column.Name))
                        {
                            continue;
                        }

                        row.Add(_mappinNameToCallback[column.Name](pendingRequest));
                    }

                    row.Add(pendingRequest.Id);
                    data.Add(row);
                }
            }

            var response = new DatatableResponse
            {
                Draw            = datatableRequest.Draw,
                RecordsFiltered = searchResult.TotalResults,
                RecordsTotal    = searchResult.TotalResults,
                Data            = data
            };

            return(new JsonResult(response));
        }
        public async Task <TResponse <DatatableResponse <RoleModel> > > GetByUserId(DatatableRequest request)
        {
            try
            {
                int page     = 1;
                int pageSize = 10;
                if (request?.Start > 0)
                {
                    page = (request.Start / request.Length) + 1;
                }

                int.TryParse(request?.Columns[0]
                             .Search?.Value, out var userId);

                string url = _baseUrl + string.Format(ApiUrl.ROLE_GET_BY_USER_ID, userId, page, pageSize);

                var response = await HttpService.Send <PageResult <RoleModel> >(url, null, HttpMethod.Get);

                if (response.IsSuccess)
                {
                    return(await Ok(new DatatableResponse <RoleModel>
                    {
                        Draw = request?.Draw ?? 1,
                        RecordsFiltered = response.Data.TotalCount,
                        RecordsTotal = response.Data.TotalCount,
                        Data = response.Data.Data.ToList()
                    }));
                }

                return(await Fail <DatatableResponse <RoleModel> >(response.Message));
            }
            catch (Exception exception)
            {
                return(await Fail <DatatableResponse <RoleModel> >(exception));
            }
        }
Exemple #15
0
        public async Task <TResponse <DatatableResponse <GetCustomerPagingResponse> > > GetByPaging(DatatableRequest request)
        {
            try
            {
                var code            = string.Empty;
                var name            = string.Empty;
                var provinceId      = 0;
                var districtId      = 0;
                var wardId          = 0;
                var address         = string.Empty;
                var phone           = string.Empty;
                var email           = string.Empty;
                var customerGroupId = 0;
                var customerVipId   = 0;
                if (request?.Columns != null)
                {
                    if (request.Columns.Any())
                    {
                        code = request.Columns[0]
                               .Search?.Value ?? string.Empty;
                        name = request.Columns[1]
                               .Search?.Value ?? string.Empty;
                        var province = request.Columns[2]
                                       .Search?.Value ?? string.Empty;
                        var district = request.Columns[3]
                                       .Search?.Value ?? string.Empty;
                        var ward = request.Columns[4]
                                   .Search?.Value ?? string.Empty;
                        address = request.Columns[5]
                                  .Search?.Value ?? string.Empty;
                        phone = request.Columns[6]
                                .Search?.Value ?? string.Empty;
                        email = request.Columns[7]
                                .Search?.Value ?? string.Empty;
                        var customerGroup = request.Columns[8]
                                            .Search?.Value ?? string.Empty;
                        var customerVip = request.Columns[9]
                                          .Search?.Value ?? string.Empty;

                        if (!string.IsNullOrEmpty(province))
                        {
                            int.TryParse(province,
                                         out provinceId);
                        }

                        if (!string.IsNullOrEmpty(district))
                        {
                            int.TryParse(district,
                                         out districtId);
                        }

                        if (!string.IsNullOrEmpty(ward))
                        {
                            int.TryParse(ward,
                                         out wardId);
                        }

                        if (!string.IsNullOrEmpty(customerGroup))
                        {
                            int.TryParse(customerGroup,
                                         out customerGroupId);
                        }

                        if (!string.IsNullOrEmpty(customerVip))
                        {
                            int.TryParse(customerVip,
                                         out customerVipId);
                        }
                    }
                }

                var start = 1;

                if (request != null)
                {
                    start = request.Start / request.Length + 1;
                }

                var columnOrder = "date_updated";
                var sortDir     = "DESC";

                if (request?.Order != null &&
                    request.Order.Any())
                {
                    if (request.Columns != null)
                    {
                        columnOrder = request.Columns[request.Order[0]
                                                      .Column]
                                      .Data;
                        sortDir = request.Order[0]
                                  .Dir.ToUpper();
                    }
                }

                var url = string.Format(ApiUrl.CUSTOMER_GET_BY_PAGING,
                                        code,
                                        name,
                                        provinceId,
                                        districtId,
                                        wardId,
                                        address,
                                        phone,
                                        email,
                                        customerGroupId,
                                        customerVipId,
                                        start,
                                        request?.Length ?? 10,
                                        columnOrder,
                                        sortDir);

                var response = await HttpService.Send <PageResult <GetCustomerPagingResponse> >(url,
                                                                                                null,
                                                                                                HttpMethod.Get,
                                                                                                true);

                if (response.IsSuccess)
                {
                    return(await Ok(new DatatableResponse <GetCustomerPagingResponse>
                    {
                        Draw = request?.Draw ?? 1,
                        RecordsFiltered = response.Data.TotalCount,
                        RecordsTotal = response.Data.TotalCount,
                        Data = response.Data.Data.ToList()
                    }));
                }

                return(await Fail <DatatableResponse <GetCustomerPagingResponse> >(response.Message));
            }
            catch (Exception exception)
            {
                return(await Fail <DatatableResponse <GetCustomerPagingResponse> >(exception));
            }
        }
        public async Task <TResponse <DatatableResponse <GetCustomerGroupPagingResponse> > > GetByPaging(DatatableRequest request)
        {
            try
            {
                var name = string.Empty;
                if (request?.Columns != null)
                {
                    if (request.Columns.Any())
                    {
                        name = request.Columns[0]
                               .Search?.Value ?? string.Empty;
                    }
                }

                var start = 1;

                if (request != null)
                {
                    start = request.Start / request.Length + 1;
                }

                var columnOrder = "name";
                var sortDir     = "ASC";

                if (request?.Order != null &&
                    request.Order.Any())
                {
                    if (request.Columns != null)
                    {
                        columnOrder = request.Columns[request.Order[0]
                                                      .Column]
                                      .Data;
                        sortDir = request.Order[0]
                                  .Dir.ToUpper();
                    }
                }

                var url = string.Format(ApiUrl.CUSTOMER_GROUP_GET_BY_PAGING,
                                        name,
                                        start,
                                        request?.Length ?? 10,
                                        columnOrder,
                                        sortDir);

                var response = await HttpService.Send <PageResult <GetCustomerGroupPagingResponse> >(url,
                                                                                                     null,
                                                                                                     HttpMethod.Get,
                                                                                                     true);

                if (response.IsSuccess)
                {
                    return(await Ok(new DatatableResponse <GetCustomerGroupPagingResponse>
                    {
                        Draw = request?.Draw ?? 1,
                        RecordsFiltered = response.Data.TotalCount,
                        RecordsTotal = response.Data.TotalCount,
                        Data = response.Data.Data.ToList()
                    }));
                }

                return(await Fail <DatatableResponse <GetCustomerGroupPagingResponse> >(response.Message));
            }
            catch (Exception exception)
            {
                return(await Fail <DatatableResponse <GetCustomerGroupPagingResponse> >(exception));
            }
        }
Exemple #17
0
        public async Task <TResponse <DatatableResponse <GetUserPagingResponse> > > GetByPaging(DatatableRequest request)
        {
            try
            {
                var code         = string.Empty;
                var fullName     = string.Empty;
                var phoneNumber  = string.Empty;
                var branchId     = 0;
                var departmentId = 0;
                var roleId       = 0;
                var status       = -1;
                if (request?.Columns != null)
                {
                    if (request.Columns.Any())
                    {
                        code = request.Columns[0]
                               .Search?.Value ?? string.Empty;
                        fullName = request.Columns[1]
                                   .Search?.Value ?? string.Empty;
                        phoneNumber = request.Columns[2]
                                      .Search?.Value ?? string.Empty;
                        int.TryParse(request.Columns[3]
                                     .Search?.Value ?? string.Empty,
                                     out branchId);
                        int.TryParse(request.Columns[4]
                                     .Search?.Value ?? string.Empty,
                                     out departmentId);
                        int.TryParse(request.Columns[5]
                                     .Search?.Value ?? string.Empty,
                                     out roleId);
                        int.TryParse(request.Columns[6]
                                     .Search?.Value ?? string.Empty,
                                     out status);
                    }
                }

                var start = 1;

                if (request != null)
                {
                    start = request.Start / request.Length + 1;
                }

                var columnOrder = "code";
                var sortDir     = "ASC";

                if (request?.Order != null &&
                    request.Order.Any())
                {
                    if (request.Columns != null)
                    {
                        columnOrder = request.Columns[request.Order[0]
                                                      .Column]
                                      .Data;
                        sortDir = request.Order[0]
                                  .Dir.ToUpper();
                    }
                }

                var url = string.Format(ApiUrl.USER_GET_BY_PAGING,
                                        code,
                                        fullName,
                                        phoneNumber,
                                        branchId,
                                        departmentId,
                                        roleId,
                                        status,
                                        start,
                                        request?.Length ?? 10,
                                        columnOrder,
                                        sortDir);

                var response = await HttpService.Send <PageResult <GetUserPagingResponse> >(url,
                                                                                            null,
                                                                                            HttpMethod.Get,
                                                                                            true);

                if (response.IsSuccess)
                {
                    return(await Ok(new DatatableResponse <GetUserPagingResponse>
                    {
                        Draw = request?.Draw ?? 1,
                        RecordsFiltered = response.Data.TotalCount,
                        RecordsTotal = response.Data.TotalCount,
                        Data = response.Data.Data.ToList()
                    }));
                }

                return(await Fail <DatatableResponse <GetUserPagingResponse> >(response.Message));
            }
            catch (Exception exception)
            {
                return(await Fail <DatatableResponse <GetUserPagingResponse> >(exception));
            }
        }
Exemple #18
0
        public async Task <TResponse <DatatableResponse <GetCrmPagingResponse> > > GetByPaging(DatatableRequest request)
        {
            try
            {
                var      code             = string.Empty;
                var      customerCode     = string.Empty;
                var      customerName     = string.Empty;
                var      customerPhone    = string.Empty;
                var      customerAddress  = string.Empty;
                int      provinceId       = 0;
                int      districtId       = 0;
                int      wardId           = 0;
                int      customerGroupId  = 0;
                int      customerVipId    = 0;
                int      customerSourceId = 0;
                int      productGroupId   = 0;
                int      crmStatusId      = 0;
                int      crmTypeId        = 0;
                int      crmPriorityId    = 0;
                int      visit            = -1;
                DateTime?fromDate         = null;
                DateTime?toDate           = null;
                int      userCreatedId    = 0;
                DateTime?dateCreated      = null;
                int      userCareId       = 0;
                string   need             = string.Empty;

                if (request?.Columns != null)
                {
                    if (request.Columns.Any())
                    {
                        code = request.Columns[0]
                               .Search?.Value ?? string.Empty;
                        customerCode = request.Columns[1]
                                       .Search?.Value ?? string.Empty;
                        customerName = request.Columns[2]
                                       .Search?.Value ?? string.Empty;
                        customerPhone = request.Columns[3]
                                        .Search?.Value ?? string.Empty;
                        customerAddress = request.Columns[4]
                                          .Search?.Value ?? string.Empty;

                        var province = request.Columns[5]
                                       .Search?.Value ?? string.Empty;
                        var district = request.Columns[6]
                                       .Search?.Value ?? string.Empty;
                        var ward = request.Columns[7]
                                   .Search?.Value ?? string.Empty;
                        var customerGroup = request.Columns[8]
                                            .Search?.Value ?? string.Empty;
                        var customerVip = request.Columns[9]
                                          .Search?.Value ?? string.Empty;
                        var customerSource = request.Columns[10]
                                             .Search?.Value ?? string.Empty;
                        var productGroup = request.Columns[11]
                                           .Search?.Value ?? string.Empty;
                        var crmStatus = request.Columns[12]
                                        .Search?.Value ?? string.Empty;
                        var crmType = request.Columns[13]
                                      .Search?.Value ?? string.Empty;
                        var crmPriority = request.Columns[14]
                                          .Search?.Value ?? string.Empty;
                        var sVisit = request.Columns[15]
                                     .Search?.Value ?? string.Empty;
                        var fromContactDate = request.Columns[16]
                                              .Search?.Value ?? string.Empty;
                        var toContactDate = request.Columns[17]
                                            .Search?.Value ?? string.Empty;
                        var userCreated = request.Columns[18]
                                          .Search?.Value ?? string.Empty;
                        var sDateCreated = request.Columns[19]
                                           .Search.Value ?? string.Empty;
                        var userCare = request.Columns[20]
                                       .Search.Value ?? string.Empty;
                        need = request.Columns[21]
                               .Search?.Value ?? string.Empty;

                        if (!string.IsNullOrEmpty(province))
                        {
                            int.TryParse(province,
                                         out provinceId);
                        }

                        if (!string.IsNullOrEmpty(district))
                        {
                            int.TryParse(district,
                                         out districtId);
                        }

                        if (!string.IsNullOrEmpty(ward))
                        {
                            int.TryParse(ward,
                                         out wardId);
                        }

                        if (!string.IsNullOrEmpty(customerGroup))
                        {
                            int.TryParse(customerGroup,
                                         out customerGroupId);
                        }

                        if (!string.IsNullOrEmpty(customerVip))
                        {
                            int.TryParse(customerVip,
                                         out customerVipId);
                        }

                        if (!string.IsNullOrEmpty(customerSource))
                        {
                            int.TryParse(customerSource,
                                         out customerSourceId);
                        }

                        if (!string.IsNullOrEmpty(productGroup))
                        {
                            int.TryParse(productGroup,
                                         out productGroupId);
                        }

                        if (!string.IsNullOrEmpty(crmStatus))
                        {
                            int.TryParse(crmStatus,
                                         out crmStatusId);
                        }

                        if (!string.IsNullOrEmpty(crmType))
                        {
                            int.TryParse(crmType,
                                         out crmTypeId);
                        }

                        if (!string.IsNullOrEmpty(crmPriority))
                        {
                            int.TryParse(crmPriority,
                                         out crmPriorityId);
                        }

                        if (!string.IsNullOrEmpty(sVisit))
                        {
                            int.TryParse(sVisit,
                                         out visit);
                        }

                        DateTime tmpDate;

                        if (!string.IsNullOrEmpty(fromContactDate))
                        {
                            if (DateTime.TryParse(fromContactDate,
                                                  out tmpDate))
                            {
                                fromDate = tmpDate;
                            }
                        }

                        if (!string.IsNullOrEmpty(toContactDate))
                        {
                            if (DateTime.TryParse(toContactDate,
                                                  out tmpDate))
                            {
                                toDate = tmpDate;
                            }
                        }

                        if (!string.IsNullOrEmpty(userCreated))
                        {
                            int.TryParse(userCreated,
                                         out userCreatedId);
                        }

                        if (!string.IsNullOrEmpty(sDateCreated))
                        {
                            if (DateTime.TryParse(sDateCreated,
                                                  out tmpDate))
                            {
                                dateCreated = tmpDate;
                            }
                        }

                        if (!string.IsNullOrEmpty(userCare))
                        {
                            int.TryParse(userCare,
                                         out userCareId);
                        }
                    }
                }

                var start = 1;

                if (request != null)
                {
                    start = request.Start / request.Length + 1;
                }

                var url = string.Format(ApiUrl.CRM_GET_BY_PAGING,
                                        code,
                                        customerCode,
                                        customerName,
                                        customerPhone,
                                        customerAddress,
                                        provinceId,
                                        districtId,
                                        wardId,
                                        customerGroupId,
                                        customerVipId,
                                        customerSourceId,
                                        productGroupId,
                                        crmStatusId,
                                        crmTypeId,
                                        crmPriorityId,
                                        visit,
                                        fromDate,
                                        toDate,
                                        userCreatedId,
                                        dateCreated,
                                        userCareId,
                                        need,
                                        start,
                                        request?.Length ?? 10);

                var response = await HttpService.Send <PageResult <GetCrmPagingResponse> >(url,
                                                                                           null,
                                                                                           HttpMethod.Get,
                                                                                           true);

                if (response.IsSuccess)
                {
                    return(await Ok(new DatatableResponse <GetCrmPagingResponse>
                    {
                        Draw = request?.Draw ?? 1,
                        RecordsFiltered = response.Data.TotalCount,
                        RecordsTotal = response.Data.TotalCount,
                        Data = response.Data.Data.ToList()
                    }));
                }

                return(await Fail <DatatableResponse <GetCrmPagingResponse> >(response.Message));
            }
            catch (Exception exception)
            {
                return(await Fail <DatatableResponse <GetCrmPagingResponse> >(exception));
            }
        }