UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

61 lines (55 loc) 2.5 kB
import store from 'common/store' import request from 'common/request' import {array_contains, property_getter, array_from_hash} from 'common/utilities' import {is_valid_email} from 'common/users' import {update_recruiter, store_teams, store_recruiters} from 'actions/recruiters' import {update_profile} from 'actions/profile' import {show_popover, dismiss_popover, alert_success, alert_warning, alert_failure} from 'actions/display' import NewRecruiter from 'components/popovers/new_recruiter' export function recruiter_full_name({first_name, last_name, email}) { first_name = first_name ? first_name.trim() : "" last_name = last_name ? last_name.trim() : "" return `${first_name} ${last_name}`.trim() || email } export function action_update_recruiter(recruiter) { store.dispatch(update_recruiter(recruiter)) request.delayed_put(`recruiters/${recruiter.id}`, {recruiter}) } export function action_create_team(name) { const {profile: {agency: {id}}} = store.getState() return request.post(`agencies/${id}/teams`, {team: {name}}) .then((team) => { store.dispatch(store_teams([team])) return team.id }) } export function action_invite_recruiter() { store.dispatch(show_popover( NewRecruiter, {invite_recruiter(recruiter) { const email = recruiter.email if (!email) { store.dispatch(alert_failure("Veuillez renseigner une adresse mail.")) } else if (array_contains(array_from_hash(store.getState().recruiters.recruiters).map(property_getter('email')), email)) { store.dispatch(alert_failure("Vous avez déjà invité ce recruteur.")) } else if (!is_valid_email(email)) { store.dispatch(alert_failure("Ce n'est pas une adresse mail valide.")) } else { request.post('recruiters', {recruiter}) .then((recruiter) => { store.dispatch(alert_success(`Nous avons envoyé un mail d'invitation à ${recruiter_full_name(recruiter)}`)) store.dispatch(store_recruiters([recruiter])) }, () => { store.dispatch(alert_warning(`Ce recruteur fait déjà partie d'une autre agence, par conséquent nous n'avons pas envoyé de mail à ${recruiter_full_name(recruiter)}.`)) }) store.dispatch(dismiss_popover()) } }}, 'Ajouter un collaborateur' )) } export function action_update_profile(profile) { store.dispatch(update_profile(profile)) const {id} = store.getState().profile return request.put(`recruiters/${id}`, {recruiter: profile}) }