import composeCheckboxesToBitwise from '../enhanced-redux-form/compositeInputFormatters/composeCheckboxesToBitwise';
import { getKeyByValue } from './objectUtils';
/**
*
* @param data
* @param dataFieldsToString
* @returns {{values: (*|Array), formattedValue: (*|Array|number)}}
*/
export const getCheckBoxValues = (data, dataFieldsToString) => {
const values =
data &&
Object.keys(data).reduce((result, fieldName) => {
const value = getKeyByValue(dataFieldsToString, fieldName);
if (value && data[fieldName]) {
// eslint-disable-next-line no-param-reassign
result[value] = value.toString();
}
return result;
}, []);
const formattedValue = composeCheckboxesToBitwise(values);
return {
values,
formattedValue,
};
};
/**
*
* @param values
* @param dataFields
* @param dataFieldsToString
* @returns {{}}
*/
export const setCheckboxValues = (values, dataFields, dataFieldsToString) =>
Object.values(dataFields).reduce((result, fieldName) => {
if (values.includes(fieldName)) {
// eslint-disable-next-line no-param-reassign
result[dataFieldsToString[fieldName]] = true;
} else if (typeof dataFieldsToString[fieldName] !== 'undefined') {
// eslint-disable-next-line no-param-reassign
result[dataFieldsToString[fieldName]] = false;
}
return result;
}, {});