From 2a991a87bc12d63cd9e81b63d9f42e22c947ccac Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Wed, 7 Oct 2020 16:00:31 -0300 Subject: [PATCH] [FIX] Selecting the same department for multiple units (#19168) --- ee/client/omnichannel/units/EditUnit.js | 20 ++++++++++++-------- ee/client/omnichannel/units/UnitsRoute.js | 6 +++--- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ee/client/omnichannel/units/EditUnit.js b/ee/client/omnichannel/units/EditUnit.js index d932cb2e949..0bd98b25700 100644 --- a/ee/client/omnichannel/units/EditUnit.js +++ b/ee/client/omnichannel/units/EditUnit.js @@ -12,7 +12,7 @@ import { useForm } from '../../../../client/hooks/useForm'; import { useRoute } from '../../../../client/contexts/RouterContext'; -export function UnitEditWithData({ unitId, reload }) { +export function UnitEditWithData({ unitId, reload, allUnits }) { const query = useMemo(() => ({ unitId }), [unitId]); const { data, state, error } = useEndpointDataExperimental('livechat/units.getOne', query); const { data: availableDepartments, state: availableDepartmentsState, error: availableDepartmentsError } = useEndpointDataExperimental('livechat/department'); @@ -29,16 +29,19 @@ export function UnitEditWithData({ unitId, reload }) { return {t('Not_Available')}; } + const filteredDepartments = { departments: availableDepartments.departments.filter((department) => !allUnits || !allUnits.units || !department.ancestors || department.ancestors[0] === unitId || !allUnits.units.find((unit) => unit._id === department.ancestors[0])) }; + + return ; } -export function UnitNew({ reload }) { +export function UnitNew({ reload, allUnits }) { const t = useTranslation(); const { data: availableDepartments, state: availableDepartmentsState, error: availableDepartmentsError } = useEndpointDataExperimental('livechat/department'); @@ -52,7 +55,8 @@ export function UnitNew({ reload }) { return {t('Not_found')}; } - return ; + const filteredDepartments = { departments: availableDepartments.departments.filter((department) => !allUnits || !allUnits.units || !department.ancestors || !allUnits.units.find((unit) => unit._id === department.ancestors[0])) }; + return ; } export function UnitEdit({ data, unitId, isNew, availableDepartments, availableMonitors, unitMonitors, reload, ...props }) { @@ -89,10 +93,10 @@ export function UnitEdit({ data, unitId, isNew, availableDepartments, availableM monitors, } = values; - const nameError = useMemo(() => (!name || name.length === 0 ? t('The_field_is_required', 'name') : undefined), [name, t]); - const visibilityError = useMemo(() => (!visibility || visibility.length === 0 ? t('The_field_is_required', 'description') : undefined), [visibility, t]); - const departmentError = useMemo(() => (!departments || departments.length === 0 ? t('The_field_is_required', 'departments') : undefined), [departments, t]); - const unitMonitorsError = useMemo(() => (!monitors || monitors.length === 0 ? t('The_field_is_required', 'monitors') : undefined), [monitors, t]); + const nameError = useMemo(() => (!name || name.length === 0 ? t('The_field_is_required', t('name')) : undefined), [name, t]); + const visibilityError = useMemo(() => (!visibility || visibility.length === 0 ? t('The_field_is_required', t('description')) : undefined), [visibility, t]); + const departmentError = useMemo(() => (!departments || departments.length === 0 ? t('The_field_is_required', t('departments')) : undefined), [departments, t]); + const unitMonitorsError = useMemo(() => (!monitors || monitors.length === 0 ? t('The_field_is_required', t('monitors')) : undefined), [monitors, t]); const saveUnit = useMethod('livechat:saveUnit'); diff --git a/ee/client/omnichannel/units/UnitsRoute.js b/ee/client/omnichannel/units/UnitsRoute.js index 822aae90e09..6f0ffeda301 100644 --- a/ee/client/omnichannel/units/UnitsRoute.js +++ b/ee/client/omnichannel/units/UnitsRoute.js @@ -127,11 +127,11 @@ function UnitsRoute() { - {context === 'edit' && } - {context === 'new' && } + {context === 'edit' && } + {context === 'new' && } ; - }, [t, context, id, unitsRoute, reload]); + }, [t, context, id, unitsRoute, reload, data]); if (!canViewUnits) { return ;