Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: CE-590 standardized on actor guid #706

Merged
merged 33 commits into from
Oct 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
5e72328
fix: Ce 478 (#685)
gregorylavery Oct 3, 2024
da3a597
chore(CE-1118): CE-1118 Add Ryan as officer for test and prod (#689)
nayr974 Oct 3, 2024
da5087f
chore(CE-1118): add Jon as officer to test and prod data (#688)
jon-funk Oct 4, 2024
94f9304
chore: CE 1119 add Mike to users (#690)
mikevespi Oct 7, 2024
043c1e7
feat: CE-750 Display Current Date in Filter when only one date select…
afwilcox Oct 8, 2024
343bf71
chore(CE-535): Refactor ValidationInput and ValidationSelect to use C…
nayr974 Oct 8, 2024
91c1b3b
fix: CE-1050 Makes it so cypress tests work on empty case management …
afwilcox Oct 9, 2024
e2b7101
chore(ci): Dockerfile updates (#693)
mishraomp Oct 9, 2024
b4f59cd
fix: Config.js error while developing locally (#699)
nayr974 Oct 9, 2024
70f8b02
fix: Clear CDOGS templates with every run (#700)
afwilcox Oct 11, 2024
b8aae06
fix: Ce 1127 (#694)
gregorylavery Oct 12, 2024
fde5a56
chore(deps): update dependency @types/jest to v29.5.13 (#704)
renovate[bot] Oct 15, 2024
a788f68
feat: CE-550- modal-improvements-V2 (#703)
dk-bcps Oct 15, 2024
b027dd7
chore: standardize on actor_guid
Scarlett-Truong Oct 15, 2024
1df4cb0
Merge branch 'release/lions-mane-jellyfish' into chore/CE-590
Scarlett-Truong Oct 15, 2024
46d6c1d
feat: Method Complaint Received Cypress Tests (#701)
afwilcox Oct 15, 2024
7959ee5
Merge branch 'release/lions-mane-jellyfish' into chore/CE-590
Scarlett-Truong Oct 16, 2024
9863d60
fix default assigned officer in ceeb decision
Scarlett-Truong Oct 16, 2024
d86e33e
fix: CE 1124 (#705)
nayr974 Oct 16, 2024
a056848
fix equipment default officer
Scarlett-Truong Oct 16, 2024
f6a2606
Merge branch 'release/lions-mane-jellyfish' into chore/CE-590
Scarlett-Truong Oct 16, 2024
4ae9271
merge branch
Scarlett-Truong Oct 16, 2024
24a3c76
fix: CE-1143-apply-scroll-bar-to-assign-modal (#710)
dk-bcps Oct 16, 2024
02d58eb
fix: CE-917 enable autoscaling for test (#702)
jon-funk Oct 17, 2024
9df80c5
fix: CE-1078 persist secret content changes between rollouts (#698)
jon-funk Oct 17, 2024
c59fc24
move file location
Scarlett-Truong Oct 17, 2024
20d34a3
feat: CE-1045 add action taken filter for ceeb (#708)
mikevespi Oct 17, 2024
a338648
fix: CE 1124 (#711)
nayr974 Oct 17, 2024
b06b11c
refactor 1: officer list by agency
Scarlett-Truong Oct 17, 2024
ea53aef
solve conflict
Scarlett-Truong Oct 17, 2024
85508f1
refactor 2
Scarlett-Truong Oct 18, 2024
43808d2
Merge branch 'release/noble-sea-lemon' into chore/CE-590
afwilcox Oct 21, 2024
90f6b51
Merge branch 'release/noble-sea-lemon' into chore/CE-590
afwilcox Oct 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import {
selectGirTypeCodeDropdown,
selectComplaintReceivedMethodDropdown,
} from "../../../store/reducers/code-table";
import { selectOfficersByAgencyDropdownUsingPersonGuid } from "../../../store/reducers/officer";
import { selectDecisionTypeDropdown } from "../../../store/reducers/code-table-selectors";
import { selectOfficersByAgencyDropdown } from "../../../store/reducers/officer";
import COMPLAINT_TYPES from "../../../types/app/complaint-types";
import DatePicker from "react-datepicker";
import { CompSelect } from "../../common/comp-select";
Expand Down Expand Up @@ -50,7 +50,7 @@ export const ComplaintFilter: FC<Props> = ({ type }) => {
} = useContext(ComplaintFilterContext);

const agency = UserService.getUserAgency();
let officersByAgency = useAppSelector(selectOfficersByAgencyDropdown(agency));
let officersByAgency = useAppSelector(selectOfficersByAgencyDropdownUsingPersonGuid(agency));
if (officersByAgency && officersByAgency[0]?.value !== "Unassigned") {
officersByAgency.unshift({ value: "Unassigned", label: "Unassigned" });
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ import { CompInput } from "../../../../../common/comp-input";
import { openModal } from "../../../../../../store/reducers/app";
import { CANCEL_CONFIRM } from "../../../../../../types/modal/modal-types";
import { getCaseFile, upsertDecisionOutcome } from "../../../../../../store/reducers/case-thunks";
import { assignComplaintToOfficer, selectOfficersByAgencyDropdown } from "../../../../../../store/reducers/officer";
import {
assignComplaintToOfficer,
selectOfficersByAgency,
selectOfficerListByAgency,
} from "../../../../../../store/reducers/officer";
import { selectCaseId } from "../../../../../../store/reducers/case-selectors";
import { UUID } from "crypto";
import { getComplaintById, selectComplaintCallerInformation } from "../../../../../../store/reducers/complaints";
Expand Down Expand Up @@ -76,7 +80,8 @@ export const DecisionForm: FC<props> = ({
const decisionTypeOptions = useAppSelector(selectDecisionTypeDropdown);
const leadAgencyOptions = useAppSelector(selectLeadAgencyDropdown);
const { ownedByAgencyCode } = useAppSelector(selectComplaintCallerInformation);
const officerOptions = useAppSelector(selectOfficersByAgencyDropdown(ownedByAgencyCode?.agency));
const officerOptions = useAppSelector(selectOfficerListByAgency);
const officersInAgencyList = useAppSelector(selectOfficersByAgency(ownedByAgencyCode?.agency));
const scheduleSectorType = useAppSelector(selectScheduleSectorXref);

//-- error messgaes
Expand Down Expand Up @@ -270,14 +275,20 @@ export const DecisionForm: FC<props> = ({
if (response === "success") {
//-- update the assignment of the complaint to the selected officer
const { assignedTo } = data;
if (assignedTo) {
const result = await dispatch(assignComplaintToOfficer(leadIdentifier, assignedTo));

if (result) {
//-- update the complaint
dispatch(getComplaintById(leadIdentifier, COMPLAINT_TYPES.ERS));
} else {
ToggleError("Error, unable to to assign officer to complaint");
if (assignedTo && officersInAgencyList) {
const officerAssignedObj = officersInAgencyList.find((officer) => officer.auth_user_guid === assignedTo);

if (officerAssignedObj?.person_guid) {
const result = await dispatch(
assignComplaintToOfficer(leadIdentifier, officerAssignedObj.person_guid.person_guid),
);

if (result) {
//-- update the complaint
dispatch(getComplaintById(leadIdentifier, COMPLAINT_TYPES.ERS));
} else {
ToggleError("Error, unable to to assign officer to complaint");
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
selectScheduleDropdown,
selectDecisionTypeDropdown,
} from "../../../../../../store/reducers/code-table-selectors";
import { selectOfficersDropdown } from "../../../../../../store/reducers/officer";
import { selectOfficerListByAgency } from "../../../../../../store/reducers/officer";
import Option from "../../../../../../types/app/option";
import { CASE_ACTION_CODE } from "../../../../../../constants/case_actions";

Expand Down Expand Up @@ -48,7 +48,7 @@ export const DecisionItem: FC<props> = ({
const scheduleSectorsOptions = useAppSelector(selectSectorDropdown);
const decisionTypeOptions = useAppSelector(selectDecisionTypeDropdown);
const agencyOptions = useAppSelector(selectLeadAgencyDropdown);
const officerOptions = useAppSelector(selectOfficersDropdown(true));
const officerOptions = useAppSelector(selectOfficerListByAgency);

const getValue = (property: string): Option | undefined | null => {
let result: Option | undefined;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { setIsInEdit } from "../../../../../../store/reducers/cases";
import { DecisionForm } from "./decision-form";
import { DecisionItem } from "./decision-item";
import { BsExclamationCircleFill } from "react-icons/bs";
import { selectComplaintAssignedBy } from "../../../../../../store/reducers/complaints";
import { assignedOfficerAuthId } from "../../../../../../store/reducers/complaints";

export const CeebDecision: FC = () => {
const { id = "" } = useParams<ComplaintParams>();
Expand All @@ -18,7 +18,7 @@ export const CeebDecision: FC = () => {
const data = useAppSelector(selectCaseDecision);

//-- get the officer assigned to the complaint
const officerAssigned = useAppSelector(selectComplaintAssignedBy);
const officerAssigned = useAppSelector(assignedOfficerAuthId);

const isInEdit = useAppSelector((state) => state.cases.isInEdit);
const [editable, setEditable] = useState(true);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { FC, useEffect, useState } from "react";
import Option from "../../../../types/app/option";
import { Button, Card } from "react-bootstrap";
import { Officer } from "../../../../types/person/person";
import { useAppDispatch, useAppSelector } from "../../../../hooks/hooks";
import { selectOfficersByAgency } from "../../../../store/reducers/officer";
import { selectOfficerListByAgency, selectOfficersByAgency } from "../../../../store/reducers/officer";
import {
getComplaintById,
selectComplaint,
Expand Down Expand Up @@ -63,6 +62,7 @@ export const HWCRComplaintAssessment: FC = () => {
const { ownedByAgencyCode } = useAppSelector(selectComplaintCallerInformation);
const officersInAgencyList = useAppSelector(selectOfficersByAgency(ownedByAgencyCode?.agency));
const cases = useAppSelector((state) => state.cases);
const assignableOfficers = useAppSelector(selectOfficerListByAgency);

const hasAssessment = Object.keys(cases.assessment).length > 0;
const showSectionErrors = (!hasAssessment || editable) && cases.isInEdit.showSectionErrors;
Expand All @@ -73,13 +73,6 @@ export const HWCRComplaintAssessment: FC = () => {
} else dispatch(setIsInEdit({ assessment: editable }));
}, [editable, hasAssessment]);

const assignableOfficers: Option[] =
officersInAgencyList !== null
? officersInAgencyList.map((officer: Officer) => ({
value: officer.person_guid.person_guid,
label: `${officer.person_guid.last_name}, ${officer.person_guid.first_name}`,
}))
: [];
const handleDateChange = (date: Date | null) => {
setSelectedDate(date);
};
Expand Down Expand Up @@ -189,7 +182,7 @@ export const HWCRComplaintAssessment: FC = () => {
.map((item) => {
return {
label: `${item.person_guid?.last_name}, ${item.person_guid?.first_name}`,
value: assigned,
value: item.auth_user_guid,
} as Option;
});
if (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Button, Card } from "react-bootstrap";
import { ToastContainer } from "react-toastify";

import { useAppDispatch, useAppSelector } from "../../../../../hooks/hooks";
import { selectOfficersByAgency } from "../../../../../store/reducers/officer";
import { selectOfficerListByAgency, selectOfficersByAgency } from "../../../../../store/reducers/officer";
import { selectEquipmentDropdown, selectTrapEquipment } from "../../../../../store/reducers/code-table";
import {
getComplaintById,
Expand Down Expand Up @@ -41,7 +41,7 @@ export const EquipmentForm: FC<EquipmentFormProps> = ({ equipment, assignedOffic
const [type, setType] = useState<Option>();
const [dateSet, setDateSet] = useState<Date>(new Date());
const [dateRemoved, setDateRemoved] = useState<Date>();
const [officerSet, setOfficerSet] = useState<Option>();
const [officerSet, setOfficerSet] = useState<Option | undefined>();
const [officerRemoved, setOfficerRemoved] = useState<Option>();
const [address, setAddress] = useState<string | undefined>("");
const [xCoordinate, setXCoordinate] = useState<string | undefined>("");
Expand All @@ -67,24 +67,26 @@ export const EquipmentForm: FC<EquipmentFormProps> = ({ equipment, assignedOffic
const officersInAgencyList = useAppSelector(selectOfficersByAgency(ownedByAgencyCode?.agency));
const equipmentDropdownOptions = useAppSelector(selectEquipmentDropdown);
const trapEquipment = useAppSelector(selectTrapEquipment);
const assignableOfficers = useAppSelector(selectOfficerListByAgency);

const isInEdit = useAppSelector((state) => state.cases.isInEdit);
const showSectionErrors = isInEdit.showSectionErrors;

const assignableOfficers: Option[] =
officersInAgencyList !== null
? officersInAgencyList.map((officer: Officer) => ({
value: officer.person_guid.person_guid,
label: `${officer.person_guid.last_name}, ${officer.person_guid.first_name}`,
}))
: [];

useEffect(() => {
if (assignedOfficer) {
const setOfficer = getSelectedItem(assignedOfficer, assignableOfficers);
setOfficerSet(setOfficer);
if (assignedOfficer && officersInAgencyList) {
const officerAssigned: any = officersInAgencyList
.filter((officer) => officer.person_guid.person_guid === assignedOfficer)
.map((item) => {
return {
label: `${item.person_guid?.last_name}, ${item.person_guid?.first_name}`,
value: item.auth_user_guid,
} as Option;
});
if (officerAssigned.length === 1) {
setOfficerSet(officerAssigned[0]);
}
}
}, [complaintData]);
}, [assignedOfficer]);

useEffect(() => {
if (id && (!complaintData || complaintData.id !== id)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { formatDate } from "../../../../../common/methods";

import { DeleteConfirmModal } from "../../../../modal/instances/delete-confirm-modal";
import { EquipmentDetailsDto } from "../../../../../types/app/case-files/equipment-details";
import { selectOfficerByPersonGuid } from "../../../../../store/reducers/officer";
import { selectOfficerByAuthUserGuid } from "../../../../../store/reducers/officer";
import { useAppDispatch, useAppSelector } from "../../../../../hooks/hooks";

import Option from "../../../../../types/app/option";
Expand Down Expand Up @@ -57,9 +57,8 @@ export const EquipmentItem: FC<EquipmentItemProps> = ({ equipment, isEditDisable
(action) => action.actionCode === CASE_ACTION_CODE.REMEQUIPMT,
)?.date;
const removedEquipmentDate = removedEquipmentDateString ? new Date(new Date(removedEquipmentDateString)) : null;

const setEquipmentOfficer = useAppSelector(selectOfficerByPersonGuid(`${setEquipmentActor}`));
const removedEquipmentOfficer = useAppSelector(selectOfficerByPersonGuid(`${removedEquipmentActor}`));
const setEquipmentOfficer = useAppSelector(selectOfficerByAuthUserGuid(`${setEquipmentActor}`));
const removedEquipmentOfficer = useAppSelector(selectOfficerByAuthUserGuid(`${removedEquipmentActor}`));

const setEquipmentFullName = setEquipmentOfficer
? `${setEquipmentOfficer.person_guid.last_name}, ${setEquipmentOfficer.person_guid.first_name}`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export const HWCRFileReview: FC = () => {
const DISPLAY_STATE = 2;
const dispatch = useAppDispatch();
const complaintData = useAppSelector(selectComplaint);
const personGuid = useAppSelector((state) => state.app.profile.personGuid);
const authUserGuid = useAppSelector((state) => state.app.profile.idir);
const isReviewRequired = useAppSelector((state) => state.cases.isReviewRequired);
const reviewCompleteAction = useAppSelector((state) => state.cases.reviewComplete);
const { officers } = useAppSelector((state) => state.officers);
Expand Down Expand Up @@ -49,7 +49,7 @@ export const HWCRFileReview: FC = () => {
if (reviewCompleteAction) {
let displayName = "Unknown";
if (officers) {
const officer = officers.filter((person) => person.person_guid.person_guid === reviewCompleteAction.actor);
const officer = officers.filter((person) => person.auth_user_guid === reviewCompleteAction.actor);
if (officer.length > 0) {
const {
person_guid: { first_name: givenName, last_name: surName },
Expand Down Expand Up @@ -79,7 +79,7 @@ export const HWCRFileReview: FC = () => {
dispatch(createReview(complaintData.id, reviewRequired, null));
} else {
const completeAction = {
actor: personGuid,
actor: authUserGuid,
date: new Date(),
actionCode: "COMPLTREVW",
activeIndicator: reviewCompleted,
Expand All @@ -89,7 +89,7 @@ export const HWCRFileReview: FC = () => {
}
} else {
const completeAction = {
actor: personGuid,
actor: authUserGuid,
date: new Date(),
actionCode: "COMPLTREVW",
activeIndicator: reviewCompleted,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { useParams } from "react-router-dom";
import { ComplaintParams } from "../details/complaint-details-edit";
import { createAnimalOutcome, getCaseFile, updateAnimalOutcome } from "../../../../store/reducers/case-thunks";
import { selectAnimalOutcomes, selectCaseId } from "../../../../store/reducers/case-selectors";
import { selectOfficersByAgency } from "../../../../store/reducers/officer";
import { openModal } from "../../../../store/reducers/app";
import { CANCEL_CONFIRM, DELETE_ANIMAL_OUTCOME } from "../../../../types/modal/modal-types";
import { EditOutcome } from "./oucome-by-animal/edit-outcome";
Expand Down Expand Up @@ -51,6 +52,7 @@ export const HWCROutcomeByAnimalv2: FC<props> = () => {
const caseId = useAppSelector(selectCaseId) as UUID;

const { species, ownedBy: agency } = (complaint as WildlifeComplaint) || {};
const officersInAgencyList = useAppSelector(selectOfficersByAgency(agency));

//-- if there's an assigned officer pull them off
//-- the complaint and pass as a kvp to the input
Expand Down Expand Up @@ -139,7 +141,12 @@ export const HWCROutcomeByAnimalv2: FC<props> = () => {
person: { id },
} = assigned;

setAssignedOfficer(id);
if (officersInAgencyList) {
const officerAssigned: any = officersInAgencyList.filter((officer) => officer.person_guid.person_guid === id);
if (officerAssigned.length === 1) {
setAssignedOfficer(officerAssigned[0].auth_user_guid);
}
}
}
}
}, [complaint]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Option from "../../../../types/app/option";
import { Button, Card } from "react-bootstrap";
import { Officer } from "../../../../types/person/person";
import { useAppDispatch, useAppSelector } from "../../../../hooks/hooks";
import { selectOfficersByAgency } from "../../../../store/reducers/officer";
import { selectOfficerListByAgency, selectOfficersByAgency } from "../../../../store/reducers/officer";
import {
getComplaintById,
selectComplaint,
Expand Down Expand Up @@ -56,13 +56,8 @@ export const HWCRComplaintPrevention: FC = () => {
const { id = "", complaintType = "" } = useParams<ComplaintParams>();
const { ownedByAgencyCode } = useAppSelector(selectComplaintCallerInformation);
const officersInAgencyList = useAppSelector(selectOfficersByAgency(ownedByAgencyCode?.agency));
const assignableOfficers: Option[] =
officersInAgencyList !== null
? officersInAgencyList.map((officer: Officer) => ({
value: officer.person_guid.person_guid,
label: `${officer.person_guid.last_name}, ${officer.person_guid.first_name}`,
}))
: [];
const assignableOfficers = useAppSelector(selectOfficerListByAgency);

const handleDateChange = (date: Date | null) => {
setSelectedDate(date);
};
Expand Down Expand Up @@ -140,7 +135,7 @@ export const HWCRComplaintPrevention: FC = () => {
.map((element: Officer) => {
return {
label: `${element.person_guid?.last_name}, ${element.person_guid?.first_name}`,
value: assigned,
value: element.auth_user_guid,
} as Option;
});
if (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
import { from } from "linq-to-typescript";
import { BsExclamationCircleFill } from "react-icons/bs";
import { formatDate, pad } from "../../../../../common/methods";
import { selectOfficersByAgencyDropdown } from "../../../../../store/reducers/officer";
import { selectOfficerListByAgency } from "../../../../../store/reducers/officer";
import { DrugItem } from "./drug-item";
import { Button, Card, Col, ListGroup, Row } from "react-bootstrap";

Expand All @@ -34,7 +34,7 @@ export const AnimalOutcome: FC<props> = ({ index, data, agency, edit, remove })
const threatLevels = useAppSelector(selectThreatLevelDropdown);
const conflictHistories = useAppSelector(selectConflictHistoryDropdown);
const outcomes = useAppSelector(selectWildlifeComplaintOutcome);
const officers = useAppSelector(selectOfficersByAgencyDropdown(agency));
const officers = useAppSelector(selectOfficerListByAgency);
const isInEdit = useAppSelector((state) => state.cases.isInEdit);
const showSectionErrors = !data.outcome && !data.officer && !data.date && isInEdit.showSectionErrors;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { AnimalOutcomeV2 } from "../../../../../types/app/complaints/outcomes/wi
import { AnimalTagV2 } from "../../../../../types/app/complaints/outcomes/wildlife/animal-tag";
import { DrugUsedV2 } from "../../../../../types/app/complaints/outcomes/wildlife/drug-used";
import Option from "../../../../../types/app/option";
import { selectOfficersByAgencyDropdown } from "../../../../../store/reducers/officer";
import { selectOfficerListByAgency } from "../../../../../store/reducers/officer";
import { from } from "linq-to-typescript";
import { EarTag } from "./ear-tag";
import { DrugUsed } from "./drug-used";
Expand Down Expand Up @@ -65,7 +65,7 @@ export const CreateAnimalOutcome: FC<props> = ({ index, assignedOfficer: officer
const threatLevels = useAppSelector(selectThreatLevelDropdown);
const conflictHistories = useAppSelector(selectConflictHistoryDropdown);
const outcomes = useAppSelector(selectWildlifeComplaintOutcome);
const officers = useAppSelector(selectOfficersByAgencyDropdown(agency));
const officers = useAppSelector(selectOfficerListByAgency);
const isInEdit = useAppSelector((state) => state.cases.isInEdit);
const showSectionErrors = isInEdit.showSectionErrors;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { forwardRef, useImperativeHandle, useState } from "react";
import { DrugAuthorizationV2 } from "../../../../../types/app/complaints/outcomes/wildlife/drug-authorization";
import { CompSelect } from "../../../../common/comp-select";
import { useAppSelector } from "../../../../../hooks/hooks";
import { selectOfficersByAgencyDropdown } from "../../../../../store/reducers/officer";
import { selectOfficerListByAgency } from "../../../../../store/reducers/officer";
import { ValidationDatePicker } from "../../../../../common/validation-date-picker";
import Option from "../../../../../types/app/option";
import { REQUIRED } from "../../../../../constants/general";
Expand All @@ -24,7 +24,7 @@ export const DrugAuthorizedBy = forwardRef<refProps, props>((props, ref) => {
drugAuthorization: { officer, date },
} = props;

const officers = useAppSelector(selectOfficersByAgencyDropdown(agency));
const officers = useAppSelector(selectOfficerListByAgency);

//-- errors
const [officerError, setOfficerError] = useState("");
Expand Down
Loading
Loading