HydroServerToolsRepository.Repository.GroupDescriptionsRepository.GetGroupDescriptions C# (CSharp) Méthode

GetGroupDescriptions() public méthode

public GetGroupDescriptions ( string connectionString, int startIndex, int pageSize, System sortedColumns, int &totalRecordCount, int &searchRecordCount, string searchString ) : List
connectionString string
startIndex int
pageSize int
sortedColumns System
totalRecordCount int
searchRecordCount int
searchString string
Résultat List
        public List<GroupDescriptionModel> GetGroupDescriptions(string connectionString, int startIndex, int pageSize, System.Collections.ObjectModel.ReadOnlyCollection<jQuery.DataTables.Mvc.SortedColumn> sortedColumns, out int totalRecordCount, out int searchRecordCount, string searchString)
        {
            var context = new ODM_1_1_1EFModel.ODM_1_1_1Entities(connectionString);
            var result = new List<GroupDescriptionModel>();

            if (context.GroupDescriptions.Count() != null)
            {
                totalRecordCount = context.GroupDescriptions.Count();
                searchRecordCount = totalRecordCount;
            }
            else
            {
                totalRecordCount = searchRecordCount = 0;
            }
            if (!string.IsNullOrWhiteSpace(searchString))
            {
                var allItems = context.GroupDescriptions.ToList();
                var rst = allItems.
                    Where(c =>
                                 c.GroupID.ToString().ToLower().Contains(searchString.ToLower())
                             || c.GroupDescription1 != null && c.GroupDescription1.ToLower().Contains(searchString.ToLower())
                          );
                if (rst == null) return result;
                //count
                searchRecordCount = rst.Count();
                //take only top x
                var finalrst = rst.Take(pageSize).ToList();

                foreach (var item in finalrst)
                {

                    var model = Mapper.Map<GroupDescription, GroupDescriptionModel>(item);

                    result.Add(model);
                }
            }

            else
            {
                List<GroupDescription> sortedItems = null;

                foreach (var sortedColumn in sortedColumns)
                {
                    switch (sortedColumn.PropertyName.ToLower())
                    {
                        case "0":
                            if (sortedColumn.Direction.ToString().ToLower() == "ascending")
                            { sortedItems = context.GroupDescriptions.OrderBy(a => a.GroupID).Skip(startIndex).Take(pageSize).ToList(); }
                            else
                            { sortedItems = context.GroupDescriptions.OrderByDescending(a => a.GroupID).Skip(startIndex).Take(pageSize).ToList(); }
                            break;
                        case "1":
                            if (sortedColumn.Direction.ToString().ToLower() == "ascending")
                            { sortedItems = context.GroupDescriptions.OrderBy(a => a.GroupDescription1).Skip(startIndex).Take(pageSize).ToList(); }
                            else
                            { sortedItems = context.GroupDescriptions.OrderByDescending(a => a.GroupDescription1).Skip(startIndex).Take(pageSize).ToList(); }
                            break;

                    }
                }

                if (sortedItems == null) sortedItems = context.GroupDescriptions.OrderByDescending(a => a.GroupID).Skip(startIndex).Take(pageSize).ToList();

                //map models
                foreach (var item in sortedItems)
                {

                    var model = Mapper.Map<GroupDescription, GroupDescriptionModel>(item);

                    result.Add(model);
                }
            }
            return result;
        }

Usage Example

        public JsonResult GroupDescriptionSearch(JQueryDataTablesModel jQueryDataTablesModel, string identifier)
        {
            int totalRecordCount;
            int searchRecordCount;

            //Get Connection string
            var entityConnectionString = HydroServerToolsUtils.BuildConnectionStringForUserName(HttpContext.User.Identity.Name);
            //var entityConnectionString = HydroServerToolsUtils.GetDBEntityConnectionStringByName(connectionName);

            if (String.IsNullOrEmpty(entityConnectionString))
            {
                ModelState.AddModelError(String.Empty, Ressources.HYDROSERVER_USERLOOKUP_FAILED);

            }

            var repository = new GroupDescriptionsRepository();
            var items = repository.GetGroupDescriptions(entityConnectionString, startIndex: jQueryDataTablesModel.iDisplayStart,
                pageSize: jQueryDataTablesModel.iDisplayLength, sortedColumns: jQueryDataTablesModel.GetSortedColumns(),
                totalRecordCount: out totalRecordCount, searchRecordCount: out searchRecordCount, searchString: jQueryDataTablesModel.sSearch);

            var result = from c in items
                         select new[] {
                            c.GroupID,
                            c.GroupDescription
                };

            return this.DataTablesJson(items: result,
                totalRecords: totalRecordCount,
                totalDisplayRecords: searchRecordCount,
                sEcho: jQueryDataTablesModel.sEcho);
        }