import { DashboardAcl, DashboardAclDTO } from 'app/types/acl';

export function processAclItems(items: DashboardAclDTO[]): DashboardAcl[] {
  return items.map(processAclItem).sort((a, b) => b.sortRank - a.sortRank || a.name.localeCompare(b.name));
}

function processAclItem(dto: DashboardAclDTO): DashboardAcl {
  const item = dto as DashboardAcl;

  item.sortRank = 0;
  if (item.userId > 0) {
    item.name = item.userLogin;
    item.sortRank = 10;
  } else if (item.teamId > 0) {
    item.name = item.team;
    item.sortRank = 20;
  } else if (item.role) {
    item.icon = 'fa fa-fw fa-street-view';
    item.name = item.role;
    item.sortRank = 30;
    if (item.role === 'Editor') {
      item.sortRank += 1;
    }
  }

  if (item.inherited) {
    item.sortRank += 100;
  }

  return item;
}