Привет, мудрые люди в ТАК. Это SOS.
У меня глубокие проблемы. В моем веб-приложении есть объект (скажем, запрос на что-то). Пользователь отправляет свой запрос. После этого речь идет о людях, которые могут одобрить / не одобрить этот запрос. В течение периода от подачи до одобрения / отклонения по запросу могут быть предприняты многие действия. Я должен предоставить пользователю панель действий (набор ссылок), с помощью которой он может изменить состояние запроса.
Теперь в зависимости от того, на каком этапе обработки запроса некоторые действия не разрешены. Также, если какое-либо действие уже было предпринято, это исключает возможность других действий.
В целом это создает довольно сложную матрицу разрешенных / запрещенных действий, которую моя крошечная голова не может позаботиться об этом.
Я создал несколько статических классов / методов, которые возвращают массивы разрешенных действий в зависимости от состояния запроса. Существует около 20 состояний, в которых может находиться приложение. Я позаботился на основе состояния, чтобы удалить / отключить ссылки для действий, которые невозможны в этом состоянии.
Теперь возникает проблема: предположим, что запрос находится в состоянии X.
Теперь, если в прошлом действие l было предпринято по запросу, мы не можем разрешить l или на основании этого некоторые произвольные действия m, n, o.
После написания всех методов для получения массивов ссылок для 20 состояний я должен отфильтровать массивы на основе прошлой истории действий (которая хранится в sql db), что является очень и очень большой задачей.
Пожалуйста, предложите мне шаблон, который легче реализовать и эффективнее. Это действует мне на нервы.