public async Task <PatientSearchTemplateDTM> GetTemplate() { List <FieldName> fns = await _dbContext.FieldNames.ToListAsync(); var searchTemplate = new PatientSearchTemplateDTM(fns); return(searchTemplate); }
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); }
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); }
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); }