Важко сказати шось конкретне, не бачивши всього коду, але те, що кидається персонально мені в очі в цьому конкретному сніппеті:
- я намагаюсь не вживати switch, коли цього можна не робить, особливо коли є кілька кондішнов, які мають той самий результат (як тут) - на мій погляд, це знижує читабельність
- early returns - структурують код to be more uniform vertically (less indentation) —> more readability
Based on the above, what if you threw out the switch and instead did something like
if (!can_manage || !can_request) { throw }
в залежності від того, шо саме робить с() та логіки, можна використовуючи short circuit evaluation прийти до правильного результату
Потім переписати кілька if зверху на ternary чи може assignment with typecasting, шоб коротше було (треба подивитись, чи не заберемо ми читабельність таким чином). Якщо це робити, можна виділити this.allModels.SiteUser в окремий local var для коротше/читабельніше
Just some ideas