MVS - это просто упрощение и не идеальный подход. Вот почему возникает так много вопросов, подобных этому.
- Сколько логики должно быть в контроллере?
- Должна ли модель содержать логику?
- Должно ли представление содержать логику?
На подобные вопросы очень сложно ответить, но контроллер должен проверять входные данные и перенаправлять их к представлениям при необходимости. Ваш код действительно очень похож на доменную логику, которая должна появиться в сервисе позже, но ее проще контролировать на контроллере. Для предметной логики (она же бизнес-логика, бизнес-правила и знание предметной области) мы можем объяснить ее как логику, которая принимает критически важные для бизнеса решения.
Итак, действительно, вы принимаете решения в своем контроллере, но управление этими решениями в службе усложняет решение. Так что я бы просто оставил его там, так или иначе, в конце концов, никто, кроме вас и вашей группы, не внесет свой вклад в этот код, так что, если вам это удобно, все в порядке.
Но если бы вы переместили свой код, я бы порекомендовал использовать исключения. Сервисы, на мой взгляд, должны возвращать только нужные модели или ресурсы. Лучше обрабатывать ошибки, используя исключения.