public async Task <PagedList <MdaDeviceStatus> > GetDeviceStatuses(MdaDeviceStatusQuery filter)
        {
            var query = _context.MdaDeviceStatus
                        .Include(d => d.MdaDevice)
                        .AsQueryable();

            // if (filter.PageSize == 0)
            //     filter.PageSize = 10;

            if (!string.IsNullOrEmpty(filter.Name))
            {
                query = query.Where(t => t.Name.Contains(filter.Name));
            }

            if (filter.Active == 0)
            {
                query = query.Where(d => d.Active == 0);
            }

            if (filter.Active == 1)
            {
                query = query.Where(d => d.Active == 1);
            }

            var columnsMap = new Dictionary <string, Expression <Func <MdaDevice, object> > >
            {
            };

            // query = query.ApplyOrdering(filter, columnsMap);

            // query = query.ApplyPaging(filter);

            // return await query.ToListAsync();
            return(await PagedList <MdaDeviceStatus> .CreateAsync(query, filter.Page, filter.PageSize));
        }
        public async Task <IActionResult> UpdateDeviceStatus(int id, [FromBody] DeviceStatusSaveResource deviceStatusSaveResource)
        {
            if (!_auth.IsAppAdmin(User))
            {
                return(NoContent());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            /* Prexistence Test */
            var filter = new MdaDeviceStatusQuery()
            {
                Name   = deviceStatusSaveResource.Name,
                Active = Convert.ToByte(deviceStatusSaveResource.Active == true ? 1 : 0)
            };
            var deviceStatusFromRepoExisting = await _repo.GetDeviceStatuses(filter);

            if (deviceStatusFromRepoExisting.Any())
            {
                return(BadRequest($"Device Status {deviceStatusSaveResource.Name} already exists."));
            }

            var deviceStatusFromRepo = await _repo.GetDeviceStatus(id);

            if (deviceStatusFromRepo == null)
            {
                return(BadRequest($"Device Status {id} could not be found."));
            }

            _mapper.Map <DeviceStatusSaveResource, MdaDeviceStatus>(deviceStatusSaveResource, deviceStatusFromRepo);
            deviceStatusFromRepo.ModifiedBy   = User.Identity.Name;
            deviceStatusFromRepo.ModifiedDate = DateTime.Now;

            if (await _repo.SaveAll())
            {
                return(NoContent());
            }

            return(BadRequest("Failed to update device status"));
        }
        public async Task <IActionResult> AddDeviceStatus([FromBody] DeviceStatusSaveResource deviceStatusSaveResource)
        {
            if (!_auth.IsAppAdmin(User))
            {
                return(NoContent());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            /* Prexistence Test */
            var filter = new MdaDeviceStatusQuery()
            {
                Name = deviceStatusSaveResource.Name
            };
            var deviceStatusFromRepo = await _repo.GetDeviceStatuses(filter);

            if (deviceStatusFromRepo.Any())
            {
                return(BadRequest($"Device Status {deviceStatusSaveResource.Name} already exists."));
            }

            var deviceStatus = _mapper.Map <MdaDeviceStatus>(deviceStatusSaveResource);

            deviceStatus.CreatedBy = User.Identity.Name;

            _repo.Add(deviceStatus);

            if (await _repo.SaveAll())
            {
                return(Ok(deviceStatus));
            }

            return(BadRequest("Failed to add device status"));
        }