/// <summary> /// Method concatenates report search results, when one parameter is given and when multiple are, with logical operators /// </summary> /// <param name="reports"></param> /// <param name="dto"></param> /// <param name="firstReports"></param> /// <returns>Concatenated list of filtered reports</returns> public List <Report> SearchByParameters(List <Report> reports, ReportAdvancedDTO dto, List <Report> firstReports) { for (int i = 0; i < dto.OtherParameterTypes.Length; i++) { firstReports = SearchByLogicOperators(dto.LogicOperators[i], SearchByOtherParameters(dto.OtherParameterTypes[i], dto.OtherParameterValues[i], reports), firstReports); } return(firstReports); }
public static void Validate(ReportAdvancedDTO dto) { Checker(dto.FirstParameterType, dto.FirstParameterValue); for (int i = 0; i < dto.OtherParameterValues.Length; i++) { Checker(dto.OtherParameterTypes[i], dto.OtherParameterValues[i]); } }
public void Advanced_report_found() { var stubRepository = CreateStubRepository(); ReportAdvancedDTO dto = CreateDTO(); ReportSearchService service = new ReportSearchService(stubRepository, CreateUserGateway()); List <Report> reports = service.AdvancedSearchReports(dto); reports.ShouldNotBeEmpty(); }
public IActionResult AdvancedSearchPrescriptions(ReportAdvancedDTO dto) { try { ReportSearchValidator.Validate(dto); } catch (Exception e) { return(BadRequest(e.Message)); } List <Report> reports = _reportSearchService.AdvancedSearchReports(dto); return(Ok(reports)); }
public static ReportAdvancedDTO CreateFalseDTO() { ReportAdvancedDTO dto = new ReportAdvancedDTO { FirstParameterType = "docName", FirstParameterValue = "Milan", LogicOperators = new string[2], OtherParameterTypes = new string[2], OtherParameterValues = new string[2] }; dto.LogicOperators[0] = "and"; dto.LogicOperators[1] = "or"; dto.OtherParameterValues[0] = "12/3/2020"; dto.OtherParameterValues[1] = "Simic"; dto.OtherParameterTypes[0] = "date"; dto.OtherParameterTypes[1] = "docSurname"; return(dto); }
/// <summary> /// Method for advanced search of reports based on given parameters and logical operators /// </summary> /// <param name="dto"></param> /// <returns>List of filtered reports</returns> public List <Report> AdvancedSearchReports(ReportAdvancedDTO dto) { return(SearchByParameters(GetReportsFor("2406978890046"), dto, SearchFByFirstParameter(GetReportsFor("2406978890046"), dto))); }
/// <summary> /// Method for searching reports based on first parameter given /// </summary> /// <param name="reports"></param> /// <param name="dto"></param> /// <returns>Filtered list of reports</returns> public List <Report> SearchFByFirstParameter(List <Report> reports, ReportAdvancedDTO dto) { return(dto.FirstParameterType.Equals("docName") ? AdvancedSearchDoctorName(dto.FirstParameterValue, reports) : dto.FirstParameterType.Equals("docSurname") ? AdvancedSearchDoctorSurname(dto.FirstParameterValue, reports) : AdvancedSearchDate(dto.FirstParameterValue, reports)); }