UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

44 lines (40 loc) 1.5 kB
import {tolerant_selector} from './base' import {get_missions_workplace_id} from 'selectors/mission_workplace' import { create_hash, hash_each, map_hash, array_from_set, set_from_array, split_array, } from 'common/utilities' const get_raw_mission_users = (state) => state.missions.users const get_raw_users = (state) => state.users.users export const get_user_assigned_mission_ids = tolerant_selector( [get_raw_mission_users, get_raw_users], (mission_users, users) => { const user_assigned_mission_ids = create_hash( Object.keys(users), (user_id) => [] ) hash_each(mission_users, (mission_id, user_statuses) => { hash_each(user_statuses, (user_id, status) => { if (status == 'assigned') { if (!user_assigned_mission_ids[user_id]) { user_assigned_mission_ids[user_id] = [] } user_assigned_mission_ids[user_id].push(mission_id) } }) }) return user_assigned_mission_ids } ) export const get_user_workplaces_count = tolerant_selector( [get_user_assigned_mission_ids, get_missions_workplace_id], (user_assigned_mission_ids, missions_workplace_id) => map_hash( user_assigned_mission_ids, (mission_ids) => { const workplace_ids = mission_ids.map((mission_id) => missions_workplace_id[mission_id]).filter(Boolean) return map_hash( split_array(workplace_ids, (workplace_id) => workplace_id), (workplace_ids) => workplace_ids.length, ) } ) )