Как оптимизировать проверку условий в форме?

229
06 марта 2022, 15:00

Помогите, пожалуйста, оптимизировать код проверки условий на странице оформления заказа.

Есть страница оформления заказа, сделанная на конструкторе, который позволяет вставить кастомный 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. (если выбран тип услуги №1 и сотрудник) И (значение из базы !== имя сотрудника), то выводим предупреждение

  3. (если выбран тип услуги №2 и сотрудник) И (значение из базы === имя сотрудника и другое значение из базы === true), то всё ок, ничего не делаем

И так далее. Вот тут ступор, как это всё учитывать при проверке, если пользователь может свободно переключать типы услуг (там радио-кнопка) и выбирать сотрудника из выпадающего списка?

Делать большой список условий, который будет проверяться при изменении типа услуги? Типа input[id="type"].change() - и внутри погнал проверять все условия, если сменилась радио-кнопка.

И отдельно select[option="Имя Фамилия"].change() - это для КАЖДОГО сотрудника в списке - и тоже аналогичные проверки, только на совпадение с типом услуги?

Вроде простая проверка, по сути, но у меня всё на 200 строк кода выходит. Понимаю, что творю дикую вирмишель из кода, но как оптимизировать - не понимаю :(

Подскажите, пожалуйста, какие-нибудь идеи по оптимизации таких проверок.

Answer 1

Странная у вас последовательность.

  • В чем сакральный смысл подобных записей "liliyaConsultation" "alexConsultation"? Уже на этапе их создания, вы должны были усомниться в правильности своего выбора. Когда появится новый врач Петя, вы будете код переписывать peterConsultation? Я уж не говорю про switch...
  • У вас же есть бэк с БД, куда просто надо отправить корректные запросы и он выдаст вам нужные данные по врачам, по пациентам, зачем вы загружаете фронт бизнес логикой?
  • Я бы на вашем месте сначала понял, какие данные можно получить с бека, и, как минимум, нарисовал бы подробную блок схему всего процесса.
  • Хотите оптимизировать? Используйте state machine, а не "Если анализы сданы" "Если врач назначен", "Простыня из свитчкейсов)
READ ALSO
SQL запрос на выборку складов

SQL запрос на выборку складов

Например, имеется много складов и таблица в которой каждая запись отражает на каком складе конкретный товар и сколько штукОдин товар может...

95
MySQL составной запрос

MySQL составной запрос

как правильно сделать запрос такого типа:

84
Как проверить наличие установленного Python на компьютере с помощью Java?

Как проверить наличие установленного Python на компьютере с помощью Java?

Пишу программу,которая запускаетpy скрипт в фоне через GUI на Java

90