public Task <PagedResult <PatientAggregate> > Search(SearchPatientsQuery parameter, CancellationToken token)
        {
            IQueryable <PatientAggregate> patients = _patients.AsQueryable();

            if (MAPPING_PATIENT_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy))
            {
                patients = patients.InvokeOrderBy(MAPPING_PATIENT_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order);
            }

            if (!string.IsNullOrWhiteSpace(parameter.Niss))
            {
                patients = patients.Where(r => r.NationalIdentityNumber.StartsWith(parameter.Niss, System.StringComparison.InvariantCultureIgnoreCase));
            }

            if (!string.IsNullOrWhiteSpace(parameter.Firstname))
            {
                patients = patients.Where(r => r.Firstname.StartsWith(parameter.Firstname, System.StringComparison.InvariantCultureIgnoreCase));
            }

            if (!string.IsNullOrWhiteSpace(parameter.Lastname))
            {
                patients = patients.Where(r => r.Lastname.StartsWith(parameter.Lastname, System.StringComparison.InvariantCultureIgnoreCase));
            }

            int totalLength = patients.Count();

            patients = patients.Skip(parameter.StartIndex).Take(parameter.Count);
            return(Task.FromResult(new PagedResult <PatientAggregate>
            {
                StartIndex = parameter.StartIndex,
                Count = parameter.Count,
                TotalLength = totalLength,
                Content = (ICollection <PatientAggregate>)patients.ToList()
            }));
        }
Esempio n. 2
0
        public async Task <PagedResult <GetPatientQueryResult> > Handle(SearchPatientsQuery query, CancellationToken token)
        {
            var result = await _patientQueryRepository.Search(query, token);

            return(new PagedResult <GetPatientQueryResult>
            {
                Count = result.Count,
                StartIndex = result.StartIndex,
                TotalLength = result.TotalLength,
                Content = result.Content.Select(_ => _.ToResult()).ToList()
            });
        }
Esempio n. 3
0
        private static SearchPatientsQuery BuildSearchRequest(IEnumerable <KeyValuePair <string, object> > parameters)
        {
            string niss, firstname, lastname;
            var    result = new SearchPatientsQuery();

            result.ExtractSearchParameters(parameters);
            if (parameters.TryGet("niss", out niss))
            {
                result.Niss = niss;
            }

            if (parameters.TryGet("firstname", out firstname))
            {
                result.Firstname = firstname;
            }

            if (parameters.TryGet("lastname", out lastname))
            {
                result.Lastname = lastname;
            }

            return(result);
        }
Esempio n. 4
0
 public Task <PagedResult <GetPatientQueryResult> > Search(SearchPatientsQuery query, CancellationToken token)
 {
     return(_mediator.Send(query, token));
 }