Здравствуйте. Помогите, пожалуйста, оптимизировать код проверки условий на странице оформления заказа.
Есть страница оформления заказа, сделанная на конструкторе, который позволяет вставить кастомный html-css-js код.
Есть форма на PHP, которая принимает запросы, которые отправляются после первого входа на страницу заказа и возвращает информацию о пользователе из базы.
На основании этой информации делаются проверки.
Например, если вернулось hasDiagnostic === "true" и workedWith === "какая-то строка", то сделать следующие операции:
if (hasDiagnostic === "true") {
if (workedWith !== undefined) {
$(`option[value="${workedWith}"]`).attr("selected", "selected");
}
switch (workedWith) {
case "Лилия":
typeConsultation.prop("checked", true);
typeConsultation.click();
liliyaConsultation.prop("checked", true);
liliyaConsultation.click();
break;
case "Александра":
typeConsultation.prop("checked", true);
typeConsultation.click();
alexConsultation.prop("checked", true);
alexConsultation.click();
break;
Это лишь маленький участок кода, у меня там дальше по 15 таких "кейсов".
Это можно как-то оптимизировать или придётся мириться с огромным количеством кейсов и условий?
Или другой случай, более сложный для меня.
Нужно отслеживать изменение двух параметров, например: выбор имени специалиста и выбор типа услуги. Перед этим, естественно, скрипт запросил у базы данные о пользователе и вернул их.
И дальше начинается пляска:
- (если выбран тип услуги №1 и сотрудник) И (значение из базы === имя сотрудника), то всё ок, ничего не делаем
- (если выбран тип услуги №1 и сотрудник) И (значение из базы !== имя сотрудника), то выводим предупреждение
- (если выбран тип услуги №2 и сотрудник) И (значение из базы === имя сотрудника и другое значение из базы === true), то всё ок, ничего не делаем
И так далее. Вот тут ступор, как это всё учитывать при проверке, если пользователь может свободно переключать типы услуг (там радио-кнопка) и выбирать сотрудника из выпадающего списка?
Делать большой список условий, который будет проверяться при изменении типа услуги? Типа input[id="type"].change() - и внутри погнал проверять все условия, если сменилась радио-кнопка.
И отдельно select[option="Имя Фамилия"].change() - это для КАЖДОГО сотрудника в списке - и тоже аналогичные проверки, только на совпадение с типом услуги?
Вроде простая проверка, по сути, но у меня всё на 200 строк кода выходит. Понимаю, что творю дикую вирмишель из кода, но как оптимизировать - не понимаю :(
Подскажите, пожалуйста, какие-нибудь идеи по оптимизации таких проверок.