diff --git a/backend/Api/Consultants/ConsultantController.cs b/backend/Api/Consultants/ConsultantController.cs index f1f1563f..abb7655c 100644 --- a/backend/Api/Consultants/ConsultantController.cs +++ b/backend/Api/Consultants/ConsultantController.cs @@ -11,7 +11,7 @@ namespace Api.Consultants; [Authorize] -[Route("/v0/consultants")] +[Route("/v0/{orgUrlKey}/consultants")] [ApiController] public class ConsultantController : ControllerBase { @@ -28,10 +28,11 @@ public ConsultantController(ApplicationContext context, IMemoryCache cache, Cons [HttpGet] public ActionResult> Get( + [FromRoute] string orgUrlKey, [FromQuery(Name = "weeks")] int numberOfWeeks = 8, [FromQuery(Name = "includeOccupied")] bool includeOccupied = true) { - var consultants = GetConsultantsWithAvailability(numberOfWeeks) + var consultants = GetConsultantsWithAvailability(orgUrlKey, numberOfWeeks) .Where(c => includeOccupied || c.IsOccupied @@ -69,16 +70,17 @@ public async Task, ProblemHttpResult, Vali } } - private List GetConsultantsWithAvailability(int numberOfWeeks) + private List GetConsultantsWithAvailability(string orgUrlKey, int numberOfWeeks) { if (numberOfWeeks == 8) { - _cache.TryGetValue(CacheKeys.ConsultantAvailability8Weeks, + _cache.TryGetValue( + $"{orgUrlKey}/{CacheKeys.ConsultantAvailability8Weeks}", out List? cachedConsultants); if (cachedConsultants != null) return cachedConsultants; } - var consultants = LoadConsultantAvailability(numberOfWeeks) + var consultants = LoadConsultantAvailability(orgUrlKey, numberOfWeeks) .Select(c => _consultantService.MapConsultantToReadModel(c, numberOfWeeks)).ToList(); @@ -86,7 +88,7 @@ private List GetConsultantsWithAvailability(int numberOfWee return consultants; } - private List LoadConsultantAvailability(int numberOfWeeks) + private List LoadConsultantAvailability(string orgUrlKey, int numberOfWeeks) { var applicableWeeks = DateService.GetNextWeeks(numberOfWeeks); var firstDayOfCurrentWeek = DateService.GetFirstDayOfWeekContainingDate(DateTime.Now); @@ -122,6 +124,7 @@ private List LoadConsultantAvailability(int numberOfWeeks) || (yearB <= pa.Year && minWeekB <= pa.WeekNumber && pa.WeekNumber <= maxWeekB))) .Include(c => c.Department) .ThenInclude(d => d.Organization) + .Where(c => c.Department.Organization.UrlKey == orgUrlKey) .Include(c => c.Staffings.Where(s => (s.Year <= yearA && minWeekA <= s.Week && s.Week <= maxWeekA) || (yearB <= s.Year && minWeekB <= s.Week && s.Week <= maxWeekB))) diff --git a/frontend/src/components/SearchBarComponent.tsx b/frontend/src/components/SearchBarComponent.tsx index f056babb..80c485a8 100644 --- a/frontend/src/components/SearchBarComponent.tsx +++ b/frontend/src/components/SearchBarComponent.tsx @@ -1,11 +1,12 @@ "use client"; -import { useRouter, useSearchParams } from "next/navigation"; +import { usePathname, useRouter, useSearchParams } from "next/navigation"; import { useEffect, useRef, useState } from "react"; import { Search } from "react-feather"; export default function SearchBarComponent() { const router = useRouter(); const searchParams = useSearchParams(); + const pathname = usePathname(); const [searchText, setSearchText] = useState( searchParams.get("search") || "", ); @@ -13,8 +14,8 @@ export default function SearchBarComponent() { useEffect(() => { const currentFilter = searchParams.get("filter") || ""; - router.push(`/bemanning?search=${searchText}&filter=${currentFilter}`); - }, [searchText, searchParams, router]); + router.push(`${pathname}?search=${searchText}&filter=${currentFilter}`); + }, [searchText, searchParams, router, pathname]); useEffect(() => { function keyDownHandler(e: { code: string }) { diff --git a/frontend/src/components/VibesNavBar.tsx b/frontend/src/components/VibesNavBar.tsx new file mode 100644 index 00000000..e69de29b