예제 #1
0
  /** составить словарь для комбо, с именем и фамилией, все пользователи */
  public void getAllWithCombo() {
    try {

      Table users = getTable(getModelName());
      Table userProfile = getTable("userProfile");
      Select select = getSelect();
      select.selectDistinct(users.getPrimary());
      select.select(users);
      select.select(userProfile.get("surname"), userProfile.get("name"));
      select.from(users);

      select.leftJoin(users.getPrimary(), userProfile.get("user_id"));
      // select.on(userProfile.get("delete_date").isNull());

      select.order(userProfile.get("surname"), OrdTypes.ASC);
      select.executeSelect(getConnection());

      select(select);
      setDictAliases("surname", "name");
      setDictionary();
    } catch (Exception ex) {
      addError(MyString.getStackExeption(ex));
      if (project.index.message != null) {
        project.index.message += MyString.getStackExeption(ex);
      }
      setStatus(false);
    }
  }
예제 #2
0
  @Override
  public void renderAddEntityForm() {
    try {
      AbsEnt data = getFabric().get("div");
      LinkedHashMap<AbsEnt, String> hs = new LinkedHashMap<AbsEnt, String>();
      hs.put(
          textInput(fieldName, getReq(fieldName), "Сообщение*")
              .setAttribute(EnumAttrType.size, "80"),
          "");
      hs.put(hiddenInput("client_id", getReq("client_id")), "");
      hs.put(hiddenInput("showMenu", renders.entities.client.MENU_COMMENTS), "");

      FormOptionInterface fo = getFormOption(objectName, "add", "add");
      fo.setTitle("ОК");
      setButtonStyle(fo, BUTTON_OK);
      fo.setRenderType(RenderTypes.ajax);
      fo.setJsHandler(JsHandlers.ajax(CONTAINER_ID));
      AbsEnt form = rightForm(hs, fo);
      // AbsEnt form = standartAjaxForm(false, objectName, "add", "add", hs, "ОК",
      // getRenderConstant().OK_IMGPH);
      data.addEnt(form);
      AbsEnt Mw = standartFloatWindow("Добавить комментарий", data);
      addRenderResult(Mw.render());
    } catch (Exception ex) {
      addRenderResult(MyString.getStackExeption(ex));
    }
  }
예제 #3
0
  /** составить словарь для комбо, с именем и фамилией, только активные пользователи */
  public void getActiveWithCombo() {
    try {

      Table users = getTable(getModelName());
      Table userProfile = getTable("userProfile");
      Select select = getSelect();
      select.selectDistinct(users.getPrimary());
      select.select(users);
      select.select(userProfile.get("surname"), userProfile.get("name"));
      select.from(users, userProfile);

      select.and(users.get("user_id").eq(userProfile.get("user_id")));
      select.and(userProfile.get("delete_date").isNull());
      select.and(users.get("active_to").isNull());

      select.order(userProfile.get("surname"), OrdTypes.ASC);
      select.executeSelect(getConnection());

      select(select);
      setDictAliases("surname", "name");
      setDictionary();
    } catch (Exception ex) {
      addError(MyString.getStackExeption(ex));
      setStatus(false);
    }
  }
예제 #4
0
  // регистрация пользователя
  public boolean registrationWithPassword() throws Exception {
    boolean status = false;
    // проверить наличие такого логина
    ArrayList<String> errors = new ArrayList<String>();
    if (MyString.NotNull(getReq("login"))) {
      if (MyString.NotNull(getReq("password")) && MyString.NotNull(getReq("password2"))) {
        if (getReq("password").equals(getReq("password2"))) {
          String password = getReq("password").toString();
          String login = (String) getReq("login");
          Table users = getTable("users");
          Select se = getSelect();
          se.select(users);
          se.from(users);
          se.and(users.get("login").eq(login));
          se.and(users.get("active_to").isNull());
          se.executeSelect(getConnection());
          if (se.getDinamicList().size() > 0) {
            errors.add("Пользователь с таким адресом электронной почты уже существует");
          } else {
            String hash = Security.getPasswordHash(password);
            Model userModel = getModel(getModelName());
            userModel.set("password", hash);
            userModel.set("login", login);
            userModel.set("active_from", FormatDate.getCurrentDateInMysql());
            status = userModel.save();
            if (status) {
              set("user_id", userModel.get("user_id"));
            } else {
              errors.addAll(userModel.getError());
            }
          }
        } else {
          addError("Ошибка: пароль не совпадает с подтверждением");
        }
      } else {
        setStatus(false);
        addError("не передан пароль");
      }
    } else {
      setStatus(false);
      addError("не передан адрес электронной почты");
    }

    addError(errors);
    setStatus(status);
    return status;
  }
예제 #5
0
  @Override
  public void updateModel() {
    try {
      if (MyString.NotNull(getReq("login"), getReq("user_id"))) {
        // проверить, есть ли уже такой логин
        Table usersTable = getTable("users");
        Select sel = getSelect();
        sel.select(usersTable.get("user_id"), "count", AgrTypes.COUNT);
        sel.from(usersTable);
        sel.and(usersTable.get("login").isLikeLower(getReq("login")));
        sel.and(usersTable.get("login").eq((getReq("login"))));
        sel.and(usersTable.get("user_id").notEq(getReq("user_id")));
        sel.and(usersTable.get("active_to").isNull());
        boolean ok = sel.executeSelect(getConnection());

        if (ok) {
          int count = 0;
          if (!sel.getDinamicList().isEmpty()) {
            DinamicModel model = sel.getDinamicList().get(0);
            try {
              count = Integer.parseInt(model.get("count").toString());
            } catch (Exception e) {
            }
          }
          if (count == 0) {
            super.updateModel();
          } else {
            setStatus(false);
            addError("логин " + getReq("login") + " уже существует у другого пользователя");
          }
        } else {
          setStatus(false);
          addError(sel.getError());
        }
      } else {
        setStatus(false);
        addError("не все параметры переданы");
      }
    } catch (Exception e) {
      setStatus(false);
      addError(MyString.getStackExeption(e));
    }
  }
예제 #6
0
  /**
   * составить словарь для комбо, с именем и фамилией, только активные пользователи, и только те,
   * которые есть в списке у авторизованного
   */
  public void getActiveWithComboOnlyGroup() {
    try {

      Table users = getTable(getModelName());
      Table userProfile = getTable("userProfile");
      Table userLink = getTable("user_link");
      Select select = getSelect();
      select.selectDistinct(users.getPrimary());
      select.select(users);
      select.select(userProfile.get("surname"), userProfile.get("name"));
      select.from(users, userProfile, userLink);

      select.and(users.get("user_id").eq(userProfile.get("user_id")));
      select.and(userProfile.get("delete_date").isNull());
      select.and(users.get("active_to").isNull());

      List<Condition> cnd = new ArrayList();
      cnd.add(users.get("user_id").eq(getAuthorizedUserId()));

      List<Condition> cnd2 = new ArrayList();
      cnd2.add(users.get("user_id").eq(userLink.get("partner_id")));
      cnd2.add(userLink.get("user_id").eq(getAuthorizedUserId()));
      cnd2.add(userLink.get("delete_date").isNull());
      select.andOrList(cnd, cnd2);

      select.order(userProfile.get("surname"), OrdTypes.ASC);
      select.executeSelect(getConnection());

      select(select);
      setDictAliases("surname", "name");
      setDictionary();
    } catch (Exception ex) {
      addError(MyString.getStackExeption(ex));
      if (project.index.message != null) {
        project.index.message += MyString.getStackExeption(ex);
      }
      setStatus(false);
    }
  }
예제 #7
0
 /** обновить данные модели */
 @Override
 public void closeModel() {
   try {
     Model model = getModel(getModelName());
     boolean status = false;
     model.set(getRequestClone());
     if (model.findByPrimary() == false) {
       status = false;
       addError("Не обнаружен первичный ключ " + model.getPrimaryAlias());
     } else {
       model.set("active_to", FormatDate.getCurrentDateInMysql());
       status = model.save();
       getActionResult().model(model);
       for (String name : model.getParams().keySet()) {
         set(name, model.getParams().get(name));
       }
     }
   } catch (Exception ex) {
     addError(MyString.getStackExeption(ex));
   }
 }
예제 #8
0
 /** сбросить пароль на случайное значение */
 public void resetPassword() {
   try {
     if (MyString.NotNull(getReq("user_id"))) {
       Model users = getModel();
       users.set("user_id", getReq("user_id"));
       set("user_profile_id", getReq("user_profile_id"));
       if (users.findByPrimary()) {
         String password = "******";
         users.set("password", Security.getPasswordHash(password));
         users.save();
         set("password", password);
         model(users);
       } else {
         addError(users.getError());
       }
     } else {
       addError("не определен пользователь");
     }
   } catch (Exception e) {
     registerException(e);
   }
 }
예제 #9
0
  /** добавить пользователя в группу. Подается параметр - логин пользователя */
  @Override
  public void saveModel() {
    try {
      if (MyString.NotNull(getReq("byUser"))) {
        saveByUserId();
      } else {

        if (MyString.NotNull(getReq("login"))) {
          String login = getReq("login").toString().trim();
          Table userLink = getTable("user_link");
          Table users = getTable("users");
          // найти пользователя с таким логином
          Select userSelect = getSelect();
          userSelect.select(users);
          userSelect.from(users);
          userSelect.and(users.get("active_to").isNull());
          userSelect.and(users.get("login").eq(login));
          boolean ok = userSelect.executeSelect(getConnection());
          if (!ok) {
            setStatus(false);
            addError(userSelect.getError());
            return;
          }
          // если есть такой пользователь
          if (!userSelect.getDinamicList().isEmpty()) {
            DinamicModel model = userSelect.getDinamicList().get(0);
            Object userId = model.get("user_id");
            // проверить, нет ли попытки добавить самого себя
            int userIdInt = Integer.parseInt(userId.toString());
            if (userIdInt != getAuthorizedUserId()) {
              // найти этого пользователя в группе у авторизованного
              Select linkSelect = getSelect();
              linkSelect.select(userLink);
              linkSelect.from(userLink);
              linkSelect.and(userLink.get("delete_date").isNull());
              linkSelect.and(userLink.get("user_id").eq(getAuthorizedUserId()));
              linkSelect.and(userLink.get("partner_id").eq(userId));
              ok = linkSelect.executeSelect(getConnection());
              if (!ok) {
                setStatus(false);
                addError(linkSelect.getError());
                return;
              }
              // если его там нет
              if (linkSelect.getDinamicList().isEmpty()) {
                // сохранить
                setReq("user_id", getAuthorizedUserId());
                setReq("partner_id", userId);
                super.saveModel();
                return;
              } else {
                // вывести ошибку
                setStatus(false);
                addError("Этот пользователь уже есть в вашей группе");
              }
            } else {
              setStatus(false);
              addError("Нельзя добавить в группу самого себя");
            }
          } else {
            // проверить правильность электронного адреса
            // если адрес правильный
            if (checkEmail(login)) {
              //  проверка - высылался ли уже инвайт этому пользователю
              if (checkInvite(login) && getStatus() == true) {
                // отправить инвайт
                sendInvite(login);
                if (getStatus() == true) {
                  // сохранить инвайт
                  saveInvite(login);
                  if (getStatus()) {
                    addMessage(
                        "Этому пользователю было выслано приглашение на электронную почту. Когда пользователь зарегистрируется в системе, он будет добален в Вашу группу!");
                  }
                }
              }
            } else {
              setStatus(false);
              addError("ошибка: введен некорректный адрес электронной почты!");
            }
          }
        } else {
          setStatus(false);
          addError("Введите логин");
        }
      }
    } catch (Exception e) {
      registerException(e);
    }
  }
예제 #10
0
 /**
  * сохранить связь между пользователями по инвайту. Применяется, когда регистрируется новый
  * пользователь, и этот пользователь был приглашен другим пользователем. Тогда мы регистрируем
  * связи между этими двумя пользователями - приглашенным и тем, кто пригласил.
  */
 public void saveFromInvite() {
   try {
     if (MyString.NotNull(getReq("user_id")) && MyString.NotNull(getReq("login"))) {
       // получить ИД добавленного пользователя
       // получить логин
       Object login = getReq("login");
       Object guestId = getReq("user_id");
       // найти в таблице все записи с таким логином
       Table inviteTable = getTable("invite");
       Select sel = getSelect();
       sel.select(inviteTable);
       sel.from(inviteTable);
       sel.and(inviteTable.get("delete_date").isNull());
       sel.and(inviteTable.get("login").eq(login));
       boolean ok = sel.executeSelect(getConnection());
       if (!ok) {
         setStatus(false);
         addError(sel.getError());
       }
       // для каждой записи
       for (DinamicModel model : sel.getDinamicList()) {
         Object hostId = model.get("user_id");
         if (hostId != null) {
           // сохранить две связи
           Model link1 = getModel();
           link1.set("user_id", hostId);
           link1.set("partner_id", guestId);
           setStandartFields(link1, true);
           ok = link1.save();
           if (!ok) {
             setStatus(false);
             addError("3");
             addError(link1.getError());
           }
           // сохранить две связи
           Model link2 = getModel();
           link2.set("user_id", guestId);
           link2.set("partner_id", hostId);
           setStandartFields(link2, true);
           ok = link2.save();
           if (!ok) {
             setStatus(false);
             addError("2");
             addError(link2.getError());
           }
           // закрыть саму запись
           Model invite = getModel("invite");
           invite.set("invite_id", model.get("invite_id"));
           setStandartFields(invite, false);
           invite.set("delete_date", FormatDate.getCurrentDateInMysql());
           ok = invite.save();
           if (!ok) {
             setStatus(false);
             addError("1");
             addError(invite.getError());
           }
         }
       }
     } else {
       setStatus(false);
       addError("не переданы ИД пользователя или логин");
     }
   } catch (Exception e) {
     registerException(e);
   }
 }