public async Task <PatientSearchTemplateDTM> GetTemplate()
        {
            List <FieldName> fns = await _dbContext.FieldNames.ToListAsync();

            var searchTemplate = new PatientSearchTemplateDTM(fns);

            return(searchTemplate);
        }
示例#2
0
        public static IQueryable <Patient> MyExt_PortionByTemplate(
            this DbSet <Patient> patientsTable,
            PatientSearchTemplateDTM template,
            int skip, int take)
        {
            var query = patientsTable
                        .IncludeFields()
                        .AddWhereConditionsFromTemplate(template)
                        .GetPortion(skip, take, p => p.CreatedDate);

            return(query);
        }
示例#3
0
        public static IQueryable <string> MyExt_GetFieldValuesForTemplate(
            this DbSet <Patient> patientsTable,
            PatientSearchTemplateDTM template,
            int fieldNameId,
            int maxCount)
        {
            var query = patientsTable
                        .AddWhereConditionsFromTemplate(template)
                        .GetPortion(0, maxCount, p => p.CreatedDate)
                        .Select(p => p.Fields.First(f => f.NameId == fieldNameId).Value);

            return(query);
        }
        public async Task <PatientSearchTemplateDTM> UpdateTemplate()
        {
            var updatedTemplate = await ControllerHelpers
                                  .ReadModelFromBodyAsync <PatientSearchTemplateDTM>(this.Request.Body);

            var existingFieldNames = await _dbContext.FieldNames.ToListAsync();

            bool needSave = false;

            foreach (var updatedField in updatedTemplate.Fields)
            {
                if (updatedField.NameId > 0)
                {
                    var existingFN = existingFieldNames.FirstOrDefault(
                        fn => fn.Id == updatedField.NameId);

                    if (existingFN == null)
                    {
                        throw new MyException(
                                  MyExceptionType.DoesNotExistInDatabase,
                                  updatedField);
                    }

                    if (updatedField.UpdateModel(existingFN))
                    {
                        needSave = true;
                    }
                }
                else
                {
                    needSave = true;

                    _dbContext.FieldNames.Add(new FieldName(updatedField.Name));
                }
            }

            if (needSave)
            {
                await _dbContext.SaveChangesAsync();
            }

            List <FieldName> fns = await _dbContext.FieldNames.ToListAsync();

            var loadedTemplate = new PatientSearchTemplateDTM(fns);

            return(loadedTemplate);
        }
示例#5
0
        private static IQueryable <Patient> AddWhereConditionsFromTemplate(
            this IQueryable <Patient> query,
            PatientSearchTemplateDTM template)
        {
            foreach (var field in template.Fields)
            {
                string trimmedValue = field.Value.Trim();

                if (string.IsNullOrEmpty(trimmedValue))
                {
                    continue;
                }

                query = query
                        .Where(p => p.Fields.Any(
                                   f =>
                                   f.Name.Id == field.NameId &&
                                   f.Value.ToLower().StartsWith(trimmedValue.ToLower())
                                   ));
            }

            return(query);
        }