// Pretraga za devicove,
        public async Task <List <Device> > DeviceSearch(DeviceSearchModel search)
        {
            var result = new List <Device>();

            //var types = from b in _context.DeviceTypes
            //            select b;

            var devices = from m in _context.Devices
                          select m;


            int skip = (search.PageNumber - 1) * search.NumberOfDevicesPerPage;

            if (search != null)
            {
                // U slucaju da se ne po1salje NumberOfDevicesPerPage dobicemo samo 5 devicova u rezultatu, default-na vrijednost je u DeviceSearchModel.cs

                if (!string.IsNullOrEmpty(search.Name))
                {
                    devices = devices.Where(n => n.Name.Contains(search.Name));
                }

                if (!string.IsNullOrEmpty(search.Type))
                {
                    devices = devices.Where(d => d.DeviceType.Name.Contains(search.Type));
                }

                result = await devices
                         .Include(dt => dt.DeviceType)
                         .ThenInclude(f => f.Features)
                         .Skip(skip)
                         .Take(search.NumberOfDevicesPerPage)
                         .ToListAsync();



                //result.Types = await types
                //        .Include(f => f.Features)
                //        .Include(p => p.Parent)
                //        .ToListAsync();


                //if (!string.IsNullOrEmpty(search.Name))
                //    result.Devices = await devices.Where(n => n.Name == search.Name)
                //        .Include(dt => dt.DeviceType)
                //        .ThenInclude(f => f.Features)
                //        .Skip(skip)
                //        .Take(search.NumberOfDevicesPerPage)
                //        .ToListAsync();
                //if (!string.IsNullOrEmpty(search.Type))
                //    result.Types = await types.Where(t => t.Name == search.Type)
                //        .Include(f => f.Features)
                //        .Include(p => p.Parent)
                //        .ToListAsync();
            }
            return(result);
        }
示例#2
0
        public async Task <IActionResult> DeviceList(DeviceSearchModel searchModel)
        {
            if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageDevices))
            {
                return(AccessDeniedKendoGridJson());
            }

            var model = await _deviceModelFactory.PrepareDeviceListModel(searchModel);

            return(Json(model));
        }
示例#3
0
        public async Task <DeviceSearchModel> PrepareDeviceSearchModel(DeviceSearchModel searchModel)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            await _baseModelFactory.PrepareStores(searchModel.AvailableStores);

            searchModel.SetGridPageSize();

            return(searchModel);
        }
示例#4
0
        public async Task <DeviceListModel> PrepareDeviceListModel(DeviceSearchModel searchModel)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            var devices = await _deviceService.GetDevicesAsync(
                storeIds : searchModel.SelectedStoreIds.ToArray(),
                serialNo : searchModel.SearchSerialNo,
                pageIndex : searchModel.Page - 1,
                pageSize : searchModel.PageSize);

            var model = new DeviceListModel
            {
                Data = devices.Select(device =>
                {
                    var devicesModel = device.ToModel <DeviceModel>();

                    devicesModel.SerialNo         = device.SerialNo;
                    devicesModel.ModelNo          = device.ModelNo;
                    devicesModel.SelectedStoreId  = device.StoreId;
                    devicesModel.StoreName        = device.Store != null ? device.Store.P_BranchNo + " - " + device.Store.P_Name : string.Empty;
                    devicesModel.CreatedOn        = _dateTimeHelper.ConvertToUserTime(device.CreatedOnUtc, DateTimeKind.Utc);
                    devicesModel.LastActivityDate = _dateTimeHelper.ConvertToUserTime(device.ModifiedOnUtc.GetValueOrDefault(DateTime.UtcNow), DateTimeKind.Utc);

                    return(devicesModel);
                }),
                Total = devices.TotalCount
            };

            // sort
            if (searchModel.Sort != null && searchModel.Sort.Any())
            {
                foreach (var s in searchModel.Sort)
                {
                    model.Data = await model.Data.Sort(s.Field, s.Dir);
                }
            }

            // filter
            if (searchModel.Filter?.Filters != null && searchModel.Filter.Filters.Any())
            {
                var filter = searchModel.Filter;
                model.Data = await model.Data.Filter(filter);

                model.Total = model.Data.Count();
            }

            return(model);
        }
示例#5
0
        public async Task <IActionResult> DeviceSearch(DeviceSearchModel search)
        {
            var result = await _unitOfWork.DeviceRepository.DeviceSearch(search);

            return(Ok(result));
        }