291 lines
15 KiB
PHP
291 lines
15 KiB
PHP
<?php
|
|
|
|
class class_STIPENDII{
|
|
function __construct(){
|
|
GLOBAL $ST,$DB;
|
|
$this->DB = $DB;
|
|
$this->Tusers = $ST['dbpf'].'_users';
|
|
$this->Tachievements = $ST['dbpf'].'_achievements';
|
|
//acs_achievements: id, name, kind, region, status, organis, count_m, link_doc, link_group, date_p, file, id_user, place, status_is
|
|
$this->Tstip = $ST['dbpf'].'_stip';
|
|
//acs_stip: id, id_user, facultet, specialnost, grupp, date_create, type, status, semestr, uch_year
|
|
$this->Tstip_dost = $ST['dbpf'].'_stip_dost';
|
|
//acs_stip_dost: id, id_stip, id_achievement, status, commento
|
|
|
|
//достижения авторизованного человека
|
|
//$sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id_user = "'.$id_user.'" ';
|
|
//'INSERT INTO '.$ST['dbpf'].'_achievements (`name`, `kind`, `region`, `status`, `organis`, `count_m`, `link_doc`, `link_group`, `date_p`, `file`, `id_user`, `place`) VALUES ("'.$name.'", "'.$kind.'", "'.$region.'", "'.$status.'", "'.$organis.'", "'.$count.'", "'.$link_doc.'", "'.$link_group.'", "'.$date_p.'", "'.$file.'", "'.$id_user.'", "'.$place.'")
|
|
//создание новой заявки - пустой, без достижений
|
|
//'INSERT INTO '.$ST['dbpf'].'_stip (`id_user`, `facultet`, `specialnost`, `grupp`, `date_create`, `type`, `semestr`, `uch_year`) VALUES ("'.$id_user.'", "'.$facultet.'", "'.$area.'", "'.$grupp.'", "'.$date_create.'", "'.$grant.'", "'.$semestr.'", "'.$uch_year.'")
|
|
//добавление нового достижения к заявке
|
|
// 'INSERT INTO '.$ST['dbpf'].'_stip_dost (id_stip, id_achievement) VALUES ("'.$id_stip.'", "'.$ach.'")
|
|
}
|
|
|
|
function info(){
|
|
$SYS = new class_SYSTEM();
|
|
$out = '<h3>Выгрузка стипендий</h3>';
|
|
$url = 'https://eios.mkgtu.ru/integration/api.php?step=stipendii_get_zayavki&format=';
|
|
$out .= '<div class="row">';
|
|
$out .= '<div class="col-8">';
|
|
$out .= '<p><a href="'.$url.'json" target="_blank" class="btn btn-info btn-sm">JSON</a> формат: <input type="text" class="form-control" value="'.$url.'json"></p>';
|
|
$out .= '<p><a href="'.$url.'csv" target="_blank" class="btn btn-info btn-sm">CSV</a> формат: <input type="text" class="form-control" value="'.$url.'csv"></p>';
|
|
$out .= '</div>';
|
|
$out .= '<div class="col-4">';
|
|
$data['dir'] = 'upload/stipendii/';
|
|
$out .= $SYS->info_last_files($data);
|
|
$out .= '</div>';
|
|
$out .= '</div>';
|
|
return $out;
|
|
}
|
|
|
|
function get_zayavki($data){
|
|
$facultet=urlencode('Лечебный факультет');
|
|
$year_start=2022;
|
|
$semestr=1;
|
|
$json = file_get_contents('https://eios.mkgtu.ru/api_loc.php?step=stipendii_get&facultet='.$facultet.'&year_start='.$year_start.'&semestr='.$semestr);
|
|
$stip = json_decode($json,1);
|
|
$out = array();
|
|
foreach($stip as $k => $v){
|
|
foreach($v as $k1 => $v1){
|
|
if(is_array($v1)){
|
|
foreach($v1 as $k2 => $v2) {
|
|
$out[$k][$k1.'_'.$k2] = $v2;
|
|
}
|
|
}else{
|
|
$out[$k][$k1] = $v1;
|
|
}
|
|
}
|
|
}
|
|
//echo '<pre>'.print_r($out,1).'</pre>';exit();
|
|
//[id] => 514
|
|
//[id_user] => 1244
|
|
//[facultet] => Лечебный факультет
|
|
//[specialnost] => 31.05.01 Лечебное дело
|
|
//[grupp] => ЛД-62 ОФО
|
|
//[date_create] => 1676406735
|
|
//[type] => государственная академическая стипендия в повышенном размере студентам, имеющим достижения в учебной, научно-исследовательской, общественной, культурно-творческой и спортивной деятельности
|
|
//[status] => 0
|
|
//[semestr] => 1
|
|
//[uch_year] => 2022
|
|
//[preim] => Культурно-творческая
|
|
//[score] => 55
|
|
//[user_id] => 1244
|
|
//[user_data_c] => 1505805604
|
|
//[user_data_u] => 1683972955
|
|
//[user_email] => zureta96@mail.ru
|
|
//[user_pass] => 981d44bffa4b0cf7e64a9b7b64ddb82f
|
|
//[user_status] => 0
|
|
//[user_fio] => Ципинова Зурят Муратовна
|
|
//[user_foto] => 1244_ava_orig.jpg
|
|
//[user_high_school] => 1
|
|
//[user_phone] =>
|
|
//[user_polis] =>
|
|
//[user_snils] =>
|
|
//[user_guid] =>
|
|
|
|
$SYS = new class_SYSTEM();
|
|
|
|
$data['filename'] = 'stipendii_'.$SYS->translit_text($facultet).'_'.date('His_dmY').'.csv';
|
|
$data['items'] = $out;
|
|
$data['dir'] = 'stipendii';
|
|
$data['head'] = array(
|
|
'facultet'=>array('name' => 'Факультет','type'=>'string'),
|
|
'date_create'=>array('name' => 'Дата','type'=>'data'),
|
|
'type'=>array('name' => 'Тип','type'=>'string'),
|
|
'semestr'=>array('name' => 'Семестр','type'=>'string'),
|
|
'uch_year'=>array('name' => 'Уч.год','type'=>'string'),
|
|
'data_nv'=>array('name' => 'Дата начала выплаты','type'=>'string'),
|
|
'data_kv'=>array('name' => 'Дата окончания выплаты','type'=>'string'),
|
|
'preim'=>array('name' => 'Область достижений','type'=>'string'),
|
|
'score'=>array('name' => 'Баллы','type'=>'string'),
|
|
'user_fio'=>array('name' => 'ФИО','type'=>'string'),
|
|
'specialnost'=>array('name' => 'Специальность','type'=>'string'),
|
|
'grupp'=>array('name' => 'Группа','type'=>'string'),
|
|
'user_email'=>array('name' => 'Емаил','type'=>'string'),
|
|
'user_guid'=>array('name' => 'GUID','type'=>'string')
|
|
);
|
|
$data['file_get'] = 1;//для получения файла
|
|
$file = $SYS->format($data);
|
|
$curl['url']='https://mkgtu.ru/1c-integration/api.php';
|
|
$curl['post']['auth']='seCre#Pas3245';
|
|
$curl['post']['step']='stipendii_upload';
|
|
$pi = pathinfo($file);
|
|
$curl['post']['files'][]=array('path'=>'/home/admin/web/eios.mkgtu.ru/public_html/integration/'.$file,'mime'=>'text/csv','name'=>$pi['basename']);
|
|
$rez = $SYS->cCurl($curl);
|
|
echo json_encode($rez);
|
|
echo '<pre>'.print_r($pi,1).'</pre>';
|
|
}
|
|
|
|
/**
|
|
* Отображение всех заявок и их баллов
|
|
* @param $data
|
|
* @return void
|
|
*/
|
|
function get_zayavki_old($data){
|
|
$sql = 'SELECT st.id,st.facultet, st.specialnost, st.grupp, st.date_create, st.type, st.semestr, st.uch_year, u.fio, u.guid FROM '.$this->Tstip.' as st, '.$this->Tusers.' as u WHERE st.id_user=u.id';
|
|
$rez = $this->DB->QUR_SEL($sql);
|
|
$out = array();
|
|
foreach ($rez['rez'] as $key => $val) {
|
|
$sql1 = 'SELECT a.id,a.kind,a.region,a.status,a.place,a.name FROM '.$this->Tachievements.' as a, '.$this->Tstip_dost.' as std WHERE std.id_achievement=a.id AND std.status=1 AND std.id_stip='.$val['id'];
|
|
$rez1 = $this->DB->QUR_SEL($sql1);
|
|
$val['points'] = 0;
|
|
foreach($rez1['rez'] as $key1 => $val1){
|
|
$val['points'] = $val['points'] + $this->pointsAch($val1);
|
|
}
|
|
$out[] = $val;
|
|
}
|
|
//$out = $this->array_orderby($out, 'points', SORT_DESC);
|
|
//echo '<pre>'.print_r($out,1).'</pre>';
|
|
$data['items'] = $out;
|
|
$data['dir'] = 'stipendii';
|
|
$data['head'] = array(
|
|
'id'=>array('name' => '№','type'=>'string'),
|
|
'facultet'=>array('name' => 'Факультет','type'=>'string'),
|
|
'specialnost'=>array('name' => 'Специальность','type'=>'string'),
|
|
'grupp'=>array('name' => 'Группа','type'=>'string'),
|
|
'date_create'=>array('name' => 'Дата','type'=>'data'),
|
|
'type'=>array('name' => 'Тип','type'=>'string'),
|
|
'semestr'=>array('name' => 'Семестр','type'=>'string'),
|
|
'uch_year'=>array('name' => 'Уч.год','type'=>'string'),
|
|
'fio'=>array('name' => 'ФИО','type'=>'string'),
|
|
'guid'=>array('name' => 'GUID','type'=>'string'),
|
|
'points'=>array('name' => 'Баллы','type'=>'string')
|
|
);
|
|
|
|
$SYS = new class_SYSTEM();
|
|
$SYS->format($data);
|
|
}
|
|
|
|
/**
|
|
* Функция для авто подсчета баллов за конкурс
|
|
* @param $data (array)
|
|
* @return int
|
|
*/
|
|
function pointsAch($data){
|
|
/*
|
|
kind - вид деятельности
|
|
region - область достижения
|
|
status - статус мероприятия
|
|
count - численность
|
|
place - место
|
|
*/
|
|
|
|
$points = 0;
|
|
|
|
//$sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id = "'.$id_ach.'" ';
|
|
//$rez = $DB->QUR_SEL($sql);
|
|
//if ($rez){
|
|
$kind = $data['kind'];
|
|
$region = $data['region'];
|
|
$status = $data['status'];
|
|
$count = $data['count_m'];
|
|
$place = $data['place'];
|
|
$name = $data['name'];
|
|
|
|
//ОБЛАСТЬ ДОСТИЖЕНИЙ
|
|
if ($region == 'Учебная'){
|
|
if (($kind == 'Олимпиада')||($kind == 'Проектная деятельность')){
|
|
if ($status == 'Международный'){
|
|
if ($place == 'победитель') $points = 20;
|
|
if ($place == 'призер (2 место)') $points = 15;
|
|
if ($place == 'призер (3 место)') $points = 15;
|
|
if ($place == 'участник') $points = 10;
|
|
}
|
|
if ($status == 'Федеральный'){
|
|
if ($place == 'победитель') $points = 15;
|
|
if ($place == 'призер (2 место)') $points = 10;
|
|
if ($place == 'призер (3 место)') $points = 10;
|
|
if ($place == 'участник') $points = 5;
|
|
}
|
|
if ($status == 'Региональный'){
|
|
if ($place == 'победитель') $points = 10;
|
|
if ($place == 'призер (2 место)') $points = 5;
|
|
if ($place == 'призер (3 место)') $points = 5;
|
|
if ($place == 'участник') $points = 3;
|
|
}
|
|
if ($status == 'Образовательной организации'){
|
|
if ($place == 'победитель') $points = 5;
|
|
if ($place == 'призер (2 место)') $points = 3;
|
|
if ($place == 'призер (3 место)') $points = 3;
|
|
if ($place == 'участник') $points = 1;
|
|
}
|
|
}
|
|
} elseif ($region == 'Научно-исследовательская'){
|
|
if ($kind == 'Научное мероприятие'){
|
|
if ($place == 'победитель') $points = 10;
|
|
if ($place == 'призер (2 место)') $points = 8;
|
|
if ($place == 'призер (3 место)') $points = 6;
|
|
if ($place == 'участник') $points = 1;
|
|
} elseif ($kind == 'Научная публикация'){
|
|
if (strpos($name, 'патент')!==false) $points = 20;
|
|
if (strpos($name, 'свидетельство')!==false) $points = 20;
|
|
if ($status == 'Международный') $points = 24;
|
|
elseif ($status == 'Федеральный') $points = 12;
|
|
elseif ($status == 'Межрегиональный') $points = 6;
|
|
} else $points = 4;
|
|
} elseif ($region == 'Общественная'){
|
|
if ($status == 'Международный') $points = 20;
|
|
elseif ($status == 'Федеральный') $points = 10;
|
|
elseif ($status == 'Региональный') $points = 8;
|
|
elseif ($status == 'Окружной') $points = 6;
|
|
elseif ($status == 'Межрегиональный') $points = 6;
|
|
elseif ($status == 'Муниципальный') $points = 5;
|
|
else $points = 3;
|
|
} elseif ($region == 'Культурно-творческая'){
|
|
$points = 16;
|
|
} elseif ($region == 'Спортивная'){
|
|
if ($status == 'Международный'){
|
|
if ($place == 'победитель') $points = 20;
|
|
if ($place == 'призер (2 место)') $points = 15;
|
|
if ($place == 'призер (3 место)') $points = 15;
|
|
if ($place == 'участник') $points = 10;
|
|
}
|
|
if ($status == 'Федеральный'){
|
|
if ($place == 'победитель') $points = 15;
|
|
if ($place == 'призер (2 место)') $points = 10;
|
|
if ($place == 'призер (3 место)') $points = 10;
|
|
if ($place == 'участник') $points = 5;
|
|
}
|
|
if ($status == 'Региональный'){
|
|
if ($place == 'победитель') $points = 10;
|
|
if ($place == 'призер (2 место)') $points = 5;
|
|
if ($place == 'призер (3 место)') $points = 5;
|
|
if ($place == 'участник') $points = 3;
|
|
}
|
|
if ($status == 'Образовательной организации'){
|
|
if ($place == 'победитель') $points = 5;
|
|
if ($place == 'призер (2 место)') $points = 3;
|
|
if ($place == 'призер (3 место)') $points = 3;
|
|
if ($place == 'участник') $points = 1;
|
|
}
|
|
//просто физкультурное мероприятие
|
|
if ($kind == 'Физкультурное мероприятие') $points = 5;
|
|
//если ГТО
|
|
if ($kind == 'Физкультурное мероприятие')
|
|
if (strpos($name, 'ГТО')!==false) $points = 15;
|
|
//$points = 32;
|
|
}
|
|
//}
|
|
return $points;
|
|
}
|
|
|
|
/**
|
|
* Сортировка массива
|
|
* @return mixed|null
|
|
*/
|
|
function array_orderby(){
|
|
$args = func_get_args();
|
|
$data = array_shift($args);
|
|
foreach ($args as $n => $field) {
|
|
if (is_string($field)) {
|
|
$tmp = array();
|
|
foreach ($data as $key => $row)
|
|
$tmp[$key] = $row[$field];
|
|
$args[$n] = $tmp;
|
|
}
|
|
}
|
|
$args[] = &$data;
|
|
call_user_func_array(array($this,'array_multisort'), $args);
|
|
return array_pop($args);
|
|
}
|
|
} |