import { type Action } from 'redux';

import { type IRoles } from '../reducers/roles';
import { ROLES } from './actionsTypes';

export interface ISetRoles extends Action {
	roles: IRoles;
}

export interface IUpdateRoles extends Action {
	payload: { id: string; desc: string };
}

export interface IRemoveRoles extends Action {
	payload: { id: string };
}

export type IActionRoles = ISetRoles & IUpdateRoles & IRemoveRoles;

export function setRoles(roles: IRoles): ISetRoles {
	return {
		type: ROLES.SET,
		roles
	};
}

export function updateRoles(id: string, desc: string): IUpdateRoles {
	return {
		type: ROLES.UPDATE,
		payload: { id, desc }
	};
}

export function removeRoles(id: string): IRemoveRoles {
	return {
		type: ROLES.REMOVE,
		payload: { id }
	};
}
