const addedUser = (newUser, users) => { const usersWithoutNewSite = removedNewUser(users) return [newUser,...usersWithoutNewSite] } const getUserById = (id, users) => { return users.find(user => user.id === id) } const usersWithThisService = (serviceId, users) => { // console.log('serviceId', serviceId) return users.filter((user) => user.serviceId.includes(serviceId)) } const usersWithoutThisService = (serviceId, users) => { return users.filter((user) => { return !user.serviceId.includes((serviceId)) }) } const addServiceIdToUser = (selectedUserId, serviceId, users) => { if (selectedUserId && serviceId) { const editIdx = users.findIndex(user => user.id === selectedUserId) const beforeEdit = users.slice(0, editIdx) const afterEdit = users.slice(editIdx + 1) const withEdit = [...beforeEdit, {...users[editIdx], serviceId: [...users[editIdx].serviceId, serviceId]}] return [...withEdit, ...afterEdit] } } const deleteServiceIdFromUser = (selectedUserId, serviceId, users) => { if (selectedUserId && serviceId) { const editIdx = users.findIndex(user => user.id === selectedUserId) const beforeEdit = users.slice(0, editIdx) const afterEdit = users.slice(editIdx + 1) const withEdit = [...beforeEdit, {...users[editIdx], serviceId: users[editIdx].serviceId.filter((id) => id !== serviceId)}] return [...withEdit, ...afterEdit] } } const updatedUser = (updatedUser, users) => { if (updatedUser.id) { const editIdx = users.findIndex(user => user.id === updatedUser.id) const beforeEdit = users.slice(0, editIdx) const afterEdit = users.slice(editIdx + 1) const withEdit = [...beforeEdit, updatedUser] return [...withEdit, ...afterEdit] } } const removedNewUser = (users) => { if (users.length > 0) { const firstUser = users[0] const isNewUser = firstUser.id === -1 users = isNewUser ? users.slice(1) : users return users } } const deletedUser = (deletedUserId, users) => { if (deletedUserId) { const deleteIdx = users.findIndex(user => user.id === deletedUserId) return users.slice(0, deleteIdx).concat(users.slice(deleteIdx + 1)) } } export { addedUser, getUserById, usersWithThisService, usersWithoutThisService, addServiceIdToUser, deleteServiceIdFromUser, updatedUser, removedNewUser, deletedUser }