Пример #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
  /** составить словарь для комбо, с именем и фамилией, только активные пользователи */
  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);
    }
  }
Пример #3
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;
  }
Пример #4
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));
    }
  }
Пример #5
0
 @Override
 public void findActive() {
   try {
     // найти ссылки для активного пользователя
     Table userLink = getTable("user_link");
     Table users = getTable("users");
     Table userProfile = getTable("userProfile");
     Select sel = getSelect();
     sel.select(userLink, userProfile);
     sel.from(userLink, users, userProfile);
     sel.and(userLink.get("user_id").eq(getAuthorizedUserId()));
     sel.and(userLink.get("partner_id").eq(users.get("user_id")));
     sel.and(users.get("user_id").eq(userProfile.get("user_id")));
     sel.and(userLink.get("delete_date").isNull());
     sel.and(users.get("active_to").isNull());
     sel.and(userProfile.get("delete_date").isNull());
     sel.executeSelect(getConnection());
     select(sel);
   } catch (Exception e) {
     registerException(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
 /**
  * проверить, высылал ли авторизованный пользователь инвайт на этот адрес
  *
  * @param login
  * @return true - если ещё не высылал, false - если уже высылал
  */
 private boolean checkInvite(String email) throws Exception {
   boolean ok = false;
   Table invite = getTable("invite");
   Select sel = getSelect();
   sel.select(invite);
   sel.from(invite);
   sel.and(invite.get("delete_date").isNull());
   sel.and(invite.get("login").eq(email));
   sel.and(invite.get("user_id").eq(getAuthorizedUserId()));
   if (sel.executeSelect(getConnection())) {
     if (sel.getDinamicList().isEmpty()) {
       ok = true;
     } else {
       setStatus(false);
       addError(
           "Вы уже отправили приглашение этому пользователю! Подождите, пока пользователь зарегистрируется в системе!");
     }
   } else {
     setStatus(false);
     addError(sel.getError());
   }
   return ok;
 }
Пример #8
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);
    }
  }
Пример #9
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);
   }
 }