/// <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);
 }
Beispiel #2
0
        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]);
            }
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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));
 }