Exemplo n.º 1
0
/**
 * This is a generic SQL function.  You input the appropriate variables
 * and the function does all the SQL for you and returns information based
 * on SQL type (Update / Insert / Select / Delete) in a consistent manner. 
 *
 * @param $sql                  SQL Statement
 * @param $param_type_array     SQL Param Types (integer, string, etc)
 * @param $param_array          SQL Params
 * @param $sql_op               SQL Operations (Update, Insert, Select, Delete)
 *
 * UPDATE / INSERT / DELETE:
 * @return                      Success / Failure / Warning Codes (Constants)
 *
 * SELECT:
 * @return                      JSON Object / Failure Codes
 * */
function GenericSQL($sql, $param_type_array, $param_array, $sql_op)
{
    global $mysqli;
    try {
        if ($stmt = $mysqli->prepare($sql)) {
            if ($param_type_array !== NULL && $param_array !== NULL) {
                call_user_func_array(array($stmt, "bind_param"), array_merge(passByReference($param_type_array), passByReference($param_array)));
            }
            $stmt->execute();
            if ($stmt->affected_rows === 0 && $sql_op !== SQL_SELECT) {
                return NOTHING_AFFECTED;
            } elseif ($stmt->affected_rows === -1 && $sql_op !== SQL_SELECT) {
                return $stmt->errno;
            } elseif ($sql_op === SQL_SELECT) {
                $data = returnJson($stmt);
                return $data;
            } else {
                return SUCCESS;
            }
        } else {
            // Throw error
            fwrite(STDOUT, "else");
            return FAILURE;
        }
    } catch (Exception $e) {
        // Return generic error
        fwrite(STDOUT, "exception");
        return FAILURE;
    }
}
 public function actionUpload()
 {
     $params = \Yii::$app->request->post();
     $name = $params['name'];
     $filetype = $params['filetype'];
     if (\Yii::$app->request->isPost) {
         $model = new Uploadform();
         $model->setFileTableName($model::TABLE_NAME_SHOP_CONFIG);
         $model->file = UploadedFile::getInstance($model, $name);
         if ($model->file) {
             $data = array();
             $data[$model->formName()]['table_name'] = $model->getFileTableName();
             $data[$model->formName()]['file_type'] = $filetype ?: $model::FILE_TYPE_IMAGE;
             $data[$model->formName()]['file_ext'] = $model->file->getExtension();
             if ($id = $model->create($data)) {
                 $file = $model->file_dir . $model->file_name;
                 $file = \Yii::getAlias($file);
                 $rs = $model->file->saveAs($file);
                 $data = ['file_name' => $model->file_name, 'img_src' => getImageHost() . $model->getDir() . $model->file_name];
                 returnJson(1, '成功!', $data);
             } else {
                 $errors = $model->getFirstErrors();
                 $errorInfo = array_shift($errors);
                 returnJson(0, '失败!' . $errorInfo);
             }
             return;
         }
     }
     returnJson(0, '失败,请选择要上传的文件!');
 }
Exemplo n.º 3
0
 protected function checkLogin()
 {
     $user['email'] = $this->input->post('email');
     $user['password'] = $this->input->post('password');
     $userData = $this->Account_Model->getUser($user);
     if (isset($userData) && $userData) {
         // 			bug($userData);
         $this->userSession = array('fullname' => $userData->fullname, 'uid' => $userData->uid, 'lang' => 'vi');
         $this->session->set_userdata($this->userSession);
         $continue = $this->input->get('r') ? $this->input->get('r') : '';
         if ($this->input->get('format') == 'json') {
             return returnJson(true);
         } else {
             redirect($continue);
         }
     } else {
         unset($_POST);
         $this->msg[] = array('type' => 'error', 'text' => $this->lang->line('Login False'));
         if ($this->input->get('format') == 'json') {
             return returnJson(false);
         } else {
             return self::login();
         }
     }
 }
 public function report()
 {
     $data = array();
     if (isset($_POST['content']) && $_POST['content']) {
         $data['content'] = addslashes($_POST['content']);
     }
     if (isset($_POST['img_ids']) && $_POST['img_ids']) {
         $imgArr = explode(',', $_POST['img_ids']);
         $len = count($imgArr);
         $len > 2 && ($len = 2);
         for ($i = 1; $i <= $len; $i++) {
             $data['img_id' . $i] = $imgArr[$i - 1];
         }
     }
     if ($data) {
         if (isset($_POST['qqmail']) && $_POST['qqmail']) {
             $data['qqmail'] = $_POST['qqmail'];
         }
         $oIp = D('ip');
         $ip = $oIp->get_client_ip();
         $iIp = $oIp->getInt($ip);
         $data['ip'] = $iIp;
         $data['time'] = NOW;
         D('UserReport')->insert($data);
     }
     returnJson(SUCCESS, '', '操作成功!');
 }
Exemplo n.º 5
0
Arquivo: Page.php Projeto: imjcw/terse
 function extend($path = '')
 {
     if (empty($path)) {
         returnJson('1002', '模板路径错误!');
     } else {
         $page = Page::init();
         $page->extend($path);
     }
 }
Exemplo n.º 6
0
 public function deleteArticle()
 {
     $id = $_GET['id'];
     if (empty($id)) {
         return returnJson('1003', '未指定需要查找的文章ID!');
     }
     $id = intval($id);
     return $this->delete(array('id' => $id));
 }
 public function addPraise()
 {
     $data = array(array('obj_id', 'int'));
     dataFilter($data, 'post');
     $user_id = 1;
     $rs = D('Praise')->addPraise($user_id, $data['obj_id']);
     $msg = $rs == -1 ? '取消点赞成功!' : '点赞成功!';
     returnJson(SUCCESS, $msg);
 }
 /**
  * 地址修改
  */
 public function alterAddr()
 {
     codecheck();
     $data = array(array('addr', 'string'), array('name', 'string'), array('phone', 'string'), array('id', 'int'));
     dataFilter($data, 'post');
     $id = $data['id'];
     unset($data['id']);
     D('Address')->update($data, 'cust_id=' . $_SESSION['userinfo']['id'] . ' AND id=' . $id);
     returnJson(SUCCESS, '', '操作成功');
 }
Exemplo n.º 9
0
 function model($model = '')
 {
     if (empty($model)) {
         return returnJson('1003', '未指定model名!');
     }
     $model = ucfirst($model);
     $class = $model . 'Model';
     require_once ROOT . '/app/Models/' . $class . '.php';
     return new $class();
 }
Exemplo n.º 10
0
 /**
  * artical detail
  */
 public static function readArticalDeal()
 {
     $requestReticalInfo = Flight::request()->query->getData();
     if (ifNoEmptyData($requestReticalInfo)) {
         $result = ReadService::articalDetail($requestReticalInfo);
         returnJson(false, $result['data'], throwInfo($result['errorn']));
     } else {
         returnJson(false, null, throwInfo(404));
     }
 }
Exemplo n.º 11
0
 public function doDelete()
 {
     $id = intval($_GET['id']);
     if (empty($id)) {
         return returnJson('error');
     }
     $column_biz = new ColumnBiz();
     $result = $column_biz->deleteColumn($id);
     $page = $result ? 'index' : '/error';
     return redirect($page);
 }
 /**
  * 发送消息
  */
 public function sendMsg()
 {
     $cust_id = 2;
     $data = array(array('target_id', 'int'), array('msg_type', 'int'), array('msg', 'string'), array('perOrGroup', 'int'));
     dataFilter($data, 'post');
     $user_id = $group_id = 0;
     $data['perOrGroup'] == 1 ? $user_id = $data['target_id'] : ($group_id = $data['target_id']);
     $userData = array('um_cust_id' => $cust_id, 'um_receive_userid' => $user_id, 'um_perOrGroup' => $data['perOrGroup'], 'um_group_id' => $group_id);
     $conData = array('cm_time' => NOW, 'cm_content' => $data['msg'], 'cm_type' => $data['msg_type']);
     $msg_id = D('Chatmsg')->sendMsg($userData, $conData);
     $retData = array('msg_id' => $msg_id, 'msg' => $data['msg'], 'msg_type' => $data['msg_type'], 'msg_time' => $data['msg'], 'perOrGroup' => $data['perOrGroup'], 'receive_userid' => $user_id, 'group_id' => $group_id);
     returnJson(SUCCESS, $retData);
 }
Exemplo n.º 13
0
 public function connect()
 {
     $this->config = $this->getConfig();
     $this->con = mysql_connect($this->config['DB_HOST'], $this->config['DB_USERNAME'], $this->config['DB_PASSWORD']);
     if (!$this->con) {
         returnJson('1001', '数据库连接错误!');
     }
     //Helper::dd($this->table);
     $con_db = mysql_select_db($this->config['DB_NAME'], $this->con);
     if (!$con_db) {
         returnJson('1001', '数据库不存在!');
     }
     mysql_query('set names utf8');
 }
Exemplo n.º 14
0
function getUsernameData($id)
{
    global $mysqli;
    $sql = "SELECT userName FROM bs_users WHERE userId = ?";
    try {
        if ($stmt = $mysqli->prepare($sql)) {
            $stmt->bind_param("i", $id);
            return returnJson($stmt);
            $stmt->close();
            $mysqli->close();
        }
    } catch (Exception $e) {
        log_error($e, $sql, null);
        return false;
    }
}
 public function save()
 {
     $path = date('Y-m', NOW);
     $oImg = D('Image.Image');
     $iniData = array('dirPath' => COMMON_PATH . 'Image/' . $path . '/');
     $oImg->setParam($iniData);
     $im = $oImg->init($_FILES['fname']);
     //$im=$oImg->compress($im,400,0);
     //$im=$oImg->rotate($im,30);
     //$im=$oImg->textWater($im,'this is a test');
     //$im=$oImg->imageWater($im,COMMON_PATH.'Image/test.jpg');
     $rs = $oImg->saveImage($im);
     $inData = array('src' => DOMAIN . 'Common/Image/' . $path . '/' . $rs['name'], 'w' => $rs['w'], 'h' => $rs['h'], 'time' => NOW);
     $rs = D('Img')->insert($inData);
     unset($inData['time']);
     $inData['id'] = $rs;
     returnJson(SUCCESS, $inData);
 }
 /**
  * 分配任务
  */
 public function operate()
 {
     $operate = I('post.operate');
     $data = I('post.data');
     if (!isset($operate) || !isset($data)) {
         returnJson(801);
     }
     $action = empty($this->operate[$operate]) ? $operate : $this->operate[$operate];
     if (!method_exists($this, $action)) {
         returnJson(403);
     }
     foreach ($data as $key => &$value) {
         $result = call_user_func(array($this, $action), $operate, $value);
         if (!is_null($result)) {
             $value['result'] = $result;
         }
     }
     returnJson(200, '', $data);
 }
 /**
  * 判断验证码是否相同
  */
 public function isEqualCode()
 {
     $data = array(array('phone', 'string', 'sj', '手机'), array('identifyCode', 'string'));
     dataFilter($data, 'post');
     if (D('Checkcode')->checkCorrent($data['phone'], $data['identifyCode'])) {
         returnJson(SUCCESS, '', '验证成功');
     } else {
         returnJson(FAIL, '验证码错误');
     }
     $data = D('Basefilter')->postFilter($filterData);
     if ($data) {
         if (D('Code')->checkCorrent($data['phone'], $data['code'])) {
             returnJson(SUCCESS, '', '验证成功');
         } else {
             returnJson(FAIL, '验证码错误');
         }
     } else {
         returnJson(FAIL, 'unlawful request');
     }
 }
 public function checkCode()
 {
     if (!isset($_POST['code'])) {
         returnJson(CODE_RROR, '校验码错误');
     }
     $data = array(array('code', 'string'));
     dataFilter($data, 'post');
     //校验码检查
     $rs = D('CustCode')->checkValid($data['code']);
     if ($rs === false) {
         returnJson(CODE_RROR, '校验码错误');
     } else {
         if ($rs == -1) {
             returnJson(CODE_EXPIRE, '用户校验码已过期,请重新登陆');
         } else {
             $_SESSION['userinfo'] = array();
             $_SESSION['userinfo']['id'] = $rs;
         }
     }
     return true;
 }
Exemplo n.º 19
0
/**
 * @param $user
 * @return bool|string
 */
function processLogin($user)
{
    global $mysqli;
    $sql = "SELECT password, userId FROM bs_users WHERE userName = ?";
    try {
        if ($stmt = $mysqli->prepare($sql)) {
            $stmt->bind_param("s", $user);
            $stmt->execute();
            return returnJson($stmt);
            $stmt->close();
            $mysqli->close();
        } else {
            throw new Exception("An error occurred while comparing user record data");
        }
        //echo $c;
    } catch (Exception $e) {
        log_error($e, $sql, $user);
        return false;
    }
    return $res;
}
 public function sendMsg($userData, $conData)
 {
     //保存消息内容
     $msg_id = M($this->trueTableName)->insert($conData);
     $userData['um_msg_id'] = $msg_id;
     $oHandle = M('tbl_user_msg');
     if ($userData['um_perOrGroup'] == 1) {
         //判断是否为黑名单成员
         if (D('ChatBlacklist')->isBlacklistMem($userData['um_receive_userid'], $userData['um_cust_id'])) {
             returnJson(FAIL, '请先加为好友!');
         }
         $oHandle->insert($userData);
     } else {
         $mem_ids = D('Groupuser')->getGroupMemIDS($userData['um_group_id']);
         foreach ($mem_ids as $v) {
             $v['um_receive_userid'] = $v;
             $oHandle->insert($userData);
         }
     }
     return $msg_id;
 }
 /**
  * 类似中间件,对权限进行判断
  */
 public function _initialize()
 {
     $action = ucfirst(I('path.0')) . ':' . I('path.1');
     if (!in_array($action, $this->exceptPermit)) {
         $info = session('admin');
         if (!isset($info)) {
             header("HTTP/1.1 403 Forbidden");
             $this->redirect('Index/login', '', 3, '未登录');
             exit;
         }
         $permit = false;
         //验证权限
         if (!($permit = permit($info['id'], $action))) {
             //带参数的权限验证
             while (!$permit) {
                 $id = M('permission')->where("name='%s'", $action)->find()['id'];
                 if (empty($id)) {
                     returnJson(404);
                 }
                 $permission = M('permission')->where('p_id=%d', $id)->find()['name'];
                 if (empty($permission)) {
                     break;
                 }
                 $data = per_decode($permission);
                 //得到查询的参数
                 foreach ($data['data'] as $key => &$value) {
                     if (empty(I($key))) {
                         returnJson(403);
                     }
                     $value = I($key);
                 }
                 $permission = per_encode($data['controller'], $data['action'], $data['data']);
                 $permit = permit($info['id'], $permission);
             }
             if (!$permit) {
                 returnJson(403);
             }
         }
     }
 }
Exemplo n.º 22
0
function CEP_pesquisa($paramPOST, $paramREMOTE)
{
    // Recupera os dados
    $q = trim($paramPOST['q']);
    $device = trim($paramPOST['device']);
    $ipaddress = $paramREMOTE['REMOTE_ADDR'];
    auditoriaLog('Begin - CEP_pesquisa()', $sql, $device, $login, $nome_completo, $ipaddress);
    // Verifica se o CEP esta vindo com hifen e ponto
    // if(strpos($q,".") > 0) {
    //   $cep  = explode(".",$q);
    //   $q = $cep[0].$cep[1];
    // }
    // if(strpos($q,"-") > 0) {
    //   $cep  = explode("-",$q);
    //   $q    = $cep[0].$cep[1];
    // }
    $q = ereg_replace("[' '-. t]", '', $q);
    // Valida se tem conteudo
    if (hasContent($q) == 0) {
        returnJson(-1, 'Favor informar o CEP a ser pesquisado.');
    } else {
        $sql = "SELECT ";
        $sql = $sql . " CONCAT(SUBSTRING(cep,1,2),'.',SUBSTRING(cep,3,3), '-', SUBSTRING(cep,6,8)) AS cep, logradouro, bairro, cidade, estado ";
        $sql = $sql . " FROM cep2012 ";
        $sql = $sql . " WHERE cep = trim('{$q}') LIMIT 1";
    }
    $search = query($sql);
    if ($search['error']) {
        returnJson(-1, "Erro executando pesquisa.", $cep['error']);
    }
    // // se retornou 1 usuario encontrado
    if (isset($search) && sizeof($search) > 0) {
        auditoriaLog('CEP_pesquisa() - CEP localizado.', $sql, $device, $login, $nome_completo, $ipaddress);
        returnJson(0, 'Sucesso.', $search);
    } else {
        auditoriaLog('CEP_pesquisa() - CEP não localizado.', $sql, $device, $login, $nome_completo, $ipaddress);
        returnJson(-1, 'Atenção, CEP não localizado.');
    }
}
 function _initialize()
 {
     $admin = session('admin.id');
     if (isset($admin)) {
         $admin = M('admin')->find($admin);
         if ($admin) {
             return;
         }
     }
     header("Content-type: application/json");
     $this->article = D('articles');
     $this->article_types = D('articletypes');
     $this->article_remarks = D('articleremarks');
     $stuNum = I('post.stuNum');
     $idNum = I('post.idNum');
     if ($stuNum == null || $idNum == null) {
         $info = array("status" => 801, "info" => "invalid parameter");
         returnJson(801);
     } else {
         $this->verify($stuNum, $idNum);
         // $stunum = I('post.stuNum');
         // $idNum  = I('post.idNum');
     }
 }
Exemplo n.º 24
0
            }
            $stmt = $pdo->conn->prepare($sql);
            $exe = $stmt->execute($params);
            if ($exe) {
                echo returnJson(true, 'บ ันทึกสำเร็จ', 'บันทึกสำเร็จ', './index.php?page=list-material_recipe');
            } else {
                echo returnJson(false, 'เกิดข้อผิดพลาด', 'บันทึก ไม่สำเร็จ [ ' . $sql . ' ]', '');
            }
        }
        break;
    case 'delete':
        // delete ลบข้อมูล
        try {
            $pdo->conn = $pdo->open();
            $sql = 'DELETE FROM material_recipe WHERE recipe_id =:id';
            $stmt = $pdo->conn->prepare($sql);
            $exe = $stmt->execute(array(':id' => $_POST['id']));
            if ($exe) {
                echo returnJson(true, 'ลบข้อมูล', 'ลบสำเร็จ', './index.php?page=list-material_recipe');
            } else {
                echo returnJson(false, 'เกิดข้อผิดพลาด', 'ลบ ไม่สำเร็จ [ ' . $sql . ' ]', '');
            }
        } catch (Exception $e) {
            print "Error!: " . $e->getMessage() . "<br/>";
            die;
        }
        $pdo->close();
        break;
    default:
        break;
}
Exemplo n.º 25
0
function DASH_pm_rank_venda_bonus($paramPOST, $paramREMOTE)
{
    $data_inicial = humanToMysql($paramPOST['data_inicial']);
    $data_final = humanToMysql($paramPOST['data_final']);
    $visao = $paramPOST['visao'];
    $id_grupo_financeiro = $paramPOST['grupo'];
    // Recupera os dados
    $device = $paramPOST['device'];
    $ipaddress = $paramREMOTE['REMOTE_ADDR'];
    if ($id_grupo_financeiro == 13) {
        if ($visao == 'APR') {
            // -- volvo
            $sql = "SELECT sum(qtde_veiculo) total, grupo, sum(bonus_volvo) bonus ";
            $sql = $sql . "FROM pm ";
            $sql = $sql . "WHERE upper(STATUS) = upper('aprovado') ";
            $sql = $sql . "AND data_hora_pm BETWEEN '{$data_inicial}' AND '{$data_final}' ";
            $sql = $sql . "GROUP BY grupo; ";
        } else {
            $sql = "SELECT sum(qtde_veiculo) total, grupo, sum(bonus_volvo) bonus ";
            $sql = $sql . "FROM pm ";
            $sql = $sql . "WHERE upper(STATUS) = upper('declinado') ";
            $sql = $sql . "AND data_hora_pm BETWEEN '{$data_inicial}' AND '{$data_final}' ";
            $sql = $sql . "GROUP BY grupo; ";
        }
    } else {
        if ($visao == 'APR') {
            // -- por grupo
            $sql = "SELECT sum(qtde_veiculo) qtde_veiculo, co.unidade, ";
            $sql = $sql . "(SELECT meta_iorder FROM grupo WHERE id_grupo = {$id_grupo_financeiro}) meta   ";
            $sql = $sql . "FROM pm io, concessionaria co    ";
            $sql = $sql . "WHERE io.id_concessionaria IN (    ";
            $sql = $sql . "SELECT id_concessionaria    ";
            $sql = $sql . "FROM concessionaria     ";
            $sql = $sql . "WHERE id_grupo_financeiro = {$id_grupo_financeiro}   ";
            $sql = $sql . ")    ";
            $sql = $sql . "AND upper(io.status) = upper('aprovado')    ";
            $sql = $sql . "AND io.data_hora_pm BETWEEN '{$data_inicial}' AND '{$data_final}' ";
            $sql = $sql . "AND io.id_concessionaria = co.id_concessionaria;   ";
        } else {
            $sql = "SELECT sum(qtde_veiculo) qtde_veiculo, co.unidade, ";
            $sql = $sql . "(SELECT meta_iorder FROM grupo WHERE id_grupo = {$id_grupo_financeiro}) meta   ";
            $sql = $sql . "FROM pm io, concessionaria co    ";
            $sql = $sql . "WHERE io.id_concessionaria IN (    ";
            $sql = $sql . "SELECT id_concessionaria    ";
            $sql = $sql . "FROM concessionaria     ";
            $sql = $sql . "WHERE id_grupo_financeiro = {$id_grupo_financeiro}  ";
            $sql = $sql . ")    ";
            $sql = $sql . "AND upper(io.status) = upper('declinado')    ";
            $sql = $sql . "AND io.data_hora_pm BETWEEN '{$data_inicial}' AND '{$data_final}' ";
            $sql = $sql . "AND io.id_concessionaria = co.id_concessionaria;   ";
        }
    }
    // returnJson(-1, $sql);
    auditoriaLog('Begin - DASH_pm_rank_venda_bonus()', $sql, $device, $usuario, $nome_completo, $ipaddress);
    $result = query($sql);
    if (!$result['error']) {
        if (sizeof($result) > 0) {
            returnJson(0, 'Sucesso', $result);
        } else {
            returnJson(0, "Sem dados no momento.");
        }
    }
}
Exemplo n.º 26
0
function checkChallengeAcceptedGame($d)
{
    $res = array();
    global $mysqli;
    //getting the chats for todays date
    $sql = "Select * from challenge where fromID=? and accepted=true;";
    try {
        if ($stmt = $mysqli->prepare($sql)) {
            $stmt->bind_param("i", $d["userID"]);
            $data = returnJson($stmt);
            $stmt->close();
            $mysqli->close();
            if (!$data || empty($data)) {
                $res["success"] = false;
                $res["message"] = "No challenges accepted.";
            } else {
                $res["success"] = true;
                $res["responseJSON"] = $data;
            }
            return json_encode($res);
        }
    } catch (mysqli_sql_exception $e) {
        throw new MySQLiQueryException($SQL, $e->getMessage(), $e->getCode());
    } catch (Exception $e) {
        echo log_error($e, $sql, null);
        //return false;
        echo 'fail';
    }
}
Exemplo n.º 27
0
function GetFPPStatus()
{
    $status = SendCommand('s');
    if ($status == false || $status == 'false') {
        $status = exec("if ps cax | grep -q git_pull; then echo \"updating\"; else echo \"false\"; fi");
        returnJSON(['fppd' => 'Not Running', 'status' => -1, 'status_name' => $status == 'updating' ? $status : 'stopped']);
    }
    $data = parseStatus($status);
    returnJson($data);
}
Exemplo n.º 28
0
 public function getTagLists()
 {
     $type = I('post.type');
     $p = I('post.p');
     $lists = I('post.lists');
     $lists = substr($lists, 1, strlen($lists) - 1);
     if (!empty($lists)) {
         $choosed_list = explode(',', $lists);
     }
     $html = $this->getTagHtml($type, $p, !empty($choosed_list) ? $choosed_list : array());
     returnJson(array('status' => 'success', 'html' => $html));
 }
 /**
  * 修改绑定手机号
  */
 public function modifyPhoneNum()
 {
     new Codecheck();
     $data = array(array('phone', 'string'), array('identifyCode', 'string'), array('new_phone', 'string'));
     dataFilter($data, 'post');
     if (D('identify')->checkCorrent($data['phone'], $data['identifyCode'])) {
         $upData = array('c_phone' => $data['new_phone']);
         D('Customer')->update($upData, 'c_id=' . $_SESSION['userinfo']['cc_cust_id']);
         returnJson(SUCCESS, '修改成功');
     }
     returnJson(FAIL, '验证码错误');
 }
Exemplo n.º 30
0
<?php

$app->get('/band', function () use($app) {
    $associationService = ZE\Bandaid\Factory\ServiceFactory::create($app->dbType, $app->db, 'Association');
    $params = $app->request()->params();
    $bands = $associationService->getBandsWithVacancies($lastId, $direction);
    returnJson($bands);
});