CourseOverTimeBuildingController.java

  1. package edu.ucsb.cs156.courses.controllers;

  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import edu.ucsb.cs156.courses.collections.ConvertedSectionCollection;
  5. import edu.ucsb.cs156.courses.documents.ConvertedSection;
  6. import io.swagger.v3.oas.annotations.Operation;
  7. import io.swagger.v3.oas.annotations.Parameter;
  8. import java.util.List;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.http.ResponseEntity;
  11. import org.springframework.web.bind.annotation.GetMapping;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.bind.annotation.RestController;

  15. @RestController
  16. @RequestMapping("/api/public/courseovertime")
  17. public class CourseOverTimeBuildingController {

  18.   private ObjectMapper mapper = new ObjectMapper();

  19.   @Autowired ConvertedSectionCollection convertedSectionCollection;

  20.   @Operation(summary = "Get a list of courses over time, filtered by (abbreviated) building code")
  21.   @GetMapping(value = "/buildingsearch", produces = "application/json")
  22.   public ResponseEntity<String> search(
  23.       @Parameter(
  24.               name = "startQtr",
  25.               description =
  26.                   "Starting quarter in yyyyq format, e.g. 20231 for W23, 20232 for S23, etc. (1=Winter, 2=Spring, 3=Summer, 4=Fall)",
  27.               example = "20231",
  28.               required = true)
  29.           @RequestParam
  30.           String startQtr,
  31.       @Parameter(
  32.               name = "endQtr",
  33.               description =
  34.                   "Ending quarter in yyyyq format, e.g. 20231 for W23, 20232 for S23, etc. (1=Winter, 2=Spring, 3=Summer, 4=Fall)",
  35.               example = "20231",
  36.               required = true)
  37.           @RequestParam
  38.           String endQtr,
  39.       @Parameter(
  40.               name = "buildingCode",
  41.               description = "Building code such as PHELP for Phelps, GIRV for Girvetz",
  42.               example = "GIRV",
  43.               required = true)
  44.           @RequestParam
  45.           String buildingCode)
  46.       throws JsonProcessingException {
  47.     List<ConvertedSection> courseResults =
  48.         convertedSectionCollection.findByQuarterRangeAndBuildingCode(
  49.             startQtr, endQtr, buildingCode);
  50.     String body = mapper.writeValueAsString(courseResults);
  51.     return ResponseEntity.ok().body(body);
  52.   }
  53. }