refactor(FE): Refactor recording restriction logic for clarity and

accuracy
This commit is contained in:
rstubryan
2026-03-10 14:02:07 +07:00
parent aa13e989c1
commit 44a5c51023
3 changed files with 44 additions and 38 deletions
@@ -107,9 +107,13 @@ const RowOptionsMenu = ({
}; };
const isRecordingEditable = (recording: Recording) => { const isRecordingEditable = (recording: Recording) => {
const currentIsLaying =
recording.project_flock?.project_flock_category === 'LAYING';
const restriction = getRecordingRestriction( const restriction = getRecordingRestriction(
recording.is_laying, recording.is_laying,
recording.is_transition recording.is_transition,
currentIsLaying
); );
if (restriction.isLocked) { if (restriction.isLocked) {
@@ -119,9 +123,13 @@ const RowOptionsMenu = ({
}; };
const getRecordingRestrictionInfo = (recording: Recording) => { const getRecordingRestrictionInfo = (recording: Recording) => {
const currentIsLaying =
recording.project_flock?.project_flock_category === 'LAYING';
return getRecordingRestriction( return getRecordingRestriction(
recording.is_laying, recording.is_laying,
recording.is_transition recording.is_transition,
currentIsLaying
); );
}; };
@@ -545,12 +545,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
type, type,
]); ]);
const isRecordingEditable = useCallback( const isRecordingEditable = useCallback((recording?: Recording) => {
(recording?: Recording) => {
if (!recording) return true; if (!recording) return true;
const currentIsLaying = const currentIsLaying =
projectFlockKandangDetail?.project_flock?.category === 'LAYING'; recording.project_flock?.project_flock_category === 'LAYING';
const restriction = getRecordingRestriction( const restriction = getRecordingRestriction(
recording.is_laying, recording.is_laying,
@@ -563,9 +562,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
} }
return true; return true;
}, }, []);
[projectFlockKandangDetail]
);
const { const {
options: stockProductOptions, options: stockProductOptions,
@@ -22,8 +22,7 @@ export const getRecordingRestriction = (
}; };
} }
if (!isLaying) { if (isTransition && !isLaying) {
if (isTransition) {
return { return {
canEditStock: true, canEditStock: true,
canEditDepletion: false, canEditDepletion: false,
@@ -32,6 +31,8 @@ export const getRecordingRestriction = (
lockReason: undefined, lockReason: undefined,
}; };
} }
if (!isLaying && !isTransition) {
return { return {
canEditStock: true, canEditStock: true,
canEditDepletion: true, canEditDepletion: true,
@@ -40,16 +41,7 @@ export const getRecordingRestriction = (
lockReason: undefined, lockReason: undefined,
}; };
} }
if (isLaying && !isTransition) {
if (isTransition) {
return {
canEditStock: false,
canEditDepletion: true,
canEditEgg: false,
isLocked: false,
lockReason: undefined,
};
}
return { return {
canEditStock: true, canEditStock: true,
canEditDepletion: true, canEditDepletion: true,
@@ -57,4 +49,13 @@ export const getRecordingRestriction = (
isLocked: false, isLocked: false,
lockReason: undefined, lockReason: undefined,
}; };
}
return {
canEditStock: false,
canEditDepletion: false,
canEditEgg: false,
isLocked: true,
lockReason: 'Kondisi transisi tidak valid',
};
}; };