EIOS/integration/inc/class_STIPENDII.php

291 lines
15 KiB
PHP
Raw Permalink Normal View History

2023-12-28 15:39:22 +03:00
<?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);
}
}