示例#1
0
        /// <summary>
        /// Gets the devices.
        /// </summary>
        /// <param name="customerId">The customer identifier.</param>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <PagedResult <Device> > GetDevices(int customerId, DevicesSearchDto request)
        {
            Expression <Func <Device, bool> > expression = d => d.CustomerId == customerId && !d.IsDeleted;

            if (request != null)
            {
                if (!string.IsNullOrEmpty(request.Q))
                {
                    var terms = request.Q.Split(' ').Where(r => !string.IsNullOrWhiteSpace(r));

                    foreach (var term in terms)
                    {
                        expression = expression.And(d => d.DeviceModel.Contains(term));
                    }
                }

                if (request.PatientId.HasValue)
                {
                    expression = expression
                                 .And(d => d.PatientId == request.PatientId.Value);
                }

                if (request.LastConnectedUtcBefore.HasValue)
                {
                    expression = expression.And(d =>
                                                d.LastConnectedUtc.HasValue && d.LastConnectedUtc < request.LastConnectedUtcBefore.Value);
                }

                if (request.LastConnectedUtcAfter.HasValue)
                {
                    expression = expression.And(d =>
                                                d.LastConnectedUtc.HasValue && d.LastConnectedUtc > request.LastConnectedUtcAfter.Value);
                }

                if (request.Status.HasValue)
                {
                    expression = expression.And(d =>
                                                d.Status == request.Status.Value);
                }

                if (request.Type.HasValue)
                {
                    var typeString = request.Type.Value.ToString();

                    expression = expression.And(d =>
                                                d.DeviceTypeString.Equals(typeString));
                }
            }

            return(await deviceRepository
                   .FindPagedAsync(
                       expression,
                       o => o.OrderBy(e => e.Id),
                       null,
                       request != null ? request.Skip : (int?)null,
                       request != null ? request.Take : (int?)null
                       ));
        }
示例#2
0
        /// <summary>
        /// Checks if patient already has IVR device with active status.
        /// </summary>
        /// <returns></returns>
        private async Task <bool> IsActiveIVRExists(int customerId, Guid patientId)
        {
            var IVRDevicesSearchRequest = new DevicesSearchDto
            {
                PatientId = patientId,
                Type      = DeviceType.IVR,
                Status    = Status.Activated
            };
            var existingIVRDevices = await this.GetDevices(customerId, IVRDevicesSearchRequest);

            return(existingIVRDevices.Results.Any());
        }
        public async Task <IHttpActionResult> GetDevices(
            int customerId,
            [FromUri] DevicesSearchDto request
            )
        {
            var operationResult = await devicesControllerHelper.GetDevices(customerId, request);

            if (!operationResult.Status.HasFlag(GetDeviceStatus.Success))
            {
                return(Content(
                           HttpStatusCode.BadRequest,
                           new ErrorResponseDto()
                {
                    Error = ErrorCode.InvalidRequest,
                    Message = ErrorCode.InvalidRequest.Description(),
                    Details = operationResult.Status.Description()
                }
                           ));
            }

            return(Ok(operationResult.Content));
        }
示例#4
0
        /// <summary>
        /// Gets the devices.
        /// </summary>
        /// <param name="customerId">The customer identifier.</param>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <OperationResultDto <PagedResultDto <DeviceDto>, GetDeviceStatus> > GetDevices(int customerId, DevicesSearchDto request)
        {
            var result = await deviceService.GetDevices(customerId, request);

            return(new OperationResultDto <PagedResultDto <DeviceDto>, GetDeviceStatus>()
            {
                Status = GetDeviceStatus.Success,
                Content = Mapper.Map <PagedResult <Device>, PagedResultDto <DeviceDto> >(result)
            });
        }