123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042 |
- <?php
- use CheckPoints\CheckPoint;
- use CheckPointTypes\CheckPointType;
- require_once 'ocs.php';
- $onlineMobileTimeoutSeconds = 600;
- function VagrantRequest($accid, $tagid, $name, $eventtype, $echo=false)
- {
- if ($tagid=='unavailable')
- return;
- global $link;
- $account = Account::Find($accid);
- $jobstring = "No role";
- if ($account)
- {
- $jobtypes = $account->getJobtypesIds();
- $jobstring = GetJobNames($jobtypes)[0];
- $company = $account->getCompany();
- if ($company)
- {
- if (intval($company->id) > 1)
- return;
- }
- }
- $params['projectId'] = "000T";
- $params['role'] = $jobstring;
- $params['fullName'] = $name;
- $params['employeeId'] = $accid;
- $params['tagId'] = $tagid;
- $params['eventType'] = $eventtype;
- $url = "https://vagrantsmopp.azurewebsites.net/api/EmployeeTag";
- $jsonEncoded = json_encode($params);
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept:application/json"));
- curl_setopt($curl, CURLOPT_TIMEOUT, 60);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonEncoded);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
- $result = curl_exec($curl);
- $str = "insert into vagrant_log (acc_id, eventtype, reply, stamp, tagid) values ($accid, $eventtype, '$result', NOW(), '$tagid')";
- mysqli_query($link, $str);
- if ($echo) {
- var_dump($result);
- var_dump($params);
- }
- }
- function GetCompanyID($act, $activeid)
- {
- $companyID = 0;
- switch ($act)
- {
- case "tasktypes":
- $tt = Tasktype::Find($activeid);
- if ($tt)
- $companyID = $tt->company;
- break;
- case "tasks":
- $task = Task::Find($activeid);
- if ($task) {
- $type = $task->type;
- $tt = Tasktype::Find($type);
- if ($tt)
- $companyID = $tt->company;
- }
- break;
- case "projects":
- $proj = Project::Find($activeid);
- if ($proj)
- $companyID = $proj->getCompany();
- break;
- case "project_types":
- $proj = ProjectType::Find($activeid);
- if ($proj)
- $companyID = $proj->company;
- break;
- }
- return $companyID;
- }
- function EnqueueCMD($acc_id, $cmd)
- {
- global $link;
- $str = "insert into commands (account_id, cmd, created) values ($acc_id, '$cmd', NOW())";
- $query = mysqli_query($link, $str);
- }
- function DequeueCMD($acc_id)
- {
- global $link;
- $str = "select * from commands where account_id = $acc_id";
- $query = mysqli_query($link, $str);
- $cmdarr = array();
- while ($res = mysqli_fetch_array($query)) {
- $cmd = $res['cmd'];
- array_push($cmdarr, $cmd);
- mysqli_query($link, "delete from commands where id = ".$res['id']);
- }
- return $cmdarr;
- }
- function XLSRead($inputFileName, $activeSheet = 0)
- {
- error_reporting(E_ALL);
- set_time_limit(0);
- date_default_timezone_set('Europe/London');
-
- set_include_path(get_include_path() . PATH_SEPARATOR . 'PHPExcel_1.8.0_doc/Classes/');
-
- include 'PHPExcel/IOFactory.php';
-
-
- $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
- echo '<hr />';
- if ($activeSheet > 0)
- $objPHPExcel->setActiveSheetIndex($activeSheet);
- $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
-
- return $sheetData;
- }
- function FindAction($actionID)
- {
- global $link, $companyID;
- $query1 = mysqli_query($link, "select * from projecttypes where id=$actionID");
- if ($res1 = mysqli_fetch_array($query1)) {
- return $res1;
- }
- }
- function FindActions($tasktype = '')
- {
- global $link, $companyID, $entityManager;
- return $entityManager->getRepository('ProjectType')->findBy(array('company' => $companyID));
- }
- function FindParentTaskType($ttid)
- {
- global $link;
- $str = "select * from tasktypes tt where main_task=1 and $ttid IN (tt.subtasks)";
-
- $returnArr = array();
- $query1 = mysqli_query($link, $str);
- while ($res1 = mysqli_fetch_array($query1)) {
-
- array_push($returnArr, $res1);
- }
- return $returnArr;
- }
- function FindTaskOwner($tid)
- {
- global $link;
- $str = "select id from accounts accs where $tid IN (accs.active_task_ids)";
- $returnArr = array();
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_row($query1)) {
- return $res1[0];
- }
- return null;
- }
- function StartProject($action, $project_id, $manager=null)
- {
- global $entityManager;
-
-
-
-
-
- $existing_tasks = GetTasksForProject($project_id);
-
- if (sizeof($existing_tasks) > 0) {
- echo "<span style='color: red'>Задачи для этого проекта уже созданы</span><br>";
- OCSnewproject($project_id);
- return true;
- }
- if ( null == $entityManager ) {
- $entityManager = $manager;
- }
- $tasktypesarr = ProjectType::GrabTasktypesByProjectType(intval($action), $entityManager);
- if (sizeof($tasktypesarr) > 0) {
- CreateTasks($tasktypesarr, $project_id);
- OCSnewproject($project_id);
- return true;
- }
- else
- {
- echo "<span style='color: red'>Ошибка: нет подходящих задач под выбранное действие</span>";
- OCSnewproject($project_id);
- return false;
- }
- }
- function getTaskStatusName($status)
- {
- global $link;
- $name = '';
- $color = '';
- $query = mysqli_query($link,"select * from task_status_names where id=".$status);
- if ($res = mysqli_fetch_array($query))
- {
- $name = $res['name'];
- $color = $res['color'];
- }
- return array ($name, $color);
- }
- function GetHrefActive($href, $name, $li=true)
- {
- global $act;
- $hrefactive = '';
- if ($href == $act) {
- $hrefactive = ' style="color:blue" class="active" ';
- }
- $liopen = '<li>';
- $liclose = '</li>';
- if ($li == false)
- {
- $liopen = '';
- $liclose = '';
- }
- echo $liopen.'<a class="menuleft" href="?act='.$href.'"'.$hrefactive.'>'.$name.'</a>'.$liclose;
- }
- function GetAccordeonNum($act)
- {
- $accordnum = 0;
- switch($act)
- {
- case "global": $accordnum = 0;break;
- case "companies": $accordnum = 0;break;
- case "projects": $accordnum = 0;break;
- case "locations": $accordnum = 0;break;
- case "projects_old": $accordnum = 0;break;
- case "project_types": $accordnum = 0;break;
- case "loco": $accordnum = 0;break;
- case "penalties": $accordnum = 3;break;
- case "filelib": $incl ="filelib/in.php";break;
- case "accounts": $incl ="accounts.php";$accordnum = 0;break;
- case "analytics": $incl ="analytics.php";$accordnum = 0;break;
- case "markers": $incl ="markers.php";$accordnum = 1;break;
- case "tasks": $incl ="tasks.php";$accordnum = 2;break;
- case "checkpoints": $incl ="checkpoints.php";$accordnum = 2;break;
- case "checkitems": $incl ="checkitems.php";$accordnum = 2;break;
- case "tasksdone": $incl ="tasksdone.php";$accordnum = 2;break;
- case "tasktypes": $incl ="tasktypes.php";$accordnum = 2;break;
- case "docs": $incl ="docs.php";$accordnum = 4;break;
- case "reports": $incl ="reports.php";$accordnum = 4;break;
- case "journal": $incl ="journal.php";$accordnum = 4;break;
- case "devices": $incl ="devices.php";$accordnum = 1;break;
- case "staff": $incl ="staff.php";$accordnum = 3;break;
- case "objects": $incl ="objects.php";$accordnum = 1;break;
- case "object": $incl ="object.php";$accordnum = 1;break;
- case "typeobject": $incl ="typeobject.php";$accordnum = 1;break;
- case "input_data": $incl ="input_data.php";$accordnum = 3;break;
- case "jobs": $incl ="jobs.php";$accordnum = 3;break;
- case "dashboard": $incl ="dashboard.php";$accordnum = 0;break;
- }
- return $accordnum;
- }
- function GetInclude($act, $cmdlevel)
- {
- $incl = '';
- $accordnum = GetAccordeonNum($act);
- if ($cmdlevel==10) {
- switch($act) {
- case "asusg_dayplan": $incl ="asusg_dayplan.php";break;
- case "penalties": $incl ="penalties.php";break;
- case "loco": $incl ="loco.php";break;
- case "locations": $incl ="locations.php";break;
- case "algo": $incl ="algo.php";break;
- case "locations2": $incl = "locations2.php";break;
- case "global": $incl ="global.php";break;
- case "companies": $incl ="companies.php";break;
- case "accounts": $incl ="accounts.php";break;
- case "markers": $incl ="markers.php";break;
- case "tasks": $incl ="tasks.php";break;
- case "tasksdone": $incl ="tasksdone.php";break;
- case "analytics": $incl ="analytics.php";break;
- case "mp_using": $incl ="user_activity.php";break;
- case "checkpoints": $incl ="checkpoints.php";break;
- case "checkitems": $incl ="checkitems.php";break;
- case "tasktypes": $incl ="tasktypes.php";break;
- case "docs": $incl ="docs.php";break;
- case "reports": $incl ="reports.php";break;
- case "devices": $incl ="devices.php";break;
- case "projects": $incl ="projects.php";break;
- case "project_types": $incl ="project_types.php";break;
- case "projects_old": $incl ="projects_old.php";break;
- case "staff": $incl ="staff.php";break;
- case "objects": $incl ="objects.php";break;
- case "object": $incl ="object.php";break;
- case "typeobject": $incl ="typeobject.php";break;
- case "input_data": $incl ="input_data.php";break;
- case "jobs": $incl ="jobs.php";break;
- case "dashboard": $incl ="dashboard.php";break;
- case "journal": $incl ="journal.php";break;
- case "filelib": $incl ="filelib/in.php";break;
- case "addproject": $incl ="addproject.php";break;
- case "oprt_management": $incl ="oprt_management.php";break;
- case "_peekdatasafe" : $incl = "_peekdatasafe.php";break;
- case "_log" : $incl = "_log.php"; break;
-
-
- case "tmc/new" : case "tmc/list_materials" : case "tmc/detail/added" : $incl = "tmc/new.php"; break;
- case "tmc/repair" : case "tmc/repair_list" : $incl = "tmc/repair.php"; break;
- case "tmc/write" : case "tmc/write_list" : $incl = "tmc/write-off.php"; break;
- case "tmc/edit" : $incl = "tmc/edit.php"; break;
-
- case "tmc/issued_tmcs" : $incl = "tmc/issued_tmcs.php"; break;
- case "tmc/free_tmcs" : $incl = "tmc/free_tmcs.php"; break;
- case "tmc/give" : case "tmc/list_materials_give" : $incl = "tmc/give.php"; break;
- case "tmc/take" : $incl = "tmc/take.php"; break;
-
- case "tmc/storage" : $incl = "tmc/new_storage.php"; break;
- case "tmc/find_cell" : $incl = "tmc/find_cell.php"; break;
- case "views/metrics" : $incl = "views/metrics.php"; break;
- default:
- }
- }
- else if ($cmdlevel==1)
- {
- switch($act)
- {
- case "penalties": $incl ="penalties.php";break;
- case "loco": $incl ="loco.php";break;
- case "locations": $incl ="locations.php";break;
- case "companies": $incl ="companies.php";break;
- case "accounts": $incl ="accounts.php";break;
- case "markers": $incl ="markers.php";break;
- case "tasks": $incl ="tasks.php";break;
- case "tasktypes": $incl ="tasktypes.php";break;
- case "docs": $incl ="docs.php";break;
- case "reports": $incl ="reports.php";break;
- case "staff": $incl ="staff.php";break;
- case "projects": $incl ="projects.php";break;
- case "objects": $incl ="objects.php";break;
- case "input_data": $incl ="input_data.php";break;
- case "jobs": $incl ="jobs.php";break;
- case "dashboard": $incl ="dashboard.php";break;
- case "journal": $incl ="journal.php";break;
- default:
- }
- }
- else if ($cmdlevel==2)
- {
- switch($act)
- {
- case "markers": $incl ="markers.php";break;
- case "tasks": $incl ="tasks.php";break;
- case "tasktypes": $incl ="tasktypes.php";break;
- case "docs": $incl ="docs.php";break;
- case "reports": $incl ="reports.php";break;
- case "staff": $incl ="staff.php";break;
- case "projects": $incl ="projects.php";break;
- case "input_data": $incl ="input_data.php";break;
- case "dashboard": $incl ="dashboard.php";break;
- case "journal": $incl ="journal.php";break;
- default:
- }
- }
- return array($incl,$accordnum);
- }
- function getConfirmTypeName($id)
- {
- global $link;
- $query = mysqli_query($link,"select * from confirmtypes where id=".$id);
- if ($query && $res = mysqli_fetch_array($query))
- {
- $name = $res['name'];
- }
- return $name;
- }
- function GrabConfirmTypes($company = 0)
- {
- global $link;
- $str = "select * from confirmtypes where company=0";
- $types = array();
- if ($company > 0)
- $str .= " OR company=".$company;
-
- $query = mysqli_query($link,$str);
- while ($query && $res = mysqli_fetch_array($query))
- {
- array_push($types, $res);
- }
-
- return $types;
- }
- function getConfirmTypebyTask($tid)
- {
- global $link;
- $query = mysqli_query($link,"select type from tasks where id=".$tid);
- if ($res = mysqli_fetch_array($query)) {
- $tasktype = $res['type'];
- }
- $query = mysqli_query($link,"select confirmtype from tasktypes where id=".$tasktype);
- if ($res = mysqli_fetch_array($query))
- {
- $confirmtype = intval($res['confirmtype']);
- }
- return $confirmtype;
- }
- function GetOnlineAccountList($byteAnswer = false)
- {
- global $link;
-
- $date = 'last_seen_mobile';
-
- $query = mysqli_query($link,"select * from accounts where ".$date." > (NOW() - INTERVAL 3 MINUTE)");
- $accs = array();
- while ($res = mysqli_fetch_array($query))
- {
- array_push($accs, $res);
- }
- if (!$byteAnswer)
- {
- ;
- }
- else
- {
- $buf = "";
- foreach ($accs as $acc) {
- $buf .= pack("l", $acc['id']);
- }
- $c = ConstructVariablePacket(10, $buf);
- echo base64_encode($c);
- }
- }
- function Online($acc_id)
- {
- $acc = GetAccount($acc_id);
- return OnlineAccountCheck($acc['last_seen_mobile'], 1);
- }
- function TimeString($timeobj)
- {
- if ($timeobj != null)
- return $timeobj->format('d.m.Y H:i');
-
- }
- function OnlineAccountCheck($last_seen)
- {
-
- global $onlineMobileTimeoutSeconds;
- $last_seen = date($last_seen);
- $time = (time()-strtotime($last_seen));
-
- if ($time <= $onlineMobileTimeoutSeconds)
- return true;
- return false;
- }
- function GrabTasksByType($type)
- {
- global $link;
- $str = "select * from tasks where type=$type";
- $query = mysqli_query($link, $str);
- $tasks = array();
- while ($res = mysqli_fetch_array($query))
- {
- array_push($tasks, $res);
- }
- return $tasks;
- }
- function DeleteTasksByType($task_type, $full=true)
- {
- global $link;
- $tasks = GrabTasksByType($task_type);
- foreach ($tasks as $task)
- {
- DeleteTask($task['id']);
- }
- }
- function ClearTaskTypeFromJobs($task_type)
- {
- global $link;
- $query1 = mysqli_query($link, "select * from jobtypes where $task_type in (tasktypes)");
- $jobs = array();
- while ($res1 = mysqli_fetch_array($query1))
- {
- array_push($jobs, $res1);
- }
-
- foreach ($jobs as $job)
- {
- $tasktypes = explode(",", $job['tasktypes']);
- foreach (array_keys($tasktypes, "$task_type") as $key) {
- unset($tasktypes[$key]);
- }
- $tasktypes = implode(",", $tasktypes);
- mysqli_query($link, "update jobtypes set tasktypes = '$tasktypes'");
- }
- }
- function DeletePic($path)
- {
- unlink ( $path );
- }
- function DeleteTask($task_id, $full=true)
- {
-
- CheckPoint::DeleteByTask($task_id);
- global $link;
- if ($full)
- {
- $subtasks = GrabSubTasks($task_id);
- foreach ($subtasks as $sub)
- {
- DeleteTask($sub['id'], false);
- }
- }
- $accid = GetAccountFromTask($task_id);
- Account::ClearTasksFromAccount($accid);
- mysqli_query($link, "delete from tasks where id =".$task_id);
- }
- function GetImagePathFromTask($task)
- {
- $taskid = $task->id;
- $companyID = getCompanyByTask($taskid)[0];
- $project_id = $task->input_id;
- $imgpath = "data/$companyID/$project_id/$taskid/";
- return $imgpath;
- }
- function GetVideoPathFromTasktype($taskid)
- {
- $videoPath = "guides/$taskid/";
- return $videoPath;
- }
- function TimeSpent($timeStart, $timeEnd)
- {
- $accepted = strtotime($timeStart);
- $finished = strtotime($timeEnd);
- return round(($finished - $accepted)/60.0, 0, PHP_ROUND_HALF_UP);
-
- }
- function TimeSpentForTaskFromArray($taskarr)
- {
- $accepted_time = $taskarr['accepted_time'];
- $finished_time = $taskarr['finished_time'];
- $accepted = strtotime($accepted_time);
- $finished = strtotime($finished_time);
-
- return $finished - $accepted;
-
- }
- function GetAssigneeNamesfromGlobal($taskid)
- {
- global $link;
- $str = "select id from tasks where parent_id = $taskid";
- $query1 = mysqli_query($link, $str);
- $accids = array();
- while ($res1 = mysqli_fetch_row($query1)) {
- $accid = FindTaskOwner($res1[0]);
- array_push($accids, $accid);
- }
- $accarr = array();
- $accnames = array();
- foreach ($accids as $accid)
- {
- if (!in_array($accid, $accarr)) {
- array_push($accarr, $accid);
- $accname = GetAccount($accid)['name'];
- array_push($accnames, $accname);
- }
- }
- $assignee_names_parent = implode(",", $accnames);
- return $assignee_names_parent;
- }
- function EchoScriptName($name)
- {
- echo "<script>
- var page = '$name';";
- echo "</script>";
- }
- function GetProject($project_id)
- {
- global $link;
- $str = "select * from projects_locotech where id = $project_id";
-
- $query1 = mysqli_query($link, $str);
-
- if ($res1 = mysqli_fetch_array($query1)) {
- return $res1;
- }
- return 0;
- }
- function GetLocoSerial($project_id)
- {
- global $link;
- $str = "select loco_number from projects_locotech where id = $project_id";
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_row($query1)) {
- return $res1[0];
- }
- return 0;
- }
- function CleanTasks($project_id)
- {
- global $link;
- $str = "select id from tasks where input_id = $project_id";
- $query1 = mysqli_query($link, $str);
- while ($res1 = mysqli_fetch_row($query1)) {
- $taskid = $res1[0];
- DeleteTask($taskid);
- }
- }
- function EchoTask2(Task $task, $activeid, $parent = false)
- {
- global $entityManager;
- $tasktype_id = $task->type;
-
- $type = Tasktype::Find($tasktype_id);
- $taskname = $type->name;
- $letter = $type->letter;
- $lettersign = "";
- if ($letter)
- $lettersign = "[Секция $letter]";
- $project_id = intval($task->project->id);
- $project = $task->project;
-
- $action = $project->projecttype;
- try {
- $action_id = $action->id;
- $action_name = $action->name;
- }
- catch (Exception $e)
- {
- }
- $created_time = TimeString($task->created);
- $taskid = $task->id;
- $assigned = TimeString($task->assigned);
- $zone = $task->zone_id;
- $zonename = GetZoneName($zone);
- $zone_req= $type->zone_required_id;
- $zone_req_name = GetZoneName($zone_req);
- $status = $task->status;
- $statusname = getTaskStatusName($status);
- $desc = $task->text;
- $loco = GetLocoSerial($project_id);
- $section = Section::Find($loco);
- $class = 'content__menu__task';
- $assignee_id = $task->assignees_arr;
- if ($activeid == $taskid)
- $class .= ' content__menu__task_active';
- else
- $class .= ' list';
-
- if ($parent) {
- if ($task->getAccount() != null && 0 < $task->assignees_arr) {
- $assignee_names_parent = $task->getAccount()->name;
- }
- if ($status != '1')
- $statusname[0] .= ': '.$assignee_names_parent."<br> Выдана: $assigned ";
-
- echo "<div onclick='SelectTask($taskid)' class='$class'>
- <h3 class='content__menu__task-title'>
- $taskid. $taskname <br>
- $lettersign<br>
- Описание: $desc
- </h3>
- <p class='content__menu__task-text'>
- Проект: $project_id<br>
- Тип проекта: $action_id. $action_name<br>
- Локомотив №: $loco <br>
- Создана: $created_time <br> <br>
- $statusname[0]
- </p>
- </div>";
- }
- else
- {
- $confirmtype = $type->confirmtype;
- $confirmname = getConfirmTypeName($confirmtype);
- $priority = $task->priority.'.';
- $assignee_names = GetAccount($assignee_id)['name'];
- if ($status =='2' || $status =='3' || $status =='5')
- $statusname[0] .= ': '.$assignee_names;
- $statustitle = $statusname[0];
- if ($status =='3')
- $statusname[0] = "<span style='color: green'>$statusname[0]</span>";
- $statusclass = 'content__main__item';
- switch ($status)
- {
- case '2': $statusclass .= ' content__main__item_wait'; break;
- case '3': $statusclass .= ' content__main__item_wait'; break;
- case '4': $statusclass .= ' content__main__item_wait'; break;
- case '5': $statusclass .= ' content__main__item_ready';
- $accepted_time = TimeString($task->accepted_time);
- $finished_time = TimeString($task->finished_time);
- $timetodo = intval($type->time_to_complete_minutes);
- $result = TimeSpent($accepted_time, $finished_time);
-
- if (!$parent) {
- if ($result >= 0)
- $result = " за $result из $timetodo минут";
- $statusname[0] .= ': ' . $accepted_time.$result;
- }
- break;
- }
- $zoneOk = (intval($zone_req)== intval($zone));
- if ($zoneOk)
- {
- $zoneText = "соответствие";
- $zonecolor = "green";
- }
- else {
- $zoneText = "неверно";
- $zonecolor = "red";
- }
- if ($zone)
- $zonestring = "<span style='color: $zonecolor'>[$zoneText]</span>";
- else
- $zonestring = "";
- echo "
- <div class='$statusclass' title='$statustitle'>
- <h3 class='content__main__item__title'>
- $priority $taskname
- </h3>
- <p class='content__main__item__text'>
- Тип задачи: $tasktype_id<br>
- Описание: $desc <br>
- Тип подтверждения: $confirmname<br>
- $taskid. Создана $created_time<br>
- Выдана: $assigned<br>
- Зона выполнения: $zone ($zonename) $zonestring<br>
- Зона выполнения требуемая: $zone_req ($zone_req_name)<br>
- $statusname[0]<br><br>
- Вы можете <span class='content__main__item__del' onclick='DelTask($taskid)'>удалить</span>
- или <span class='content__main__item__recall' onclick='Revoke($assignee_id)'>отозвать</span> эту задачу,
- если что-то пошло не так.
- </p>
- </div>
- ";
- $cps = CheckPoint::FindAllByTask($taskid);
- if (sizeof($cps) > 0)
- {
-
- echo "<div style='margin-left: 50px'>";
- echo "<h4>Контрольная карта:</h4>";
- foreach ($cps as $cp) {
- if ($cp->parentCheckpointId == 0)
- {
- echo "<b>$cp->id. [$taskname]<br> $cp->name:</b><br>";
- }
-
- if ($cp->value != null)
- echo $cp->value . '<br>';
- $children = $cp->childrenCheckpoints;
- if (0 < count($children))
- {
- echo '<ul>';
- foreach ($children as $child) {
- if ('1' == $child->state)
- {
- if ('' == $child->value)
- echo "<li>$child->name</li>";
- else
- echo "<li>$child->name: $child->value</li>";
- }
-
-
- }
- echo '</ul>';
- }
-
- if ($cp->parentCheckpointId == 0)
- {
- $textnotes = $entityManager->getRepository('Tasknote')->findBy(array('checkpoint_id' => $cp->id));
- foreach ($textnotes as $tn)
- {
- echo "<pre> Замечание: $tn->text</pre>";
- }
- }
- }
- echo "</div><br><br>";
- }
-
-
- $imgpath = GetImagePathFromTask($task);
- $files1 = scandir($imgpath);
-
- if (sizeof($files1) > 2)
- {
- echo '<div class="content__main__images" style="margin-left: 44px; margin-right:44px">';
- $x = '';
- foreach ($files1 as $file )
- {
- $prevx = $x;
- $x = pathinfo($file)['extension'];
- if ($prevx != '' && $prevx != $x)
- echo "<br>";
- if($file === '.' || $file === '..') {continue;}
- if ($x == 'jpg') {
- echo "<div class='content__main__imgwrap'>";
- echo "<img title='$file' src='$imgpath$file' width =112 height='84' class='content__main__img' onclick=\"openpic('" . $imgpath.$file . "')\">";
- echo '<img src="ProSysNew/delete.svg" alt="удалить" class="content__main__imgdel" onclick=delpic("'. $imgpath . $file .'")>';
- echo '</div>';
- }
- if ($x == 'mp3') {
- echo "<div class='content__main__imgwrap'>
- <img class='content__main__img' title='$file' onclick=\"openaudio('" . $imgpath . $file . "')\" src='images/audio.svg'>
- </div>";
-
- }
- }
- echo '</div>';
- }
- $notes = FindTaskNotes($taskid);
- if (sizeof($notes) > 0) {
- echo "<div style='float:none; background-color: rgba(0,170,255,0.03); padding: 5px; border: solid; margin-right:44px; margin-left:44px; border-width: .5px; border-color: #9cb2c4; border-radius: 10px; border-top-left-radius: 0px;'><p><b>Текстовые заметки: </b></p>";
- foreach ($notes as $note) {
- if (!$note['checkpoint_id']) {
- $notedate = $note['date'];
- $noteid = $note['id'];
- $notetext = $note['text'];
- echo "<p><b>$noteid.</b> [$taskname] $notetext</p>";
- }
- }
- echo '</div><br><br>';
- }
- }
-
- if ($task->parent_id) {
- echo '<div class="content__main__images" style="margin-left: 44px; margin-right:44px">';
- showVideoLinks($task);
- echo '</div>';
- }
-
- echo '<div class="content__main__images" style="margin-left: 44px; margin-right:44px">';
- $ocsVideo = OCSgetvideo($taskid);
- $splitted = explode(",",$ocsVideo);
- $domain = "http://ocs.prmsys.net/video/";
- foreach ($splitted as $spl) {
- if ($spl == "")
- continue;
- $link = "$domain$spl";
- echo "<div class='content__main__imgwrap' onclick=\"openvideo('$link')\">
- <video height='144' class='content__main__img' preload='metadata' title='$link'>
- <source src='$link'>
- </video>
- </div>";
- }
- echo '</div>';
- echo '<div>';
- if ($status != '1')
- echo " <input style='margin-right: 20px' type='button' onclick='ReopenTask($taskid)' value='Открыть заново'>";
- echo '</div>';
- }
- function showVideoLinks($task)
- {
- $urls = \app\models\entity\Locotube::getLinks($task, 310);
- foreach ($urls as $url): ?>
- <a href="<?= $url ?>" target="_blank">
- <img style="width: 32px; height: 32px; margin-bottom: 14px" src="images/mp4.png" alt="mp4">
- </a>
- <? endforeach;
- }
- function getTaskVideos(Task $task)
- {
- if ('DateTime' != get_class($task->accepted_time)) return;
- $userId = $task->getAccount()->getId();
- $sp = DIRECTORY_SEPARATOR;
- $path = $sp . 'uploads' . $sp . 'locotube' . $sp . $userId . $sp;
- $fullPath = __DIR__ . $path;
- if (is_dir($fullPath)) {
- $files = scandir($fullPath);
- $start = $task->accepted_time;
- $finish = $task->finished_time;
- foreach ($files as $file) {
- if ($file[0] == '.') continue;
- $videoDate = parseDate($file);
- if ($start <= $videoDate && $videoDate <= $finish) { ?>
- <a href="/player.php?file=<?= $path . $file ?>" target="_blank">
- <img style="width: 32px; height: 32px; margin-bottom: 14px" src="images/mp4.png" alt="mp4">
- </a>
- <?php
- }
- }
- }
- }
- function parseDate(string $str)
- {
- $date = new DateTime();
- $y = substr($str, 0, 4);
- $m = substr($str, 5, 2);
- $d = substr($str, 7, 2);
- $date->setDate($y, $m, $d);
- $h = substr($str, 10, 2);
- $i = substr($str, 12, 2);
- $s = substr($str, 14, 2);
- $date->setTime($h, $i, $s);
- return $date;
- }
- function FindTaskNotes($taskID)
- {
- global $link;
- $query = mysqli_query($link,"select * from task_notes where task_id=".$taskID);
- $notes = array();
- while ($res1 = mysqli_fetch_array($query))
- {
- array_push($notes, $res1);
- }
- return $notes;
- }
- function ActionsForm($action_data, $c_action)
- {
- echo "<option selected value = '0' ><Выберите тип проекта></option >";
- foreach ($action_data as $val) {
- if ($val->id == $c_action)
- $sel = 'selected';
- else
- $sel = '';
- echo "<option $sel value = '".$val->id."' > ".$val->name."</option >";
- }
- }
- function AddJob($acc_id, $new_jobtype_id, $job_ids)
- {
- global $link;
- $job_ids .= ','.$new_jobtype_id;
- mysqli_query($link, "update accounts set jobtypes='".$job_ids."' where id=".$acc_id);
- echo "<span style='color: darkolivegreen'>Должность добавлена!</span><br><br>";
- }
- function JobTaskTypesIDs($job_id)
- {
- $tts = GrabJobTaskTypes($job_id);
- $arr = array();
- if (sizeof($tts) > 0) {
- foreach ($tts as $tt) {
- array_push($arr, $tt->id);
- }
- }
- return $arr;
- }
- function GrabJobTaskTypes($job_id)
- {
-
- $tasktypes = array();
- $jobtype = Jobtype::Find($job_id);
- if ($jobtype != null)
- $tasktypes = $jobtype->getTaskTypes();
- return $tasktypes;
- }
- function ShowJobTasks($job_id)
- {
- $subtaskarr = GrabJobTaskTypes($job_id);
- foreach ($subtaskarr as $taskid) {
- $taskarr = GrabTasktype($taskid);
- $name = $taskarr['name'];
- if ($name != '')
- echo '<span style=\'color:blue\'>'.$taskarr['name'].'</span> <b>|</b> ';
- }
- }
- function FillArrayString($elem_name, $make_array = false)
- {
-
-
- $subtask_arr = array();
- foreach (array_keys($_REQUEST) as $var) {
-
- $sub = substr($var, 0, -1);
- $sub2 = substr($var, 0, -2);
- $sub3 = substr($var, 0, -3);
-
- if ($sub === $elem_name || $sub2 === $elem_name || $sub3 === $elem_name)
- {
- if ($_REQUEST[$var] != '')
- array_push($subtask_arr, $_REQUEST[$var]);
- }
- }
-
- $subtask_string = implode(",", $subtask_arr);
- if ($make_array) {
- $subtask_string = $subtask_arr;
- }
-
- return $subtask_string;
- }
- function ShowTasksSelect($arr, $c_action=0, $id="", $keyword, $alg=false)
- {
- if ($id !="") {
- $id = "id='$id'";
- }
- $max = sizeof($arr);
- echo "<select onchange='AddSelect(this.value, $max)' $id class='form-input content__main__form__goal' name='$keyword"."1' >";
- echo '<option value=""></option>';
- $count=1;
- foreach ($arr as $res1) {
- if ($c_action ==0 || $res1->action == $c_action)
- {
- $tasktype_id = $res1->id;
- $taskname = $res1->name;
- if (!isset($taskname)) {
- $type = $res1->type;
- $name = GetTaskNameAndDesc($type)[0];
- $taskname = "$tasktype_id. $name [$type]";
- }
- echo "<option value='$tasktype_id'>$count. $taskname</option>";
- $count++;
- }
- }
- echo '</select><br>';
- if ($alg) {
- echo "<select style='margin-left:20px ' class='form-input content__main__form__goal' id='alg' name='alg' >";
- echo '<option value="">Собрать результат выполнения задачи</option>';
- echo '<option value="">Составить промежуточную таблицу</option>';
- echo '<option value="">Алгоритм3</option>';
- echo '<option value="">Алгоритм4</option>';
- echo '</select><br>';
- }
- }
- function GetJobtypes($companyID)
- {
- global $link;
- $query1 = mysqli_query($link, "select * from jobtypes where company=$companyID");
- $jobtypes = array();
- while ($res1 = mysqli_fetch_array($query1))
- {
- array_push($jobtypes, $res1);
- }
- return $jobtypes;
- }
- function GetAccountFromTask($task_id)
- {
- global $link;
- $str = "select assignees_arr from tasks where id = ".$task_id;
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_row($query1)) {
- return $res1[0];
- }
- return null;
- }
- function GetVagrantTagID($acc_id)
- {
- global $link;
- $str = "select tagid from vagrant_log where acc_id = $acc_id ORDER BY id DESC limit 1";
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_row($query1)) {
- return $res1[0];
- }
- return null;
- }
- function GetAccount($acc_id)
- {
- global $link;
- $str = "select * from accounts where id = ".$acc_id;
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_array($query1)) {
- return $res1;
- }
- return null;
- }
- function GetAccountJobs($acc_id)
- {
- global $link;
-
- $str = "select * from accounts where id = ".$acc_id;
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_array($query1)) {
- $jobtypes = explode(",",$res1['jobtypes']);
- return $jobtypes;
- }
- }
- function GetCMDName($cmdlevel)
- {
- global $link;
- $str = "select name from accounttypes where type = ".$cmdlevel;
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_array($query1))
- return $res1['name'];
- }
- function GetTasksFromProjectString($projectid)
- {
- global $link;
- $str = "select tasks from projects_locotech where id = $projectid";
- $query1 = mysqli_query($link, $str);
- $ret = array();
- if ($res1 = mysqli_fetch_row($query1))
- {
- $ret = $res1[0];
- }
-
- return $ret;
- }
- function GetTasksForProject($projectid, $status=0, $inactiveproject=0, $subs = 0)
- {
- global $link;
-
- $taskstring = GetTasksFromProjectString($projectid);
- if ($inactiveproject != 0)
- {
- $str = "select COUNT(id) from tasks where id in ($taskstring) and (status=2 or status=3)";
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_row($query1))
- {
- $count = intval($res1[0]);
- if ($count > 0) {
- echo "Found started tasks!";
- return;
- }
- }
- }
- if ($subs > 0) {
-
- $tasksarr = explode(",", $taskstring);
- foreach ($tasksarr as $task_id)
- {
- $parent = GrabTask($task_id);
- if ($parent['status'] == $status) {
- return GrabSubTasks($task_id);
- }
- }
- }
- $statusstr = '';
- if ($status != 0)
- $statusstr .= " and status=$status";
- $str = "select * from tasks where id in ($taskstring)$statusstr";
- $query1 = mysqli_query($link, $str);
- $ret = array();
-
- while ($res1 = mysqli_fetch_array($query1))
- array_push($ret, $res1);
- return $ret;
- }
- function GetJobNames($jobtypes)
- {
- global $link;
- $jobnames = array();
- foreach ($jobtypes as $jobid)
- {
- $str = "select name from jobtypes where id = ".$jobid;
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_array($query1)) {
- $jobname = $res1['name'];
-
- array_push($jobnames, $jobname);
- }
- }
- return $jobnames;
- }
- function TaskReopen($tid)
- {
- global $link;
- mysqli_query($link, "update tasks set status=1, assignees_arr=0 where id=".$tid);
- }
- function FindUrgentAccounts()
- {
- global $link;
- $str ="select DISTINCT a.id, p.id from accounts a join tasks t on t.assignees_arr= a.id join projects_locotech p on p.id = t.input_id where p.urgent=1 and p.status<5";
- $query = mysqli_query($link, $str);
- $retarr = array();
- while ($res = mysqli_fetch_row($query))
- {
- $retarr[] = $res[0];
- }
- return $retarr;
- }
- function CheckPreferredAssignee(&$opentasks, $echo)
- {
- global $link;
- $pids = array();
- $prefs = array();
- foreach ($opentasks as &$opentask)
- {
- $tid = $opentask['id'];
- $pref = intval($opentask['preferred_assignee']);
- if ($pref > 0) {
- if ($echo)
- echo ("CheckPreferredAssignee pref>0: $tid");
- $opentask['status'] = 2;
- $str = "update tasks set status = 2, assigned=NOW(), assignees_arr=$pref where id=$tid";
- mysqli_query($link, $str);
- $pid = intval($opentask['parent_id']);
- if ($pid > 0 && !in_array($pid, $pids)) {
- $pids[] = $pid;
- $prefs[$pid] = $pref;
- }
- }
- }
- if ($echo) {
- $plen = sizeof($pids);
- echo("pids len: $plen");
- }
- foreach ($pids as $pid)
- {
- $str = "update tasks set status = 2, assigned=NOW(), assignees_arr=".$prefs[$pid]." where id=$pid";
- mysqli_query($link, $str);
- }
- }
- function TasksAssignCore($freeaccounts, $task_id, $execute, $project_id, $echo = false)
- {
- global $link, $companyID;
-
- $assigned_tasks = array();
- $accsused = array();
- $project = null;
- if ($task_id =='' || !isset($task_id))
- {
- if ($project_id == 0)
- $opentasks = GrabOpenTasks('subtasks');
- else {
- $project = Project::Find($project_id);
- $opentasks = GetTasksForProject($project_id, 1, 0, 1);
- }
- }
- else
- $opentasks = GrabTasksFromGlobal($task_id);
- CheckPreferredAssignee($opentasks, $echo);
- if ($echo)
- {
- echo "<br>opentasks:<br>";
- var_dump($opentasks);
- echo "<br>freeaccounts:<br>";
- var_dump($freeaccounts);
- }
- $assigned_accs = array();
- foreach ($freeaccounts as $acc_id=>$jobtypesIds)
- {
- $parent_id = 0;
- $assigned_accs[$acc_id] = array();
- if (!in_array($acc_id, $accsused))
- {
- $tasktypesJob = array();
- foreach ($jobtypesIds as $job_type) {
- $tasktypesJob = array_merge($tasktypesJob, JobTaskTypesIDs($job_type));
- }
- foreach ($opentasks as $opentask)
- {
- $taskid = $opentask['id'];
- if (intval($opentask['status']) > 1)
- continue;
- $exists = array_key_exists($taskid, $assigned_tasks);
- if ($echo)
- echo ' key exists '.$taskid.' '.($exists == true).'<br>';
- if (!$exists) {
-
- if (in_array($opentask['type'], $tasktypesJob)) {
- if ($echo)
- echo ' job available task type '.$opentask['type'].' ';
- $pid = intval($opentask['parent_id']);
- if ($pid != $parent_id && in_array($acc_id, $accsused)) {
- if ($echo)
- echo "cont1";
- continue;
- }
- else
- $parent_id = $pid;
- $parent = GrabTask($parent_id);
- $parenttype = $parent['type'];
- $tgrab = GrabTasktype($parenttype);
- $tsize = sizeof($tgrab);
- if ($tsize == 0)
- DeleteTasksByType($parenttype);
-
- if (($parent_id > 0 && GrabTask($parent_id) == null) || $tsize == 0)
- {
- if ($echo)
- echo "skip2 id $parent_id<br>";
- continue;
- }
- Assign($accsused, $assigned_tasks, $assigned_accs, $acc_id, $taskid, $execute);
- if ($echo) {
- echo "assigned_tasks:<br>";
- var_dump($assigned_tasks);
- echo "assigned_accs: <br>";
- var_dump($assigned_accs);
- }
- }
- }
- }
- if ($execute)
- {
- $parent_updated = false;
- foreach ($assigned_accs as $acc)
- {
- if (sizeof($assigned_accs[$acc_id]) == 0)
- continue;
- $tasks = implode(',', $acc);
- foreach ($acc as $tsk) {
- if (in_array($tsk, $assigned_accs[$acc_id])) {
- if ($echo) {
- echo '<br>updating task ' . $tsk . ' setting ass ' . $acc_id;
- }
- OCStaskstatus($tsk, 2, $acc_id);
- $str = "update tasks set status = 2, assigned=NOW(), assignees_arr=$acc_id where id=$tsk";
- require_once 'tmc/yiiInit_once.php';
- \app\models\ElasticLog::command((int)$tsk, 'Назначение');
-
- mysqli_query($link, $str);
- }
- }
- if ($parent_id != 0)
- $tasks = $parent_id.','.$tasks;
- if ($parent_id != 0 && !$parent_updated) {
- $parent_updated = true;
- OCStaskstatus($parent_id, 2, $acc_id);
- mysqli_query($link, "update tasks set status = 2, assigned=NOW(), assignees_arr=$acc_id where id=" . $parent_id);
- $proj = getProjectByTask($parent_id);
- mysqli_query($link, "update projects_locotech set status = 2 where id=".$proj['id']);
- }
- }
- }
- }
- }
- return $assigned_accs;
- }
- function CheckPush($accounts, $echo=false)
- {
- foreach ($accounts as $account)
- {
- $lastpush = TimeString($account->last_push_message_sent);
- $time = (time()-strtotime($lastpush));
- if ($echo)
- echo $account->name." time $time";
- if ($time > 30)
- SendPush($account->id, "Check your SMoPP application!", "");
- }
- }
- function TasksAssign($task_id, $execute, $project_id = 0, $echo = false, $source = 0)
- {
-
-
-
-
-
-
-
- global $companyID;
- $freeaccountsPrimary = array();
- $freeaccountsSecondary = array();
-
- $company = Company::Find($companyID);
- $companyID = $company->id;
- $company->last_assign = new \DateTime("now");
- $company->Save();
- if ($company == null)
- return array();
- $project = null;
- $urgent = 0;
- if ($project_id > 0)
- {
- $project = Project::Find($project_id);
- if ($project != null && intval($project->getStatus()) < 5 )
- {
- $urgent = $project->urgent;
- }
- }
- if ($urgent >0)
- $accs = $company->GetOnlineAccounts(true, true);
- else
- $accs = $company->GetIdleAccounts();
- if ($echo) {
- var_dump($urgent);
- if ($urgent >0)
- echo "urgent accs: ";
- else
- echo "idle accs: ";
- \Doctrine\Common\Util\Debug::dump($accs);
- echo "<br>";
- }
- $online_counter = sizeof($accs);
- foreach ($accs as $acc)
- {
- $jobtypesIdsPrimary = array();
- $jobtypesIdsSecondary = array();
-
- $acc_id = $acc->getId();
- $jobtypes = $acc->getJobtypesExtended();
- foreach ($jobtypes[0] as $jobtype)
- {
- $jobtypesIdsPrimary[] = $jobtype->id;
- }
- foreach ($jobtypes[1] as $jobtype)
- {
- $jobtypesIdsSecondary[] = $jobtype->id;
- }
- $freeaccountsPrimary[$acc_id] = $jobtypesIdsPrimary;
- $freeaccountsSecondary[$acc_id] = $jobtypesIdsSecondary;
- }
- if ($online_counter == 0)
- {
- if ($echo)
- echo "<h3><span style='color:red'>Задачи не выданы в работу! Нет подходящих исполнителей онлайн</span></h3>";
- return array();
- }
- $assigned_accs1 = TasksAssignCore($freeaccountsPrimary, $task_id, $execute, $project_id, $echo);
- if ($echo) {
- echo "<br> assigned_accs1: ";
- var_dump($assigned_accs1);
- }
- $accs1str = "";
- foreach ($assigned_accs1 as $id=>$taskids)
- {
- if (sizeof($taskids) > 0) {
- $acstr = implode(',',$taskids);
- $accs1str .= " $id: $acstr | ";
- SendPush($id, "You have a new task!", $acstr);
- }
- if (sizeof($taskids) > 0)
- unset($freeaccountsSecondary[$id]);
- }
- $assigned_accs3 = TasksAssignCore($freeaccountsSecondary, $task_id, $execute, $project_id, $echo);
- foreach ($assigned_accs3 as $id=>$taskids)
- {
- if (sizeof($taskids) > 0) {
- $acstr = implode(',',$taskids);
- $accs1str .= " $id: $acstr | ";
- SendPush($id, "You have a new task!", $acstr);
- }
- }
- if ($accs1str != '')
- LogTaskAssign("Account: $source $accs1str");
- $retarr = array_merge($assigned_accs1, $assigned_accs3);
- return $retarr;
- }
- function LogTaskAssign($text)
- {
- global $link;
- mysqli_query($link, "insert into task_assign_log (msg, created) values ('$text', NOW())");
- }
- function SendPush($accid, $text, $tskid)
- {
- global $link;
- $acc = Account::Find($accid);
- if ($acc != null) {
- $android_token_id = $acc->android_token_id;
- if ($android_token_id) {
-
- $text = "AccountId $accid taskids $tskid ".$text;
- $text = urlencode($text);
- require_once "fcm/SendNotification.php";
- $oldKey = ($acc->getCompany()->id == 1);
- Send($text, $android_token_id, $oldKey);
- $str = "update accounts set last_push_message_sent = NOW() where id=$accid";
- mysqli_query($link, $str);
- }
- }
- }
- function SetAccordNum($num)
- {
- echo '<div style="display: none" id="accordnum">'.$num.'</div>';
- }
- function GetTaskNameAndDesc($type)
- {
- global $link;
- $str = "select name, description from tasktypes where id = $type";
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_row($query1)) {
- return $res1;
- }
- return '';
- }
- function GetAccountTasksStatus()
- {
- }
- function Assign(&$accsused, &$assigned_tasks, &$assigned_accs, $acc_id, $taskid, $execute=false)
- {
- global $link;
-
-
- if (!in_array($acc_id, $accsused)) {
- array_push($accsused, $acc_id);
- }
- $req = "select account_id from refuses where created > date_sub(NOW(), interval 2 minute) and account_id = "
- .$acc_id
- ." and main_task_id = (select parent_id from tasks where id = "
- .$taskid
- .")";
-
- $taskrefused = mysqli_query($link, $req);
-
- $isrefusedthistask = mysqli_fetch_array($taskrefused);
-
-
- if (count($isrefusedthistask) == 0)
- {
- $assigned_tasks[$taskid] = $acc_id;
- array_push($assigned_accs[$acc_id],$taskid);
- }
-
- return false;
- }
- function GrabTasksForAccount($acc_id, $status=0)
- {
- global $link;
- $str = "select * from tasks where assignees_arr = $acc_id";
- if ($status != 0)
- $str .= " and status=".$status;
- $str .= " and status < 5";
-
- $query1 = mysqli_query($link, $str);
- $tasks = array();
- while ($res1 = mysqli_fetch_array($query1)) {
- array_push($tasks, $res1);
- }
- return $tasks;
- }
- function GrabTasksFromGlobal($task_id)
- {
- global $link;
- $str = "select * from tasks where parent_id = $task_id and status=1";
-
- $query1 = mysqli_query($link, $str);
- $tasks = array();
- while ($res1 = mysqli_fetch_array($query1)) {
- array_push($tasks, $res1);
- }
- return $tasks;
- }
- function GrabTask($task_id)
- {
- global $link;
- $str = "select * from tasks where id = ".$task_id;
-
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_array($query1)) {
- $result = sizeof($res1);
-
- return $res1;
- }
-
- return null;
- }
- function GrabTasks($taskstring)
- {
- global $link;
- $tasks = array();
- $task_ids = explode(',',$taskstring);
- foreach ($task_ids as $task_id)
- {
- $str = "select * from tasks where id = $task_id";
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_array($query1)) {
- array_push($tasks, $res1);
- }
- }
- return $tasks;
- }
- function GrabSubTasks($parent_id)
- {
- global $link;
- $subtasks = array();
- $str = "select * from tasks where parent_id = $parent_id";
- $query1 = mysqli_query($link, $str);
- while ($res1 = mysqli_fetch_array($query1)) {
- array_push($subtasks, $res1);
- }
- return $subtasks;
- }
- function GrabOpenTasks($flag = 'all')
- {
- if ($flag == 'subtasks')
- $add = ' and parent_id > 0';
- else
- $add = ' and parent_id = 0';
- global $link, $companyID;
-
- $str = "select t.* from tasks t join projects_locotech p on t.input_id = p.id and p.company=$companyID where t.status = 1";
-
- $query1 = mysqli_query($link, $str.$add);
- $alltasks = array();
- while ($res1 = mysqli_fetch_assoc($query1)) {
- $id = $res1['id'];
- $parent_id = $res1['parent_id'];
-
- if ($flag == 'subtasks' && GrabTask($parent_id) == null)
- {
- echo "parent_id skip $parent_id<br>";
- continue;
- }
- array_push($alltasks, $res1);
- if ($flag == 'all') {
- $subs = GrabSubTasks($id);
- $alltasks = array_merge($alltasks, $subs);
- }
- }
- return $alltasks;
- }
- function GrabTasktype($id)
- {
- global $link;
- $str = "select * from tasktypes where id=$id";
- $query1 = mysqli_query($link, $str);
- if ($res1 = mysqli_fetch_array($query1)) {
- return $res1;
- }
- return array();
- }
- function GetListFromDB($class, $key, $value, $sortby="id", $sort="ASC")
- {
- global $entityManager;
- return $entityManager->getRepository($class)->findBy(array($key => $value), array($sortby => $sort));
- }
- function GetArrayFromDB($class, $array, $sortby="id", $sort="ASC")
- {
- global $entityManager;
- return $entityManager->getRepository($class)->findBy($array, array($sortby => $sort));
- }
- function GrabActions($id)
- {
- $actions = array();
- return $actions;
- }
- function CreateTasks($tasktypesarr, $input_id=0)
- {
- global $link;
-
- $maintasks = array();
- foreach ($tasktypesarr as $tasktype)
- {
-
- if ($tasktype->main_task == '1')
- {
- $tid = $tasktype->id;
- $subtaskarr = explode(",", $tasktype->subtasks);
- $str = "INSERT INTO tasks (type, status, priority, created, input_id) VALUES ($tid, 1, 0, NOW(), $input_id)";
- $result = mysqli_query($link, $str);
- if (mysqli_affected_rows($link) >0 )
- {
- $parent_id = mysqli_insert_id($link);
- array_push($maintasks, $parent_id);
- $priority = 1;
-
- foreach ($subtaskarr as $subid) {
- $str = "insert into tasks (type, parent_id, priority, status, created, input_id) values ($subid, $parent_id, $priority, 1, NOW(), $input_id)";
- $sub_id = mysqli_insert_id($link);
- require_once 'tmc/yiiInit_once.php';
- \app\models\ElasticLog::command((int)$sub_id);
-
- $types = \CheckPointTypes\CheckPointType::GetCheckPointTypesByTask($subid);
- if (sizeof($types) > 0) {
- $q = mysqli_query($link, "select MAX(id) from tasks");
- if ($res = mysqli_fetch_row($q))
- {
- $myid = intval($res[0]);
- foreach ($types as $typeID) {
-
- $cpt = \CheckPointTypes\CheckPointType::CreateFromID($typeID['cp_type_id']);
- if ($cpt != null)
- $cp = \CheckPoints\CheckPoint::CreateFromType($cpt, null, $myid+1);
- }
- }
- }
- mysqli_query($link, $str);
- $priority++;
- }
- }
- }
- }
- if (sizeof($maintasks) > 0) {
-
- $taskstring = implode(",",$maintasks);
- AddTasksToProject($taskstring, $input_id);
- }
- }
- function AddTasksToProject($taskstring, $input_id)
- {
- global $link;
- $str = "update projects_locotech set tasks = '$taskstring' where id= $input_id";
- mysqli_query($link, $str);
- }
- function GrabTasktypesStringFromAction($actionid)
- {
- global $link;
- $str = "select tasktypes from project_types where id=$actionid";
- $query1 = mysqli_query($link, $str);
- $ret = array();
- if ($res1 = mysqli_fetch_row($query1))
- {
- $ret = $res1[0];
- }
- return $ret;
- }
- function GrabTasktypes($chooseSubtasks = "all")
- {
- global $link, $companyID, $entityManager;
-
- $str = "SELECT t FROM Tasktype t";
- $str .= " WHERE t.company=$companyID";
- if ($chooseSubtasks == "subs")
- $str .= " and t.main_task = 0";
- else if ($chooseSubtasks == "tasks")
- $str .= " and t.main_task = 1";
-
- $str .= ' ORDER BY t.id DESC';
- $query = $entityManager->createQuery($str);
- $list = $query->getResult();
- return $list;
- }
- function GrabTasktypesIDs($chooseSubtasks = "all")
- {
- global $link, $companyID, $entityManager;
-
- $str = "SELECT t.id FROM Tasktype t";
- $str .= " WHERE t.company=$companyID";
- if ($chooseSubtasks == "subs")
- $str .= " and t.main_task = 0";
- else if ($chooseSubtasks == "tasks")
- $str .= " and t.main_task = 1";
- $str .= ' ORDER BY t.id DESC';
- $query = $entityManager->createQuery($str);
- $list = $query->getResult();
- $ids = array();
- foreach ($list as $el)
- array_push($ids, $el['id']);
- return $ids;
- }
- function getCurrentDeviceId($accountId)
- {
- global $link;
- $did = 0;
- $query = mysqli_query($link,"select active_device_id from accounts where id = $accountId");
- if ($query && $res = mysqli_fetch_row($query))
- {
- $did = intval($res[0]);
- }
- return $did;
- }
- function LogOff()
- {
- }
- function getActiveSession($accountId)
- {
- global $link;
- $sid = 0;
- $query0 = mysqli_query($link,"select MAX (id) from sessions where account_id = ". $accountId);
- if ($query0 && $res = mysqli_fetch_row($query0))
- {
- $sid = intval($res[0]);
- }
- if ($sid)
- {
- $query = mysqli_query($link,"select start, device_id from sessions where id=".$sid);
- if ($query && $res = mysqli_fetch_row($query))
- {
- $start = $res[0];
- $did = intval($res[1]);
- }
- }
- return array("id"=>$sid, "start"=>$start, "device_id"=>$did);
- }
- function getProjectByTask($taskId)
- {
- global $link;
- $query = mysqli_query($link,"select input_id from tasks where id = ".$taskId);
- if ($query && $res = mysqli_fetch_array($query))
- {
- return GetProject($res['input_id']);
- }
- return null;
- }
- function getProjectsByAction($actionId)
- {
- global $link;
- $str = "select * from projects_locotech where action = $actionId";
- $query1 = mysqli_query($link, $str);
- $projarr = array();
- while ($res1 = mysqli_fetch_array($query1)) {
- array_push($projarr, $res1);
- }
- return $projarr;
- }
- function getProjectIDByTask($taskId)
- {
- global $link;
-
- $query = mysqli_query($link,"select input_id from tasks where id = ".$taskId);
- $pid = 0;
- if ($query && $res = mysqli_fetch_array($query))
- {
- $pid = intval($res['input_id']);
- }
- return $pid;
- }
- function getCompanyByTask($taskId)
- {
- global $link;
-
- $query = mysqli_query($link,"select * from tasktypes tt, tasks t where t.type = tt.id and t.id = ".$taskId);
- if ($query && $res = mysqli_fetch_array($query))
- {
- $companyid = intval($res['company']);
- }
- return getCompanyByID($companyid);
- }
- function getCompanyByAccount($accountId)
- {
- global $link;
- $query = mysqli_query($link,"select company from accounts where id = $accountId");
- if ($query && $res = mysqli_fetch_array($query)) {
- $companyid = intval($res['company']);
- }
- return getCompanyByID($companyid);
- }
- function getCompanyByID($companyid)
- {
- global $link;
- $query = mysqli_query($link,"select name, logo from companies where id = $companyid");
- if ($query && $res = mysqli_fetch_array($query))
- {
- $mycompany = $res['name'];
- $mycompanylogo = $res['logo'];
- }
- return array($companyid, $mycompany, $mycompanylogo);
- }
- $oses = "WinPhoneWinXPMacOSLinuxUbuntuiPhoneiPodiPadAndroidBlackBerryMobile";
- function getOS()
- {
- $user_agent = $_SERVER['HTTP_USER_AGENT'];
-
- $os_platform = "Unknown OS Platform";
- $os_array = array(
- '/ARM/i' => 'WinPhone',
- '/windows nt 5.2/i' => 'WinXP',
- '/windows nt 5.1/i' => 'WinXP',
- '/windows xp/i' => 'WinXP',
- '/windows/i' => 'Windows',
- '/macintosh|mac os x/i' => 'MacOS',
- '/mac_powerpc/i' => 'MacOS',
- '/linux/i' => 'Linux',
- '/ubuntu/i' => 'Ubuntu',
- '/iphone/i' => 'iPhone',
- '/ipod/i' => 'iPod',
- '/ipad/i' => 'iPad',
- '/android/i' => 'Android',
- '/blackberry/i' => 'BlackBerry',
- '/webos/i' => 'Mobile'
-
- );
- foreach ($os_array as $regex => $value)
- {
- if (preg_match($regex, $user_agent))
- {
- $os_platform = $value;
- return $os_platform;
- }
- }
- }
- function GetTaskStatusFromID($taskid)
- {
- $task = GrabTask($taskid);
- $parent = intval($task['parent_id']);
- if ($parent > 0)
- return intval($task['status']);
- else
- {
- $tasks = GrabSubTasks($taskid);
- $assigned = 0;
- $accepted = 0;
- $hold = 0;
- $done = 0;
- $lentasks = sizeof($tasks);
- foreach ($tasks as $task)
- {
- $status = intval($task['status']);
- switch ($status) {
- case 2:
- $assigned++;
- break;
- case 3:
- $accepted++;
- break;
- case 4:
- $hold++;
- break;
- case 5:
- $done++;
- break;
- }
- }
- if ($done == $lentasks && $lentasks > 0)
- {
- return 5;
- }
- elseif ($accepted > 0 || $assigned > 0)
- {
- return 2;
- }
- else
- return 1;
- }
- }
- function GetTaskStatus($taskid)
- {
- $task = GrabTask($taskid);
- $parent = intval($task['parent_id']);
- if ($parent > 0)
- return intval($task['status']);
- else
- {
- $tasks = GrabSubTasks($taskid);
- $assigned = 0;
- $accepted = 0;
- $hold = 0;
- $done = 0;
- $lentasks = sizeof($tasks);
- foreach ($tasks as $task)
- {
- $status = intval($task['status']);
- switch ($status) {
- case 2:
- $assigned++;
- break;
- case 3:
- case 6:
- case 7:
- $accepted++;
- break;
- case 4:
- $hold++;
- break;
- case 5:
- $done++;
- break;
- }
- }
- if ($done == $lentasks && $lentasks > 0)
- {
- return 5;
- }
- elseif ($accepted > 0)
- {
- return 2;
- }
- elseif ($assigned > 0)
- return 2;
- else
- return 1;
- }
- }
- function GetProjectStatus($projid)
- {
-
-
- $proj = Project::Find($projid);
- $tasks = $proj->getTasks();
-
- $assigned = 0;
- $accepted = 0;
- $hold = 0;
- $done = 0;
- $numcommands = 0;
- $lentasks = 0;
- foreach ($tasks as $task)
- {
-
- if ($task->parent_id==0) {
- $lentasks++;
- $numcommands++;
-
- switch ($task->status) {
- case 2:
- $assigned++;
- break;
- case 3:
- $accepted++;
- break;
- case 4:
- $hold++;
- break;
- case 5:
- $done++;
- break;
- }
- }
- }
-
- if ($done == $lentasks && $lentasks > 0)
- {
- return 5;
- }
- elseif ($done > 0)
- {
- return 2;
- }
- elseif ($accepted > 0 || $assigned > 0)
- {
- return 2;
- }
- else
- return 1;
- }
- function ASUSG($asusg_job_mapped_id)
- {
- global $link;
- $query = mysqli_query($link, "select * from asusg_job2launch where id=$asusg_job_mapped_id");
- $taskarr = array();
- while ($query && $res = mysqli_fetch_assoc($query))
- {
- array_push($taskarr, $res);
- }
- return $taskarr;
- }
- function TaskStatusSet($taskid, $status, $confirmdata = '', $main = 0)
- {
- global $link;
- if ($status == '5') {
- $finished = ", finished_time=NOW()";
- }
- if ($confirmdata != '')
- $conf = ", confirm_data ='$confirmdata'";
- mysqli_query($link, "update tasks set status = $status$finished$conf where id=$taskid");
- $proj = getProjectByTask($taskid);
- $project_id = intval($proj['id']);
- if (($main && $status == '5') || $status == '2' || $status == '3')
- {
-
- if ($project_id > 0) {
- $proj = Project::Find($project_id);
- if ($proj != null) {
- OCStaskstatus($taskid, $status, 0);
- $proj->setStatus($status);
- $proj->Save();
- if ($status == 5)
- $proj->AddCompletedWork();
- }
- }
- }
- }
- function WriteLog($accid, $text='')
- {
- global $link;
- $text = urldecode($text);
- $str = "INSERT into text_log (msg, stamp) values ('$accid: $text',NOW())";
- mysqli_query($link, $str);
- }
- function TaskConfirmCheck(Task $task, $zoneId)
- {
- global $link;
- if (!$task) {
- WriteLog("TaskConfirmCheck task not found", "");
- return 0;
- }
-
- $tasktype = Tasktype::Find($task->type);
- try {
- $company = Company::Find($tasktype->company);
- if ($company)
- {
- $timeout = $company->GetConfirmTimeout();
- $accepted = TimeString($task->accepted_time);
- $time = ($timeout+strtotime($accepted));
- if (time() < $time) {
- WriteLog("TaskConfirmCheck task $task->id timeout fail, time:", $time);
- return 3;
- }
- }
- } catch (\Throwable $e) {
- echo $e->getMessage();
- }
- $objtype = $tasktype->object_type;
- $tmcId = FindTMCId($objtype);
- $proj = $task->project;
- $taskid = $task->GetId();
- $confirmtype = getConfirmTypebyTask($taskid);
- $result = 1;
- switch ($confirmtype)
- {
- case 2:
- break;
- case 8:
- $imgpath = GetImagePathFromTask($task);
- $files1 = scandir($imgpath);
- $len = sizeof($files1);
- if ($len <= 2)
- {
-
- WriteLog("TaskConfirmCheck task $task->id failed image: ", $len);
- $result = 0;
- }
- break;
- case 9:
- $notes = FindTaskNotes($taskid);
- if (sizeof($notes) == 0)
- {
-
- WriteLog("TaskConfirmCheck task $task->id failed notes: ", sizeof($notes));
- $result = 0;
- }
- break;
- case 12:
- require_once "server.php";
- $task->control_map_checked = TaskControlMapCheck($taskid);
- $task->save();
- if (intval($task->control_map_checked) != 1) {
- WriteLog("TaskConfirmCheck task $task->id failed control map: ",intval($task->control_map_checked));
- $result = 0;
- }
- break;
- case 13:
- if (intval($tmcId) > 0 && isset($proj)) {
- $section = $task->getSection();
- if ($section) {
- require_once("curlexec.php");
- $str = "http://oiltest.prmsys.net/api/session/finish?deviceId=$tmcId§ionId=$section->id";
- $response = CURLrequestGET($str, ["uuid-key: 07a13c8907d1-6a7bdba1-a2fz-aatgu4j"]);
- WriteLog("TaskConfirmCheck request response ", $response);
- if (intval($response) > 0) {
- WriteLog("TaskConfirmCheck task $task->id failed with oil tmc, api response: ", $response);
- return 4;
- }
- }
- }
- break;
- case 14:
- $zone_req= $tasktype->zone_required_id;
- if ($zone_req && $zoneId != $zone_req)
- $result = 2;
- break;
- case 17:
- $str = "select ar_object_id from tasks where id=$taskid";
- $query = mysqli_query($link, $str);
- if ($result = mysqli_fetch_object($query)) {
- if (!$result->ar_object_id)
- $result = 0;
- }
- break;
- case 18:
- global $host, $port;
- WriteLog(666, "18!!!");
- if (CheckConnection())
- readfile("http://$host:$port/WebAPI/1");
- break;
- }
-
- $exec = \app\models\MappingworksModel::workToExecute($taskid);
-
-
-
-
-
- return $result;
- }
- function GetLastZoneId($accId, $echo=false)
- {
- global $link;
- $str = "SELECT * from user_positions where acc_id=$accId and DATE_ADD(ts, INTERVAL 1 minute) > now() order by id desc limit 1";
- $result_pos = mysqli_query($link, $str);
- if ($obj = mysqli_fetch_object($result_pos)) {
- $location_id = $obj->location_id;
- $x = $obj->coord_x;
- $y = $obj->coord_y;
- }
-
-
-
- $str = "SELECT * from zones where ($x < x1+x2*5) and ($x > x1-x2*5) and ($y < z1+z2*5) and ($y > z1-z2*5) and location_id=$location_id limit 1";
- WriteLog($accId, $str);
- if ($echo)
- {
- echo $str;
- }
- $result_zones = mysqli_query($link, $str);
- if ($obj = mysqli_fetch_object($result_zones)) {
- $zone_id = $obj->id;
- $desc = $obj->description;
- return $zone_id;
- }
- return 0;
- }
- function GetZoneName($zone_id)
- {
- global $link;
- $str = "SELECT description from zones where id=$zone_id";
- $result_pos = mysqli_query($link, $str);
- if ($obj = mysqli_fetch_object($result_pos)) {
- return $obj->description;
- }
- return "";
- }
- function IsMeasurement($task_id)
- {
- global $link;
- $str = "SELECT * from asusg_measurements where smopp_task_id=$task_id order by id desc limit 1";
- $result_pos = mysqli_query($link, $str);
- if ($obj = mysqli_fetch_object($result_pos)) {
-
- return $obj;
- }
- WriteLog("IsMeasurement task $task_id", "false");
- return null;
- }
- function Measurements2JSON($proj_id)
- {
- global $link;
- $work_id = 0;
- $user_id = 0;
- $jsonStringReturn = array();
- $measurements = array();
- $str = "SELECT mes.* from tasks as t join asusg_measurements as mes on mes.smopp_task_id=t.id where t.input_id=$proj_id";
- $result_pos = mysqli_query($link, $str);
- while ($obj = mysqli_fetch_object($result_pos)) {
- if (!$work_id)
- $work_id = $obj->work_id;
- if (!$user_id)
- $user_id = json_decode($obj->worker)->id;
- $measurement = [];
- $measurement['measurement_id'] = $obj->measurement_id;
- $measurement['characteristic_id'] = $obj->characteristic_id;
- $measurement['measurement_stage'] = $obj->measurement_stage;
- $measurement['measurement_value'] = $obj->measurement_value;
- $measurement['comment'] = json_decode($obj->measurement_comment)->text;
- $measurements[] = $measurement;
- }
- $jsonStringReturn['user_id'] = $user_id;
- $jsonStringReturn['work_id'] = $work_id;
- $jsonStringReturn['measurements'] = $measurements;
- return $jsonStringReturn;
- }
- function Measurements2JSONTask($task_id, $user_id, $ignore_hardware = true)
- {
- global $link;
- $work_id = 0;
- $jsonStringReturn = array();
- $measurements = array();
- $str = "SELECT mes.* from tasks as t join asusg_measurements as mes on mes.smopp_task_id=t.id where t.id=$task_id";
- $result_pos = mysqli_query($link, $str);
- while ($obj = mysqli_fetch_object($result_pos)) {
- if ($ignore_hardware && intval($obj->is_hw_measurement)>0)
- continue;
- if (!$work_id)
- $work_id = $obj->work_id;
- if (!$user_id)
- {
- $user_id = json_decode($obj->worker)->id;
- }
- if ($obj->value_type == 'boolean')
- {
- $obj->measurement_value = $obj->measurement_value == 1 ?true:false;
- }
- $measurement = [];
- $measurement['measurement_id'] = $obj->measurement_id;
- $measurement['characteristic_id'] = $obj->characteristic_id;
- $measurement['measurement_stage'] = $obj->measurement_stage;
- $measurement['measurement_value'] = $obj->measurement_value;
- $measurement['comment'] = json_decode($obj->measurement_comment)->text;
- $measurements[] = $measurement;
- }
- $jsonStringReturn['user_id'] = $user_id;
- $jsonStringReturn['work_id'] = $work_id;
- $jsonStringReturn['measurements'] = $measurements;
- return $jsonStringReturn;
- }
- function WriteMeasurementsToTWX($dict)
- {
- require_once 'curlexec.php';
-
-
- $url = "http://qaplatform.digitaldepot.ru:8085/Thingworx/Things/2050UserLibraryExp/Services/write_work_measurements_v2";
- $result = CURLrequestPOST($url, ["AppKey: 33cd23bb-3b03-4638-afef-7104a13e9211"], $dict);
- WriteLog("WriteMeasurementsToTWX input ".json_encode($dict), $result);
- }
- function TaskConfirm($num, $id, $tid, $confirm_data, $verbose=false)
- {
-
- ob_start();
- global $link, $companyID;
-
- $task = Task::Find($tid);
- if ($task != null) {
- $accid = intval($task->assignees_arr);
- if ($accid != intval($id))
- {
- TaskConfirmResult($num, 0, $tid);
- EnqueueCMD($id, "21");
- WriteLog("TaskConfirm task $tid failed account id $id != ",$accid);
- return;
- }
- if (intval($task->status) == 5)
- {
- TaskConfirmResult($num, 1, $tid);
- WriteLog("TaskConfirm task $tid failed status already ",$task->status);
- return;
- }
- $zoneId = GetLastZoneId($id);
- $checkresult = TaskConfirmCheck($task, $zoneId);
- if ($verbose)
- echo "result $checkresult";
- if ($checkresult != 1) {
- TaskConfirmResult($num, $checkresult, $tid);
- return;
- }
-
- $account = Account::Find($id);
- if ($account != null) {
- $tasks = $account->tasks;
- $account->last_action = new \DateTime("now");
- $account->Save();
- $companyID = $account->getCompany()->id;
- $measurement = IsMeasurement($tid);
- if ($measurement)
- {
-
- $task_hw = $task->asusg_task_hw_measurement_id;
- if ($task_hw)
- {
- if (intval($task->status) != 7) {
- TaskConfirmResult($num, 0, $tid);
- WriteLog("TaskConfirm task $tid failed status is ", $task->status);
- return;
- }
- }
- $json = Measurements2JSONTask($tid, $account->uuid);
- \app\models\entity\Metrics::log(2, $num, 'write_work_measurements_v2, workId = ' . ($json['work_id'] ?? 0));
- WriteMeasurementsToTWX($json);
- \app\models\entity\Metrics::log(3, $num, 'write_work_measurements_v2, workId = ' . ($json['work_id'] ?? 0));
- }
- else
- {
- $subs = explode(" ",$task->name);
- if ($subs[0] === "Замер")
- {
- TaskConfirmResult($num, 0, $tid);
- return;
- }
- }
- mysqli_query($link, "update tasks set status=5, zone_id = $zoneId, finished_time = NOW() where id=$tid");
- \app\models\ElasticLog::command((int)$task->id, 'Завершение');
- $parenttask = Task::Find($task->parent_id);
- $subtasks = GrabSubTasks($parenttask->id);
- $numconfirmed = 0;
- foreach ($subtasks as $sub) {
- $status = intval($sub['status']);
- $subtask = Task::Find($sub['id']);
- if ($status == 5 && $tasks->contains($subtask)) {
- $numconfirmed++;
- }
- }
- if ($verbose)
- {
- var_dump($numconfirmed);
- var_dump(sizeof($subtasks));
- }
- if ($numconfirmed == sizeof($subtasks)) {
- $parenttask->status = 5;
- $parenttask->Save();
- $proj = $parenttask->project;
- if ($verbose)
- \Doctrine\Common\Util\Debug::dump($proj);
- if ($proj != null) {
- $proj->finished_time = new \DateTime("now");;
- $proj->setStatus(GetProjectStatus($proj->id));
- if ($verbose)
- var_dump($proj->getStatus());
- $proj->Save();
-
- TempStartProject($proj);
- }
- TasksAssign('', true, 0, false);
- }
- WriteLog("TaskConfirm success $tid account id $accid","");
- OCStaskstatus($tid, 5, $accid);
- TaskConfirmResult($num, 1, $tid);
- }
- }
- }
- function TaskConfirmResult($num, $res, $tid)
- {
- \app\models\entity\Metrics::log(4, $num, 'taskId = ' . $tid);
- $buf = pack("C", $num);
- $buf .= pack("Cl*", $res, $tid);
- ob_get_clean();
- echo base64_encode($buf);
- }
- function CheckSection($letter, $series, $number, $subnumber)
- {
- if ($subnumber) {
- global $entityManager;
- $sec = $entityManager->getRepository('Section')->findBy([
- 'locomotive_series' => $series,
- 'section_number' => $number,
- 'section_subnumber' => $subnumber,
- "letter" => $letter
- ]);
- if (sizeof($sec) > 0) {
- $section = $sec[0];
- } else {
- $series = LocoSeries::Find("$series");
- if ($series != null) {
- $section = new Section();
- $section->letter = $letter;
- $section->series = $series;
- $section->setSectionSubnumber($subnumber);
- $section->setSectionNumber($number);
- }
- }
- if ($section != null) {
- UpdateDiagnosticMap($section, true);
- }
- }
- }
- function UpdateDiagnosticMap(Section $section, $save = false)
- {
- $params['subnum_section'] = $section->getSectionSubnumber();
- $locomotiveModel = new app\models\LocomotiveModel();
- $result = $locomotiveModel->getSectionInfo($params);
- $json = json_decode($result);
- if ($json != null && $json->diagnosticMap != null) {
- $uuid = $json->diagnosticMap;
- $section->uuid = $json->section_id;
- $mynum = $json->section_num;
- $letter = substr($mynum, -1);
- if (intval($letter) <= 0)
- $section->letter = $letter;
- $existed = DiagnosticMap::Find($uuid);
- if ($existed == null) {
- $dm = new DiagnosticMap();
- $dm->created = new DateTime("now");
- $dm->uuid = $uuid;
- $section->addDiagnosticMap($dm);
- $section->diagnostic_map = $uuid;
- }
- }
- if ($save)
- $section->Save();
- }
- function CreateProject($projecttype, $loco_number, $loco_type, $А, $Б, $В, $Г)
- {
- global $link, $companyID;
- CheckSection("А", $loco_type, $loco_number, $А);
- CheckSection("Б", $loco_type, $loco_number, $Б);
- CheckSection("В", $loco_type, $loco_number, $В);
- CheckSection("Г", $loco_type, $loco_number, $Г);
- $qstr = "insert into projects_locotech (action, company, status, loco_type,loco_number,depo,depo_service, created, urgent) values ($projecttype, $companyID,1,'$loco_type',$loco_number,'','', NOW(), 0)";
- mysqli_query($link, $qstr);
- $activeid = mysqli_insert_id($link);
- if ($activeid) {
- if (StartProject($projecttype, $activeid))
- TasksAssign('', true, $activeid);
- }
- }
- function TempStartProject($proj = null)
- {
- global $link, $companyID;
- $projecttype = $proj->getAction();
- if ($projecttype == 187 || $projecttype == 185 || $projecttype == 170 || $projecttype == 178) {
- if ($proj->getStatus() == 5) {
- $loco_number = $proj->loco_number;
- $loco_type = $proj->getLocoType();
- $qstr = "insert into projects_locotech (action, company, status, loco_type,loco_number,depo,depo_service, created, urgent) values (" . 214 . "," . 3 . ",1,'$loco_type','$loco_number','','', NOW(), 0)";
- mysqli_query($link, $qstr);
- $activeid = mysqli_insert_id($link);
- if ($activeid) {
- $project = Project::Find($activeid);
- if ($project != null) {
-
- if ($proj->section) {
- $project->section = $proj->section;
- $project->Save();
- }
- }
- if (StartProject(214, $activeid))
- TasksAssign('', true, $activeid);
- }
-
- }
- }
- }
- function GrabReadyTasksForAccount($accid, $typeid)
- {
- global $link;
- $query = mysqli_query($link, "select * from tasks where status = 5 and type = $typeid and assignees_arr=".$accid);
- $taskarr = array();
- while ($query && $res = mysqli_fetch_array($query))
- {
- array_push($taskarr, $res);
- }
- return $taskarr;
- }
- function GetAverageTime($taskarr)
- {
- $sum = 0;
- foreach ($taskarr as $res)
- {
- $time = TimeSpentForTaskFromArray($res);
- $sum += $time;
- }
- $sum /= sizeof($taskarr);
- $sum = round($sum, 0, PHP_ROUND_HALF_UP);
- if ($sum > 120)
- $sum = '---';
- return $sum;
- }
- function EfficiencyReport($accid)
- {
- global $link;
- $query = mysqli_query($link, "select * from tasks where status = 5 and assignees_arr=".$accid);
- $taskarr = array();
- $retarr = array();
-
- while ($query && $res = mysqli_fetch_array($query))
- {
- $timespent = TimeSpentForTaskFromArray($res);
- $typeid = $res['type'];
- if (sizeof($taskarr[$typeid]) == 0) {
- $taskarr[$typeid] = array();
- }
- array_push($taskarr[$typeid], $timespent);
- }
- foreach ($taskarr as $type_id=>$timesspent)
- {
- $sum = 0;
- foreach ($timesspent as $time) {
- $sum += $time;
- }
-
- $sum /= sizeof($time);
- if ($sum > 120)
- $sum = '---';
- $retarr[$type_id] = $sum;
- }
- return $retarr;
- }
- function encrypt_decrypt($action, $string)
- {
- $output = false;
- $encrypt_method = "AES-256-CBC";
- $secret_key = '202cb962ac59075b964b07152d234b70';
- $secret_iv = '289dff07669d7a23de0ef88d2f7129e7';
-
- $key = hash('sha256', $secret_key);
-
-
- $iv = substr(hash('sha256', $secret_iv), 0, 16);
- if ($action == 'encrypt') {
- $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
- $output = base64_encode($output);
- } elseif ($action == 'decrypt') {
- $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
- }
- return $output;
- }
|