From 9b5bd86d4f912dde9d9f71296918bd48e885ca28 Mon Sep 17 00:00:00 2001 From: Mark W <24956497+ndg63276@users.noreply.github.com> Date: Wed, 16 Aug 2023 09:45:21 +0100 Subject: [PATCH] LIMS-40: Remove concat(concat(concat( functions (#608) * LIMS-40: Remove concat(concat(concat( functions * Remove dangling bracket Co-authored-by: Matthew Pritchard <46708056+MattPrit@users.noreply.github.com> --------- Co-authored-by: Mark Williams Co-authored-by: Matthew Pritchard <46708056+MattPrit@users.noreply.github.com> --- api/src/Model/Services/AssignData.php | 6 ++-- api/src/Model/Services/UserData.php | 8 +++--- api/src/Page.php | 16 +++++------ api/src/Page/Cal.php | 4 +-- api/src/Page/Cell.php | 4 +-- api/src/Page/DC.php | 8 +++--- api/src/Page/Download.php | 2 +- api/src/Page/Fault.php | 10 +++---- api/src/Page/Image.php | 2 +- api/src/Page/Imaging.php | 2 +- api/src/Page/PDF.php | 4 +-- api/src/Page/Processing.php | 2 +- api/src/Page/Projects.php | 6 ++-- api/src/Page/Proposal.php | 10 +++---- api/src/Page/Robot.php | 16 +++++------ api/src/Page/Sample.php | 4 +-- api/src/Page/Shipment.php | 22 +++++++-------- api/src/Page/Stats.php | 4 +-- api/src/Page/Vstat.php | 4 +-- api/src/TemplateParser.php | 4 +-- .../Controllers/AssignControllerTest.php | 14 +++++----- api/tests/Model/Services/AssignDataTest.php | 4 +-- .../Services/UserDataSingleInvocationTest.php | 28 +++++++++---------- 23 files changed, 92 insertions(+), 92 deletions(-) diff --git a/api/src/Model/Services/AssignData.php b/api/src/Model/Services/AssignData.php index 96657b322..f2d681a41 100644 --- a/api/src/Model/Services/AssignData.php +++ b/api/src/Model/Services/AssignData.php @@ -21,7 +21,7 @@ function getContainer($visitId, $containerId) INNER JOIN shipping s ON s.shippingid = d.shippingid INNER JOIN blsession bl ON bl.proposalid = s.proposalid INNER JOIN proposal p ON s.proposalid = p.proposalid - WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), bl.visit_number) LIKE :1 + WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) LIKE :1 AND c.containerid=:2", array($visitId, $containerId)); } @@ -65,7 +65,7 @@ function getDewar($dewarId, $proposalId, $visitId) $arg = $proposalId; if ($visitId) { - $where = "CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), bl.visit_number) LIKE :1"; + $where = "CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) LIKE :1"; $arg = $visitId; } @@ -113,4 +113,4 @@ function getContainerBarcodesForProposal($proposalId) INNER JOIN containerregistry_has_proposal crhp ON crhp.containerregistryid = cr.containerregistryid WHERE crhp.proposalid = :1", array($proposalId)); } -} \ No newline at end of file +} diff --git a/api/src/Model/Services/UserData.php b/api/src/Model/Services/UserData.php index c3a611d0b..bb762b322 100644 --- a/api/src/Model/Services/UserData.php +++ b/api/src/Model/Services/UserData.php @@ -154,7 +154,7 @@ function getUsers($getCount, $isStaffMember, $stringMatch, $page, $sortBy = null INNER JOIN proposal pr ON pr.proposalid = s.proposalid LEFT OUTER JOIN session_has_person shp2 ON p.personid = shp2.personid LEFT OUTER JOIN blsession ses ON ses.sessionid = shp2.sessionid AND ses.startdate < s.startdate'; - $where .= " AND shp.remote IS NOT NULL AND CONCAT(CONCAT(CONCAT(pr.proposalcode,pr.proposalnumber), '-'), s.visit_number) LIKE :" . (sizeof($args) + 1); + $where .= " AND shp.remote IS NOT NULL AND CONCAT(pr.proposalcode, pr.proposalnumber, '-', s.visit_number) LIKE :" . (sizeof($args) + 1); $group = 'GROUP BY p.personid, p.givenname, p.familyname, p.login'; array_push($args, $visitName); } @@ -162,7 +162,7 @@ function getUsers($getCount, $isStaffMember, $stringMatch, $page, $sortBy = null { $join = 'INNER JOIN project_has_person php ON p.personid = php.personid'; $where .= ' AND php.projectid=:' . (sizeof($args) + 1); - $extc = "CONCAT(CONCAT(p.personid, '-'), php.projectid) as ppid,"; + $extc = "CONCAT(p.personid, '-', php.projectid) as ppid,"; array_push($args, $pjid); } @@ -192,7 +192,7 @@ function getUsers($getCount, $isStaffMember, $stringMatch, $page, $sortBy = null } } - $rows = $this->db->paginate("SELECT $extc p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country + $rows = $this->db->paginate("SELECT $extc p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM person p LEFT OUTER JOIN proposalhasperson prhp ON prhp.personid = p.personid LEFT OUTER JOIN labcontact lc ON lc.personid = p.personid @@ -253,7 +253,7 @@ function getUsersForProposal($where, $getCount, $page, $sortBy, $proposalid, $cu } } - $extc = "p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country"; + $extc = "p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country"; $rows = $this->db->paginate("(SELECT $extc FROM person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid diff --git a/api/src/Page.php b/api/src/Page.php index 0a712db31..603592949 100644 --- a/api/src/Page.php +++ b/api/src/Page.php @@ -272,7 +272,7 @@ function auth($require_staff) } else { - $rows = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as vis + $rows = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis FROM proposal p INNER JOIN blsession s ON p.proposalid = s.proposalid INNER JOIN session_has_person shp ON shp.sessionid = s.sessionid @@ -315,7 +315,7 @@ function auth($require_staff) if ($table == 'datacollectiongroup') { - $vis = $this->db->pq("SELECT p.proposalid, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as vis + $vis = $this->db->pq("SELECT p.proposalid, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) INNER JOIN datacollectiongroup dcg ON s.sessionid = dcg.sessionid @@ -323,7 +323,7 @@ function auth($require_staff) } else { - $vis = $this->db->pq("SELECT p.proposalid, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as vis + $vis = $this->db->pq("SELECT p.proposalid, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) INNER JOIN $table dc ON s.sessionid = dc.sessionid WHERE dc.$col = :1", array($this->arg('id'))); @@ -339,7 +339,7 @@ function auth($require_staff) { $vis = $this->arg('visit'); - $visp = $this->db->pq("SELECT p.proposalid FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1", array($this->arg('visit'))); + $visp = $this->db->pq("SELECT p.proposalid FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1", array($this->arg('visit'))); if (sizeof($visp)) $this->proposalid = $visp[0]['PROPOSALID']; @@ -348,7 +348,7 @@ function auth($require_staff) } else if ($this->has_arg('prop')) { - $viss = $this->db->pq("SELECT p.proposalid, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as vis FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE CONCAT(p.proposalcode, p.proposalnumber) LIKE :1", array($this->arg('prop'))); + $viss = $this->db->pq("SELECT p.proposalid, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE CONCAT(p.proposalcode, p.proposalnumber) LIKE :1", array($this->arg('prop'))); $vis = array(); foreach ($viss as $v) @@ -780,8 +780,8 @@ function blsr_visits() if (!$b) return array(); - $visits = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array($b)); - $v = $this->db->paginate("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array($b, 0, 1)); + $visits = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array($b)); + $v = $this->db->paginate("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array($b, 0, 1)); $visits = array_merge($visits, $v); return $visits; } @@ -1137,4 +1137,4 @@ protected function haltIfLackingPermission($permission) { $this->user->can($permission, $this->app); } -} \ No newline at end of file +} diff --git a/api/src/Page/Cal.php b/api/src/Page/Cal.php index cbfada03d..428e2433d 100644 --- a/api/src/Page/Cal.php +++ b/api/src/Page/Cal.php @@ -55,13 +55,13 @@ function _export_ics() { array_push($args, $hash['CKEY']); } - $visits = $this->db->pq("SELECT s.beamlineoperator as lc, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as vis, CONCAT(p.proposalcode, p.proposalnumber) as prop, s.beamlinename as bl, TO_CHAR(s.startdate, 'DD-MM-YYYY') as d, TO_CHAR(s.enddate, 'DD-MM-YYYY') as e, TO_CHAR(s.startdate, 'HH24:MI') as st, TO_CHAR(s.enddate, 'HH24:MI') as en, s.sessionid + $visits = $this->db->pq("SELECT s.beamlineoperator as lc, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis, CONCAT(p.proposalcode, p.proposalnumber) as prop, s.beamlinename as bl, TO_CHAR(s.startdate, 'DD-MM-YYYY') as d, TO_CHAR(s.enddate, 'DD-MM-YYYY') as e, TO_CHAR(s.startdate, 'HH24:MI') as st, TO_CHAR(s.enddate, 'HH24:MI') as en, s.sessionid FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE s.startdate > TO_DATE(:1,'YYYY') $where ORDER BY s.startdate, s.beamlinename", $args); - $user_tmp = $this->db->pq("SELECT s.sessionid, pe.login, CONCAT(CONCAT(pe.givenname, ' '), pe.familyname) as fullname, shp.role + $user_tmp = $this->db->pq("SELECT s.sessionid, pe.login, CONCAT(pe.givenname, ' ', pe.familyname) as fullname, shp.role FROM person pe INNER JOIN session_has_person shp ON shp.personid = pe.personid INNER JOIN blsession s ON s.sessionid = shp.sessionid diff --git a/api/src/Page/Cell.php b/api/src/Page/Cell.php index 1ee300ca5..80fbcc071 100644 --- a/api/src/Page/Cell.php +++ b/api/src/Page/Cell.php @@ -147,7 +147,7 @@ function _cells($output = true) if ($tot % $pp != 0) $pgs++; - $rows = $this->db->paginate("SELECT s.sessionid, api.autoprocprogramid, api.autoprocintegrationid, sqrt(power(ap.refinedcell_a-:13,2)+power(ap.refinedcell_b-:14,2)+power(ap.refinedcell_c-:15,2)+power(ap.refinedcell_alpha-:16,2)+power(ap.refinedcell_beta-:17,2)+power(ap.refinedcell_gamma-:18,2)) as dist, s.beamlinename as bl, app.processingcommandline as type, apss.ntotalobservations as ntobs, apss.ntotaluniqueobservations as nuobs, apss.resolutionlimitlow as rlow, apss.resolutionlimithigh as rhigh, apss.scalingstatisticstype as shell, apss.rmerge, apss.completeness, apss.multiplicity, apss.meanioversigi as isigi, ap.spacegroup as sg, ap.refinedcell_a as cell_a, ap.refinedcell_b as cell_b, ap.refinedcell_c as cell_c, ap.refinedcell_alpha as cell_al, ap.refinedcell_beta as cell_be, ap.refinedcell_gamma as cell_ga, dc.datacollectionid as id, TO_CHAR(dc.starttime, 'DD-MM-YYYY HH24:MI:SS') as st, dc.imagedirectory as dir, dc.filetemplate, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, dc.numberofimages as numimg, dc.axisrange, dc.axisstart, dc.wavelength, dc.transmission, dc.exposuretime, IFNULL(dc.rotationaxis, 'Omega') as rotationaxis + $rows = $this->db->paginate("SELECT s.sessionid, api.autoprocprogramid, api.autoprocintegrationid, sqrt(power(ap.refinedcell_a-:13,2)+power(ap.refinedcell_b-:14,2)+power(ap.refinedcell_c-:15,2)+power(ap.refinedcell_alpha-:16,2)+power(ap.refinedcell_beta-:17,2)+power(ap.refinedcell_gamma-:18,2)) as dist, s.beamlinename as bl, app.processingcommandline as type, apss.ntotalobservations as ntobs, apss.ntotaluniqueobservations as nuobs, apss.resolutionlimitlow as rlow, apss.resolutionlimithigh as rhigh, apss.scalingstatisticstype as shell, apss.rmerge, apss.completeness, apss.multiplicity, apss.meanioversigi as isigi, ap.spacegroup as sg, ap.refinedcell_a as cell_a, ap.refinedcell_b as cell_b, ap.refinedcell_c as cell_c, ap.refinedcell_alpha as cell_al, ap.refinedcell_beta as cell_be, ap.refinedcell_gamma as cell_ga, dc.datacollectionid as id, TO_CHAR(dc.starttime, 'DD-MM-YYYY HH24:MI:SS') as st, dc.imagedirectory as dir, dc.filetemplate, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, dc.numberofimages as numimg, dc.axisrange, dc.axisstart, dc.wavelength, dc.transmission, dc.exposuretime, IFNULL(dc.rotationaxis, 'Omega') as rotationaxis FROM autoprocintegration api INNER JOIN autoprocscaling_has_int aph ON api.autoprocintegrationid = aph.autoprocintegrationid INNER JOIN autoprocscaling aps ON aph.autoprocscalingid = aps.autoprocscalingid @@ -470,4 +470,4 @@ function _proxy_pdbs() $this->app->contentType('text/plain'); $this->app->response()->body($response); } -} \ No newline at end of file +} diff --git a/api/src/Page/DC.php b/api/src/Page/DC.php index 1cfbd8a3c..c6e49a59c 100644 --- a/api/src/Page/DC.php +++ b/api/src/Page/DC.php @@ -176,7 +176,7 @@ function _data_collections($single = null) $info = array(); # Visits if ($this->has_arg('visit')) { - $info = $this->db->pq("SELECT TO_CHAR(s.startdate, 'HH24') as sh, TO_CHAR(s.startdate, 'DDMMYYYY') as dmy, s.sessionid, s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1", array($this->arg('visit'))); + $info = $this->db->pq("SELECT TO_CHAR(s.startdate, 'HH24') as sh, TO_CHAR(s.startdate, 'DDMMYYYY') as dmy, s.sessionid, s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1", array($this->arg('visit'))); if (!sizeof($info)) { $this->_error('No such visit'); @@ -225,8 +225,8 @@ function _data_collections($single = null) array('project_has_xfefspectrum', 'xrf', 'xfefluorescencespectrumid'), ); - $extc = "CONCAT(CONCAT(CONCAT(prop.proposalcode,prop.proposalnumber), '-'), ses.visit_number) as vis, CONCAT(prop.proposalcode, prop.proposalnumber) as prop, "; - $extcg = "max(CONCAT(CONCAT(CONCAT(prop.proposalcode,prop.proposalnumber), '-'), ses.visit_number)) as vis, max(CONCAT(prop.proposalcode, prop.proposalnumber)) as prop, "; + $extc = "CONCAT(prop.proposalcode, prop.proposalnumber, '-', ses.visit_number) as vis, CONCAT(prop.proposalcode, prop.proposalnumber) as prop, "; + $extcg = "max(CONCAT(prop.proposalcode, prop.proposalnumber, '-', ses.visit_number)) as vis, max(CONCAT(prop.proposalcode, prop.proposalnumber)) as prop, "; if ($this->has_arg('dcg')) $extcg = $extc; @@ -1063,7 +1063,7 @@ function _chk_image() return; } - $dct = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as vis, dc.datacollectionid as id, dc.startimagenumber, dc.filetemplate, dc.xtalsnapshotfullpath1 as x1, dc.xtalsnapshotfullpath2 as x2, dc.xtalsnapshotfullpath3 as x3, dc.xtalsnapshotfullpath4 as x4,dc.imageprefix as imp, dc.datacollectionnumber as run, dc.imagedirectory as dir, s.visit_number + $dct = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis, dc.datacollectionid as id, dc.startimagenumber, dc.filetemplate, dc.xtalsnapshotfullpath1 as x1, dc.xtalsnapshotfullpath2 as x2, dc.xtalsnapshotfullpath3 as x3, dc.xtalsnapshotfullpath4 as x4,dc.imageprefix as imp, dc.datacollectionnumber as run, dc.imagedirectory as dir, s.visit_number FROM datacollection dc INNER JOIN datacollectiongroup dcg ON dcg.datacollectiongroupid = dc.datacollectiongroupid INNER JOIN blsession s ON s.sessionid = dcg.sessionid diff --git a/api/src/Page/Download.php b/api/src/Page/Download.php index 4d4ce8099..b86188db5 100644 --- a/api/src/Page/Download.php +++ b/api/src/Page/Download.php @@ -289,7 +289,7 @@ function _csv_report() if (!$this->has_arg('visit')) $this->_error('No visit specified', 'You must specify a visit to download a report for'); - $vis = $this->db->pq("SELECT s.sessionid,s.beamlinename,TO_CHAR(s.startdate, 'DD_MM_YYYY') as st FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1", array($this->arg('visit'))); + $vis = $this->db->pq("SELECT s.sessionid,s.beamlinename,TO_CHAR(s.startdate, 'DD_MM_YYYY') as st FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1", array($this->arg('visit'))); if (!sizeof($vis)) $this->_error('No such visit', 'The specified visit doesnt exist'); diff --git a/api/src/Page/Fault.php b/api/src/Page/Fault.php index 759e3e8a5..1c7f58004 100644 --- a/api/src/Page/Fault.php +++ b/api/src/Page/Fault.php @@ -119,7 +119,7 @@ function _get_faults() if ($this->has_arg('visit')) { - array_push($where, "CONCAT(CONCAT(CONCAT(p.proposalcode,p.proposalnumber),'-'),bl.visit_number) LIKE :" . (sizeof($args) + 1)); + array_push($where, "CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) LIKE :" . (sizeof($args) + 1)); array_push($args, $this->arg('visit')); } @@ -202,7 +202,7 @@ function _get_faults() array_push($args, $start); array_push($args, $end); - $rows = $this->db->paginate("SELECT $ext_columns f.personid, f.assigneeid, CONCAT(CONCAT(pe.givenname, ' '), pe.familyname) as name, CONCAT(CONCAT(asi.givenname, ' '), asi.familyname) as assignee, f.faultid, f.sessionid, f.elogid, f.attachment, CONCAT(CONCAT(CONCAT(p.proposalcode,p.proposalnumber),'-'),bl.visit_number) as visit, bl.beamlinename as beamline, s.systemid, s.name as system, c.componentid, c.name as component, f.subcomponentid, sc.name as subcomponent, TO_CHAR(f.starttime, 'DD-MM-YYYY HH24:MI') as starttime, TO_CHAR(f.endtime, 'DD-MM-YYYY HH24:MI') as endtime, f.beamtimelost, round(TIMESTAMPDIFF('MINUTE',f.beamtimelost_starttime, f.beamtimelost_endtime)/60,2) as lost, f.title, f.resolved, TO_CHAR(f.beamtimelost_endtime, 'DD-MM-YYYY HH24:MI') as beamtimelost_endtime, TO_CHAR(f.beamtimelost_starttime, 'DD-MM-YYYY HH24:MI') as beamtimelost_starttime + $rows = $this->db->paginate("SELECT $ext_columns f.personid, f.assigneeid, CONCAT(pe.givenname, ' ', pe.familyname) as name, CONCAT(asi.givenname, ' ', asi.familyname) as assignee, f.faultid, f.sessionid, f.elogid, f.attachment, CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) as visit, bl.beamlinename as beamline, s.systemid, s.name as system, c.componentid, c.name as component, f.subcomponentid, sc.name as subcomponent, TO_CHAR(f.starttime, 'DD-MM-YYYY HH24:MI') as starttime, TO_CHAR(f.endtime, 'DD-MM-YYYY HH24:MI') as endtime, f.beamtimelost, round(TIMESTAMPDIFF('MINUTE',f.beamtimelost_starttime, f.beamtimelost_endtime)/60,2) as lost, f.title, f.resolved, TO_CHAR(f.beamtimelost_endtime, 'DD-MM-YYYY HH24:MI') as beamtimelost_endtime, TO_CHAR(f.beamtimelost_starttime, 'DD-MM-YYYY HH24:MI') as beamtimelost_starttime FROM bf_fault f INNER JOIN person pe ON pe.personid = f.personid LEFT OUTER JOIN person asi ON asi.personid = f.assigneeid @@ -280,7 +280,7 @@ function _update_fault() if ($f == 'SESSIONID') { - $v = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode,p.proposalnumber),'-'),bl.visit_number) as visit FROM blsession bl INNER JOIN proposal p ON bl.proposalid = p.proposalid WHERE bl.sessionid=:1", array($this->arg($f))); + $v = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) as visit FROM blsession bl INNER JOIN proposal p ON bl.proposalid = p.proposalid WHERE bl.sessionid=:1", array($this->arg($f))); if (sizeof($v)) { $this->_output(array('VISIT' => $v[0]['VISIT'])); @@ -628,7 +628,7 @@ function _add_fault() $newid = $this->db->id(); - $info = $this->db->pq("SELECT CONCAT(CONCAT(pe.givenname, ' '), pe.familyname) as name, CONCAT(CONCAT(CONCAT(p.proposalcode,p.proposalnumber),'-'),bl.visit_number) as visit, bl.beamlinename as beamline, s.name as system, c.name as component, sc.name as subcomponent, TO_CHAR(f.starttime, 'DD-MM-YYYY HH24:MI') as starttime, TO_CHAR(f.endtime, 'DD-MM-YYYY HH24:MI') as endtime, f.beamtimelost, round(TIMESTAMPDIFF('MINUTE', f.beamtimelost_starttime, f.beamtimelost_endtime)/60,2) as lost, f.title, f.resolved, f.resolution, f.description, TO_CHAR(f.beamtimelost_endtime, 'DD-MM-YYYY HH24:MI') as beamtimelost_endtime, TO_CHAR(f.beamtimelost_starttime, 'DD-MM-YYYY HH24:MI') as beamtimelost_starttime, f.owner + $info = $this->db->pq("SELECT CONCAT(pe.givenname, ' ', pe.familyname) as name, CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) as visit, bl.beamlinename as beamline, s.name as system, c.name as component, sc.name as subcomponent, TO_CHAR(f.starttime, 'DD-MM-YYYY HH24:MI') as starttime, TO_CHAR(f.endtime, 'DD-MM-YYYY HH24:MI') as endtime, f.beamtimelost, round(TIMESTAMPDIFF('MINUTE', f.beamtimelost_starttime, f.beamtimelost_endtime)/60,2) as lost, f.title, f.resolved, f.resolution, f.description, TO_CHAR(f.beamtimelost_endtime, 'DD-MM-YYYY HH24:MI') as beamtimelost_endtime, TO_CHAR(f.beamtimelost_starttime, 'DD-MM-YYYY HH24:MI') as beamtimelost_starttime, f.owner FROM bf_fault f INNER JOIN bf_subcomponent sc ON f.subcomponentid = sc.subcomponentid INNER JOIN bf_component c ON sc.componentid = c.componentid @@ -692,4 +692,4 @@ function _add_fault() $this->_output(array('FAULTID' => $newid)); } -} \ No newline at end of file +} diff --git a/api/src/Page/Image.php b/api/src/Page/Image.php index 1bce9b3e9..56925ae6d 100644 --- a/api/src/Page/Image.php +++ b/api/src/Page/Image.php @@ -119,7 +119,7 @@ function _action_image() { FROM robotaction r INNER JOIN blsession s ON r.blsessionid = s.sessionid INNER JOIN proposal p ON s.proposalid = p.proposalid - WHERE r.robotactionid=:1 AND CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :2", array($this->arg('aid'), $this->arg('visit'))); + WHERE r.robotactionid=:1 AND CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :2", array($this->arg('aid'), $this->arg('visit'))); //print_r($image); diff --git a/api/src/Page/Imaging.php b/api/src/Page/Imaging.php index ccb7b7abd..09d704bce 100644 --- a/api/src/Page/Imaging.php +++ b/api/src/Page/Imaging.php @@ -440,7 +440,7 @@ function _get_inspections() } $inspections = $this->db->paginate("SELECT ROUND(TIMESTAMPDIFF('HOUR', i.bltimestamp, CURRENT_TIMESTAMP)/24,1) as age, ROUND(TIMESTAMPDIFF('MINUTE', i.scheduledtimestamp, i.bltimestamp)/(24*60),2) as dwell, c.code as container, CONCAT(p.proposalcode, p.proposalnumber) as prop, TO_CHAR(min(im.modifiedtimestamp), 'DD-MM-YYYY HH24:MI') as imagesscoredtimestamp, case when count(im.blsampleimageid) > 0 then 1 else 0 end as imagesscored, - TO_CHAR(i.scheduledtimestamp, 'DD-MM-YYYY HH24:MI') as scheduledtimestamp, sc.offset_hours, i.priority, i.state, i.schedulecomponentid, i.manual, img.name as imager, it.name as inspectiontype, i.containerinspectionid, i.containerid, i.inspectiontypeid, i.temperature, TO_CHAR(i.bltimestamp, 'DD-MM-YYYY HH24:MI') as bltimestamp, i.imagerid, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), ses.visit_number) as visit, ses.visit_number, TIMESTAMPDIFF('MINUTE', i.bltimestamp, i.completedtimestamp) as duration $extc + TO_CHAR(i.scheduledtimestamp, 'DD-MM-YYYY HH24:MI') as scheduledtimestamp, sc.offset_hours, i.priority, i.state, i.schedulecomponentid, i.manual, img.name as imager, it.name as inspectiontype, i.containerinspectionid, i.containerid, i.inspectiontypeid, i.temperature, TO_CHAR(i.bltimestamp, 'DD-MM-YYYY HH24:MI') as bltimestamp, i.imagerid, CONCAT(p.proposalcode, p.proposalnumber, '-', ses.visit_number) as visit, ses.visit_number, TIMESTAMPDIFF('MINUTE', i.bltimestamp, i.completedtimestamp) as duration $extc FROM containerinspection i LEFT OUTER JOIN schedulecomponent sc ON sc.schedulecomponentid = i.schedulecomponentid LEFT OUTER JOIN blsampleimage im ON im.containerinspectionid = i.containerinspectionid AND im.blsampleimagescoreid IS NOT NULL diff --git a/api/src/Page/PDF.php b/api/src/Page/PDF.php index 326ca05ad..48d6944d3 100644 --- a/api/src/Page/PDF.php +++ b/api/src/Page/PDF.php @@ -202,10 +202,10 @@ function _visit_report() $this->_error('No visit specified', 'You need to specify a visit to view this page'); } - $info = $this->db->pq("SELECT TIMESTAMPDIFF('MINUTE', s.startdate, s.enddate)/60 as len, s.sessionid as sid, s.beamlinename, s.beamlineoperator as lc, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, CONCAT(p.proposalcode, p.proposalnumber) as prop + $info = $this->db->pq("SELECT TIMESTAMPDIFF('MINUTE', s.startdate, s.enddate)/60 as len, s.sessionid as sid, s.beamlinename, s.beamlineoperator as lc, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, CONCAT(p.proposalcode, p.proposalnumber) as prop FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid - WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1", array($this->arg('visit'))); + WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1", array($this->arg('visit'))); if (!sizeof($info)) $this->_error('No such visit', 'The specified visit doesnt exist'); diff --git a/api/src/Page/Processing.php b/api/src/Page/Processing.php index fd2996fa1..4620f4abb 100644 --- a/api/src/Page/Processing.php +++ b/api/src/Page/Processing.php @@ -400,7 +400,7 @@ function _get_downstreams($dcid = null, $aid = null) { app.processingstatus, app.processingmessage, app.processingstarttime, app.processingendtime, pj.recipe, pj.comments as processingcomments, dc.imageprefix as dcimageprefix, dc.imagedirectory as dcimagedirectory, - CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, + CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, GROUP_CONCAT(CONCAT(pjp.parameterkey, '=', pjp.parametervalue)) as parameters FROM datacollection dc INNER JOIN datacollectiongroup dcg ON dcg.datacollectiongroupid = dc.datacollectiongroupid diff --git a/api/src/Page/Projects.php b/api/src/Page/Projects.php index 132d3d385..34e4eb239 100644 --- a/api/src/Page/Projects.php +++ b/api/src/Page/Projects.php @@ -78,7 +78,7 @@ function _projects() array_push($args, $start); array_push($args, $end); - $rows = $this->db->paginate("SELECT p.title, p.projectid, p.acronym, p.personid, CONCAT(CONCAT(pe.givenname, ' '), pe.familyname) as person + $rows = $this->db->paginate("SELECT p.title, p.projectid, p.acronym, p.personid, CONCAT(pe.givenname, ' ', pe.familyname) as person FROM project p INNER JOIN person pe ON p.personid = pe.personid LEFT OUTER JOIN project_has_person php ON php.projectid = p.projectid $where @@ -219,7 +219,7 @@ function _add_user() $this->_error('No such project'); $proj = $proj[0]; - $person = $this->db->pq("SELECT CONCAT(CONCAT(givenname, ' '), familyname) as fullname FROM person WHERE personid=:1", array($this->arg('PERSONID'))); + $person = $this->db->pq("SELECT CONCAT(givenname, ' ', familyname) as fullname FROM person WHERE personid=:1", array($this->arg('PERSONID'))); if (!sizeof($person)) $this->_error('No such person'); $person = $person[0]; @@ -278,4 +278,4 @@ function _migrate() } } } -} \ No newline at end of file +} diff --git a/api/src/Page/Proposal.php b/api/src/Page/Proposal.php index aa61460f1..7463beb45 100644 --- a/api/src/Page/Proposal.php +++ b/api/src/Page/Proposal.php @@ -209,7 +209,7 @@ function _get_proposals($id = null) $order = $cols[$this->arg('sort_by')] . ' ' . $dir; } - $rows = $this->db->paginate("SELECT CONCAT(p.proposalcode,p.proposalnumber) as proposal, p.title, TO_CHAR(p.bltimestamp, 'DD-MM-YYYY') as st, p.proposalcode, p.proposalnumber, count(distinct s.sessionid) as vcount, p.proposalid, CONCAT(CONCAT(pe.givenname, ' '), pe.familyname) as fullname, pe.personid, p.state, IF(p.state = 'Open', 1, 0) as active, CONCAT(p.proposalcode,p.proposalnumber) as prop, s.beamlinename + $rows = $this->db->paginate("SELECT CONCAT(p.proposalcode,p.proposalnumber) as proposal, p.title, TO_CHAR(p.bltimestamp, 'DD-MM-YYYY') as st, p.proposalcode, p.proposalnumber, count(distinct s.sessionid) as vcount, p.proposalid, CONCAT(pe.givenname, ' ', pe.familyname) as fullname, pe.personid, p.state, IF(p.state = 'Open', 1, 0) as active, CONCAT(p.proposalcode,p.proposalnumber) as prop, s.beamlinename FROM proposal p LEFT OUTER JOIN blsession s ON p.proposalid = s.proposalid LEFT OUTER JOIN person pe ON pe.personid = p.personid @@ -393,7 +393,7 @@ function _get_visits($visit = null, $output = true) } if ($visit) { - $where .= " AND CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :" . (sizeof($args) + 1); + $where .= " AND CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :" . (sizeof($args) + 1); array_push($args, $visit); } @@ -567,7 +567,7 @@ function _update_visit_comment() $vis = $this->db->pq("SELECT s.sessionid, st.sessiontypeid, st.typename from blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid LEFT OUTER JOIN sessiontype st on st.sessionid = s.sessionid - WHERE p.proposalid = :1 AND CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :2", array($this->proposalid, $this->arg('visit'))); + WHERE p.proposalid = :1 AND CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :2", array($this->proposalid, $this->arg('visit'))); if (!sizeof($vis)) $this->_error('No such visit'); $vis = $vis[0]; @@ -592,7 +592,7 @@ function _update_visit() $vis = $this->db->pq("SELECT s.sessionid, st.sessiontypeid, st.typename from blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid LEFT OUTER JOIN sessiontype st on st.sessionid = s.sessionid - WHERE p.proposalid = :1 AND CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :2", array($this->proposalid, $this->arg('visit'))); + WHERE p.proposalid = :1 AND CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :2", array($this->proposalid, $this->arg('visit'))); if (!sizeof($vis)) $this->_error('No such visit'); @@ -756,7 +756,7 @@ function _get_visit_users() 'shp.personid DESC' ); - $rows = $this->db->paginate("SELECT shp.personid, shp.sessionid, shp.role, shp.remote, CONCAT(shp.sessionid, '-', pe.personid) as shpkey, CONCAT(CONCAT(pe.givenname, ' '), pe.familyname) as fullname + $rows = $this->db->paginate("SELECT shp.personid, shp.sessionid, shp.role, shp.remote, CONCAT(shp.sessionid, '-', pe.personid) as shpkey, CONCAT(pe.givenname, ' ', pe.familyname) as fullname FROM session_has_person shp INNER JOIN person pe ON pe.personid = shp.personid INNER JOIN blsession s ON s.sessionid = shp.sessionid diff --git a/api/src/Page/Robot.php b/api/src/Page/Robot.php index 93147015a..da209ff59 100644 --- a/api/src/Page/Robot.php +++ b/api/src/Page/Robot.php @@ -35,14 +35,14 @@ function _averages() { : "MEDIAN(TIMESTAMPDIFF('SECOND', CAST(r.starttimestamp AS DATE), CAST(r.endtimestamp AS DATE))) as avgt"; - $rows = $this->db->pq("SELECT CONCAT(CONCAT(vr.run, '-'), s.beamlinename) as rbl, min(vr.run) as run, min(vr.runid) as runid, min(s.beamlinename) as bl, count(r.robotactionid) as num, + $rows = $this->db->pq("SELECT CONCAT(vr.run, '-', s.beamlinename) as rbl, min(vr.run) as run, min(vr.runid) as runid, min(s.beamlinename) as bl, count(r.robotactionid) as num, $median FROM v_run vr INNER JOIN blsession s ON (s.startdate BETWEEN vr.startdate AND vr.enddate) INNER JOIN proposal p ON (p.proposalid = s.proposalid) INNER JOIN robotaction r ON (r.blsessionid = s.sessionid) WHERE /*r.robotactionid > 1 AND*/ p.proposalcode <> 'cm' AND r.status='SUCCESS' AND (r.actiontype = 'LOAD') - GROUP BY CONCAT(CONCAT(vr.run, '-'), s.beamlinename) + GROUP BY CONCAT(vr.run, '-', s.beamlinename) ORDER BY min(s.beamlinename), min(vr.runid)"); $tvs = $this->db->pq("SELECT distinct vr.run,vr.runid @@ -122,7 +122,7 @@ function _errors() { array_push($args, $this->arg('run')); } if ($this->has_arg('visit')) { - array_push($where, "CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :" . (sizeof($args)+1)); + array_push($where, "CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :" . (sizeof($args)+1)); array_push($args, $this->arg('visit')); } if ($this->has_arg('s')) { @@ -154,7 +154,7 @@ function _errors() { array_push($args, $start); array_push($args, $end); - $errors = $this->db->paginate("SELECT r.samplebarcode, r.actiontype, r.dewarlocation, r.containerlocation, r.message, TO_CHAR(r.starttimestamp, 'DD-MM-YYYY HH24:MI:SS') as st, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as vis, s.beamlinename as bl, r.status, TIMESTAMPDIFF('SECOND', CAST(r.starttimestamp AS DATE), CAST(r.endtimestamp AS DATE)) as time + $errors = $this->db->paginate("SELECT r.samplebarcode, r.actiontype, r.dewarlocation, r.containerlocation, r.message, TO_CHAR(r.starttimestamp, 'DD-MM-YYYY HH24:MI:SS') as st, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis, s.beamlinename as bl, r.status, TIMESTAMPDIFF('SECOND', CAST(r.starttimestamp AS DATE), CAST(r.endtimestamp AS DATE)) as time FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) INNER JOIN v_run vr ON s.startdate BETWEEN vr.startdate AND vr.enddate @@ -188,7 +188,7 @@ function _visit_profile() { } if ($this->has_arg('visit')) { - $where .= " AND CONCAT(CONCAT(CONCAT(p.proposalcode,p.proposalnumber), '-'), s.visit_number) LIKE :".(sizeof($args)+1); + $where .= " AND CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :".(sizeof($args)+1); array_push($args, $this->arg('visit')); } @@ -266,7 +266,7 @@ function _totals() { INNER JOIN proposal p ON (p.proposalid = s.proposalid) INNER JOIN robotaction r ON (r.blsessionid = s.sessionid) WHERE p.proposalcode <> 'cm' AND $where AND (r.actiontype = 'LOAD') - GROUP BY CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number)) inq", $args); + GROUP BY CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number)) inq", $args); $tot = intval($tot[0]['TOT']); $start = 0; @@ -289,13 +289,13 @@ function _totals() { "ROUND(AVG(CASE WHEN r.status='SUCCESS' then TIMESTAMPDIFF('SECOND', CAST(r.starttimestamp AS DATE), CAST(r.endtimestamp AS DATE)) END),1) as avgt" : "ROUND(MEDIAN(CASE WHEN r.status='SUCCESS' then TIMESTAMPDIFF('SECOND', CAST(r.starttimestamp AS DATE), CAST(r.endtimestamp AS DATE)) END),1) as avgt"; - $q = "SELECT TO_CHAR(min(r.starttimestamp), 'DD-MM-YYYY HH24:MI:SS') as st, CONCAT(CONCAT(CONCAT(p.proposalcode,p.proposalnumber), '-'), s.visit_number) as vis, s.beamlinename as bl, count(r.robotactionid) as num, count(CASE WHEN r.status='SUCCESS' then 1 end) as success, count(CASE WHEN r.status='ERROR' then 1 end) as error, count(CASE WHEN r.status='CRITICAL' then 1 end) as critical, count(CASE WHEN r.status='WARNING' then 1 end) as warning, count(CASE WHEN r.status='EPICSFAIL' then 1 end) as epicsfail, count(CASE WHEN r.status='COMMANDNOTSENT' then 1 end) as commandnotsent, + $q = "SELECT TO_CHAR(min(r.starttimestamp), 'DD-MM-YYYY HH24:MI:SS') as st, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as vis, s.beamlinename as bl, count(r.robotactionid) as num, count(CASE WHEN r.status='SUCCESS' then 1 end) as success, count(CASE WHEN r.status='ERROR' then 1 end) as error, count(CASE WHEN r.status='CRITICAL' then 1 end) as critical, count(CASE WHEN r.status='WARNING' then 1 end) as warning, count(CASE WHEN r.status='EPICSFAIL' then 1 end) as epicsfail, count(CASE WHEN r.status='COMMANDNOTSENT' then 1 end) as commandnotsent, $median FROM v_run vr INNER JOIN blsession s ON (s.startdate BETWEEN vr.startdate AND vr.enddate) INNER JOIN proposal p ON (p.proposalid = s.proposalid) INNER JOIN robotaction r ON (r.blsessionid = s.sessionid) WHERE p.proposalcode <> 'cm' AND $where AND r.actiontype = 'LOAD' - GROUP BY CONCAT(CONCAT(CONCAT(p.proposalcode,p.proposalnumber), '-'), s.visit_number), s.beamlinename + GROUP BY CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number), s.beamlinename ORDER BY min(r.starttimestamp) DESC"; $rows = $this->db->paginate($q, $args); diff --git a/api/src/Page/Sample.php b/api/src/Page/Sample.php index a43884313..48adf61f0 100644 --- a/api/src/Page/Sample.php +++ b/api/src/Page/Sample.php @@ -1047,7 +1047,7 @@ function _samples() # For a visit if ($this->has_arg('visit')) { - $info = $this->db->pq("SELECT s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1", array($this->arg('visit'))); + $info = $this->db->pq("SELECT s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1", array($this->arg('visit'))); if (!sizeof($info)) $this->_error('No such visit'); @@ -2734,7 +2734,7 @@ function _get_sample_group_samples() b.blsampleid, cr.crystalid, cr.name as crystal, - CONCAT(CONCAT(bshg.blsamplegroupid, '-'), b.blsampleid) as blsamplegroupsampleid, + CONCAT(bshg.blsamplegroupid, '-', b.blsampleid) as blsamplegroupsampleid, c.containerid, IF(c.code IS NOT NULL, c.code, c.barcode) as container, c.capacity diff --git a/api/src/Page/Shipment.php b/api/src/Page/Shipment.php index 62af99cbb..14234594a 100644 --- a/api/src/Page/Shipment.php +++ b/api/src/Page/Shipment.php @@ -402,7 +402,7 @@ function _get_history() array_push($args, $start); array_push($args, $end); - $rows = $this->db->paginate("SELECT s.shippingid, s.shippingname as shipment, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), b.visit_number) as visit, b.beamlinename as bl, b.beamlineoperator as localcontact, h.dewarid, h.dewarstatus,h.storagelocation,TO_CHAR(h.arrivaldate, 'DD-MM-YYYY HH24:MI') as arrival, d.comments + $rows = $this->db->paginate("SELECT s.shippingid, s.shippingname as shipment, CONCAT(p.proposalcode, p.proposalnumber, '-', b.visit_number) as visit, b.beamlinename as bl, b.beamlineoperator as localcontact, h.dewarid, h.dewarstatus,h.storagelocation,TO_CHAR(h.arrivaldate, 'DD-MM-YYYY HH24:MI') as arrival, d.comments FROM dewartransporthistory h INNER JOIN dewar d ON d.dewarid = h.dewarid INNER JOIN shipping s ON d.shippingid = s.shippingid @@ -429,7 +429,7 @@ function _add_history() if (!$this->has_arg('LOCATION')) $this->_error('No location specified'); - $dew = $this->db->pq("SELECT CONCAT(CONCAT(pe.givenname, ' '), pe.familyname) as lcout, pe.emailaddress as lcoutemail, CONCAT(CONCAT(pe2.givenname, ' '), pe2.familyname) as lcret, pe2.emailaddress as lcretemail, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), e.visit_number) as firstexp, TO_CHAR(e.startdate, 'DD-MM-YYYY HH24:MI') as firstexpst, e.beamlinename, e.beamlineoperator, d.dewarid, d.trackingnumberfromsynchrotron, s.shippingid, s.shippingname, p.proposalcode, CONCAT(p.proposalcode, p.proposalnumber) as prop, d.barcode, d.facilitycode, d.firstexperimentid, d.dewarstatus + $dew = $this->db->pq("SELECT CONCAT(pe.givenname, ' ', pe.familyname) as lcout, pe.emailaddress as lcoutemail, CONCAT(CONCAT(pe2.givenname, ' '), pe2.familyname) as lcret, pe2.emailaddress as lcretemail, CONCAT(p.proposalcode, p.proposalnumber, '-', e.visit_number) as firstexp, TO_CHAR(e.startdate, 'DD-MM-YYYY HH24:MI') as firstexpst, e.beamlinename, e.beamlineoperator, d.dewarid, d.trackingnumberfromsynchrotron, s.shippingid, s.shippingname, p.proposalcode, CONCAT(p.proposalcode, p.proposalnumber) as prop, d.barcode, d.facilitycode, d.firstexperimentid, d.dewarstatus FROM dewar d INNER JOIN shipping s ON s.shippingid = d.shippingid LEFT OUTER JOIN labcontact c ON s.sendinglabcontactid = c.labcontactid @@ -792,7 +792,7 @@ function _add_dewar_report() if (!$this->has_arg('FACILITYCODE')) $this->_error('No dewar specified'); - $last_visits = $this->db->pq("SELECT s.beamlineoperator as localcontact, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'YYYY') as year, s.beamlinename + $last_visits = $this->db->pq("SELECT s.beamlineoperator as localcontact, CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'YYYY') as year, s.beamlinename FROM dewar d INNER JOIN blsession s ON d.firstexperimentid = s.sessionid INNER JOIN shipping sh ON sh.shippingid = d.shippingid @@ -1335,7 +1335,7 @@ function _get_dewars() $order = $cols[$this->arg('sort_by')] . ' ' . $dir; } - $dewars = $this->db->paginate("SELECT CONCAT(p.proposalcode, p.proposalnumber) as prop, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), se.visit_number) as firstexperiment, r.labcontactid, se.beamlineoperator as localcontact, se.beamlinename, TO_CHAR(se.startdate, 'HH24:MI DD-MM-YYYY') as firstexperimentst, d.firstexperimentid, s.shippingid, s.shippingname, d.facilitycode, count(c.containerid) as ccount, (case when se.visit_number > 0 then (CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), se.visit_number)) else '' end) as exp, d.code, d.barcode, d.storagelocation, d.dewarstatus, d.dewarid, d.trackingnumbertosynchrotron, d.trackingnumberfromsynchrotron, s.deliveryagent_agentname, d.weight, d.deliveryagent_barcode, GROUP_CONCAT(c.code SEPARATOR ', ') as containers, s.sendinglabcontactid, s.returnlabcontactid + $dewars = $this->db->paginate("SELECT CONCAT(p.proposalcode, p.proposalnumber) as prop, CONCAT(p.proposalcode, p.proposalnumber, '-', se.visit_number) as firstexperiment, r.labcontactid, se.beamlineoperator as localcontact, se.beamlinename, TO_CHAR(se.startdate, 'HH24:MI DD-MM-YYYY') as firstexperimentst, d.firstexperimentid, s.shippingid, s.shippingname, d.facilitycode, count(c.containerid) as ccount, (case when se.visit_number > 0 then (CONCAT(p.proposalcode, p.proposalnumber, '-', se.visit_number)) else '' end) as exp, d.code, d.barcode, d.storagelocation, d.dewarstatus, d.dewarid, d.trackingnumbertosynchrotron, d.trackingnumberfromsynchrotron, s.deliveryagent_agentname, d.weight, d.deliveryagent_barcode, GROUP_CONCAT(c.code SEPARATOR ', ') as containers, s.sendinglabcontactid, s.returnlabcontactid FROM dewar d LEFT OUTER JOIN container c ON c.dewarid = d.dewarid INNER JOIN shipping s ON d.shippingid = s.shippingid @@ -1343,7 +1343,7 @@ function _get_dewars() LEFT OUTER JOIN blsession se ON d.firstexperimentid = se.sessionid LEFT OUTER JOIN dewarregistry r ON r.facilitycode = d.facilitycode WHERE $where - GROUP BY CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), se.visit_number), r.labcontactid, se.beamlineoperator, TO_CHAR(se.startdate, 'HH24:MI DD-MM-YYYY'), (case when se.visit_number > 0 then (CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), se.visit_number)) else '' end),s.shippingid, s.shippingname, d.code, d.barcode, d.storagelocation, d.dewarstatus, d.dewarid, d.trackingnumbertosynchrotron, d.trackingnumberfromsynchrotron, d.facilitycode, d.firstexperimentid + GROUP BY CONCAT(p.proposalcode, p.proposalnumber, '-', se.visit_number), r.labcontactid, se.beamlineoperator, TO_CHAR(se.startdate, 'HH24:MI DD-MM-YYYY'), (case when se.visit_number > 0 then (CONCAT(p.proposalcode, p.proposalnumber, '-', se.visit_number)) else '' end),s.shippingid, s.shippingname, d.code, d.barcode, d.storagelocation, d.dewarstatus, d.dewarid, d.trackingnumbertosynchrotron, d.trackingnumberfromsynchrotron, d.facilitycode, d.firstexperimentid ORDER BY $order", $args); if ($this->has_arg('did')) { @@ -1488,7 +1488,7 @@ function _update_dewar() $sessionId = !empty($experimentId) ? $this->arg('FIRSTEXPERIMENTID') : NULL; $this->db->pq("UPDATE dewar SET $f=:1 WHERE dewarid=:2", array($sessionId, $this->arg('did'))); - $visit = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit + $visit = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid WHERE s.sessionid=:1", array($sessionId)); @@ -1654,7 +1654,7 @@ function _get_all_containers() if ($this->has_arg('visit')) { $join = " INNER JOIN blsession ses2 ON ses2.proposalid = p.proposalid"; $args = array($this->arg('visit')); - $where = "CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), ses2.visit_number) LIKE :1"; + $where = "CONCAT(p.proposalcode, p.proposalnumber, '-', ses2.visit_number) LIKE :1"; } else if ($this->has_arg('all') && $this->staff) { $join = ''; $args = array(); @@ -1812,7 +1812,7 @@ function _get_all_containers() $order = $cols[$this->arg('sort_by')] . ' ' . $dir; } // $this->db->set_debug(True); - $rows = $this->db->paginate("SELECT round(TIMESTAMPDIFF('HOUR', min(ci.bltimestamp), CURRENT_TIMESTAMP)/24,1) as age, case when count(ci2.containerinspectionid) > 1 then 0 else 1 end as allow_adhoc, sch.name as schedule, c.scheduleid, c.screenid, sc.name as screen, c.imagerid, i.temperature as temperature, i.name as imager, TO_CHAR(max(ci.bltimestamp), 'HH24:MI DD-MM-YYYY') as lastinspection, round(TIMESTAMPDIFF('HOUR', max(ci.bltimestamp), CURRENT_TIMESTAMP)/24,1) as lastinspectiondays, count(distinct ci.containerinspectionid) as inspections, CONCAT(p.proposalcode, p.proposalnumber) as prop, c.bltimestamp, c.samplechangerlocation, c.beamlinelocation, d.dewarstatus, c.containertype, c.capacity, c.containerstatus, c.containerid, c.code as name, d.code as dewar, sh.shippingname as shipment, d.dewarid, sh.shippingid, count(distinct s.blsampleid) as samples, cq.containerqueueid, TO_CHAR(cq.createdtimestamp, 'DD-MM-YYYY HH24:MI') as queuedtimestamp, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), ses.visit_number) as visit, ses.beamlinename, c.requestedreturn, c.requestedimagerid, i2.name as requestedimager, c.comments, c.experimenttype, c.storagetemperature, c.barcode, reg.barcode as registry, reg.containerregistryid, + $rows = $this->db->paginate("SELECT round(TIMESTAMPDIFF('HOUR', min(ci.bltimestamp), CURRENT_TIMESTAMP)/24,1) as age, case when count(ci2.containerinspectionid) > 1 then 0 else 1 end as allow_adhoc, sch.name as schedule, c.scheduleid, c.screenid, sc.name as screen, c.imagerid, i.temperature as temperature, i.name as imager, TO_CHAR(max(ci.bltimestamp), 'HH24:MI DD-MM-YYYY') as lastinspection, round(TIMESTAMPDIFF('HOUR', max(ci.bltimestamp), CURRENT_TIMESTAMP)/24,1) as lastinspectiondays, count(distinct ci.containerinspectionid) as inspections, CONCAT(p.proposalcode, p.proposalnumber) as prop, c.bltimestamp, c.samplechangerlocation, c.beamlinelocation, d.dewarstatus, c.containertype, c.capacity, c.containerstatus, c.containerid, c.code as name, d.code as dewar, sh.shippingname as shipment, d.dewarid, sh.shippingid, count(distinct s.blsampleid) as samples, cq.containerqueueid, TO_CHAR(cq.createdtimestamp, 'DD-MM-YYYY HH24:MI') as queuedtimestamp, CONCAT(p.proposalcode, p.proposalnumber, '-', ses.visit_number) as visit, ses.beamlinename, c.requestedreturn, c.requestedimagerid, i2.name as requestedimager, c.comments, c.experimenttype, c.storagetemperature, c.barcode, reg.barcode as registry, reg.containerregistryid, count(distinct ss.blsubsampleid) as subsamples, ses3.beamlinename as firstexperimentbeamline, pp.name as pipeline, @@ -2073,7 +2073,7 @@ function _container_history() array_push($args, $start); array_push($args, $end); - $rows = $this->db->paginate("SELECT h.containerhistoryid, s.shippingid, s.shippingname as shipment, CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), b.visit_number) as visit, b.beamlinename as bl, b.beamlineoperator as localcontact, h.containerid, h.status,h.location,TO_CHAR(h.bltimestamp, 'DD-MM-YYYY HH24:MI') as bltimestamp, h.beamlinename + $rows = $this->db->paginate("SELECT h.containerhistoryid, s.shippingid, s.shippingname as shipment, CONCAT(p.proposalcode, p.proposalnumber, '-', b.visit_number) as visit, b.beamlinename as bl, b.beamlineoperator as localcontact, h.containerid, h.status,h.location,TO_CHAR(h.bltimestamp, 'DD-MM-YYYY HH24:MI') as bltimestamp, h.beamlinename FROM containerhistory h INNER JOIN container c ON c.containerid = h.containerid INNER JOIN dewar d ON d.dewarid = c.dewarid @@ -2379,7 +2379,7 @@ function _add_container_report() if (!$this->has_arg('CONTAINERREGISTRYID')) $this->_error('No container specified'); - $last_visits = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'YYYY') as year, s.beamlinename, s.beamlineoperator as localcontact, pe.emailaddress, r.containerregistryid, r.barcode, CONCAT(p.proposalcode, p.proposalnumber) as prop + $last_visits = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'YYYY') as year, s.beamlinename, s.beamlineoperator as localcontact, pe.emailaddress, r.containerregistryid, r.barcode, CONCAT(p.proposalcode, p.proposalnumber) as prop FROM containerregistry r INNER JOIN container c ON c.containerregistryid = r.containerregistryid LEFT OUTER JOIN person pe ON pe.personid = c.ownerid @@ -2605,7 +2605,7 @@ function _get_default_dewar() if (!$this->has_arg('visit')) $this->_error('No visit specified'); - $sids = $this->db->pq("SELECT s.sessionid FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1 AND p.proposalid=:2", array($this->arg('visit'), $this->proposalid)); + $sids = $this->db->pq("SELECT s.sessionid FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1 AND p.proposalid=:2", array($this->arg('visit'), $this->proposalid)); if (!sizeof($sids)) $this->_error('No such visit'); diff --git a/api/src/Page/Stats.php b/api/src/Page/Stats.php index 89abbb868..652abfd1d 100644 --- a/api/src/Page/Stats.php +++ b/api/src/Page/Stats.php @@ -27,7 +27,7 @@ class Stats extends Page # Whos online list function _online_users() { - $rows = $this->db->pq("SELECT a.username, a.comments, TO_CHAR(a.datetime, 'DD-MM-YYYY HH24:MI:SS') as time, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as name + $rows = $this->db->pq("SELECT a.username, a.comments, TO_CHAR(a.datetime, 'DD-MM-YYYY HH24:MI:SS') as time, CONCAT(p.givenname, ' ', p.familyname) as name FROM adminactivity a LEFT OUTER JOIN person p ON p.login = a.username WHERE TIMESTAMPDIFF('MINUTE', a.datetime, CURRENT_TIMESTAMP) < 15 ORDER BY a.datetime DESC"); @@ -37,7 +37,7 @@ function _online_users() { function _last_actions() { - $rows = $this->db->paginate("SELECT a.username, a.comments, TO_CHAR(a.datetime, 'DD-MM-YYYY HH24:MI:SS') as time, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as name + $rows = $this->db->paginate("SELECT a.username, a.comments, TO_CHAR(a.datetime, 'DD-MM-YYYY HH24:MI:SS') as time, CONCAT(p.givenname, ' ', p.familyname) as name FROM adminactivity a LEFT OUTER JOIN person p ON p.login = a.username WHERE comments LIKE 'ISPyB2%' diff --git a/api/src/Page/Vstat.php b/api/src/Page/Vstat.php index 653353700..64a476873 100644 --- a/api/src/Page/Vstat.php +++ b/api/src/Page/Vstat.php @@ -199,7 +199,7 @@ function _visit_breakdown() $ctf = array(); $missed = array(); - $sched = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI:SS') as en, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI:SS') as st, p.title, s.scheduled, p.proposalcode + $sched = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI:SS') as en, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI:SS') as st, p.title, s.scheduled, p.proposalcode FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid INNER JOIN v_run vr ON s.startdate BETWEEN vr.startdate AND vr.enddate @@ -732,7 +732,7 @@ function _check_visit() $this->_error('No visit specified'); $args = array($this->arg('visit')); - $where = "WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1"; + $where = "WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1"; if (!$this->staff) { if (!$this->has_arg('prop')) diff --git a/api/src/TemplateParser.php b/api/src/TemplateParser.php index bb52ffecf..9d97e2823 100644 --- a/api/src/TemplateParser.php +++ b/api/src/TemplateParser.php @@ -65,7 +65,7 @@ function visit_dir($options) { } if (array_key_exists('VISIT', $options)) { - $where = "WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) LIKE :1"; + $where = "WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) LIKE :1"; array_push($args, $options['VISIT']); } @@ -74,7 +74,7 @@ function visit_dir($options) { array_push($args, $options['DCID']); } - $visit = $this->db->pq("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'YYYY') as year, s.beamlinename, pe.login as pilogin, dc.imagedirectory + $visit = $this->db->pq("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'YYYY') as year, s.beamlinename, pe.login as pilogin, dc.imagedirectory FROM blsession s INNER JOIN proposal p ON p.proposalid = s.proposalid INNER JOIN person pe ON pe.personid = p.personid diff --git a/api/tests/Controllers/AssignControllerTest.php b/api/tests/Controllers/AssignControllerTest.php index dc8852009..8c0426f39 100644 --- a/api/tests/Controllers/AssignControllerTest.php +++ b/api/tests/Controllers/AssignControllerTest.php @@ -160,8 +160,8 @@ public function testGetBeamlineVisitsWithValidConfigReturnsNothing(): void { $response = $this->setUpCommonResponse(); $_SERVER['REMOTE_ADDR'] = 'www.diamond.103.com'; - $this->dbStub->expects($this->exactly(1))->method('pq')->with("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array('i03'))->willReturn(array()); - $this->dbStub->expects($this->exactly(1))->method('paginate')->with("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array('i03', 0, 1))->willReturn(array()); + $this->dbStub->expects($this->exactly(1))->method('pq')->with("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array('i03'))->willReturn(array()); + $this->dbStub->expects($this->exactly(1))->method('paginate')->with("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array('i03', 0, 1))->willReturn(array()); $this->assignController->getBeamlineVisits(); $this->assertEquals('[]', $response->getBody()); @@ -173,8 +173,8 @@ public function testGetBeamlineVisitsWithValidConfigAndVisitReturnsData(): void $response = $this->setUpCommonResponse(); $_SERVER['REMOTE_ADDR'] = 'www.diamond.103.com'; $result = ['VISIT' => $visitId, 'BL' => 'test03']; - $this->dbStub->expects($this->exactly(1))->method('pq')->with("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array('i03'))->willReturn(array($result)); - $this->dbStub->expects($this->exactly(1))->method('paginate')->with("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array('i03', 0, 1))->willReturn(array()); + $this->dbStub->expects($this->exactly(1))->method('pq')->with("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array('i03'))->willReturn(array($result)); + $this->dbStub->expects($this->exactly(1))->method('paginate')->with("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array('i03', 0, 1))->willReturn(array()); $this->assignController->getBeamlineVisits($visitId); $this->assertEquals('{"VISIT":123,"BL":"test03"}', $response->getBody()); @@ -185,8 +185,8 @@ public function testGetBeamlineVisitsWithValidConfigAndInvalidVisitReturnsError( $visitId = 123; $_SERVER['REMOTE_ADDR'] = 'www.diamond.103.com'; $result = ['VISIT' => 1230, 'BL' => 'test03']; - $this->dbStub->expects($this->exactly(1))->method('pq')->with("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array('i03'))->willReturn(array($result)); - $this->dbStub->expects($this->exactly(1))->method('paginate')->with("SELECT CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array('i03', 0, 1))->willReturn(array()); + $this->dbStub->expects($this->exactly(1))->method('pq')->with("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE TIMESTAMPDIFF('DAY', s.startdate, CURRENT_TIMESTAMP) < 1 AND TIMESTAMPDIFF('DAY', CURRENT_TIMESTAMP, s.enddate) < 2 AND s.beamlinename LIKE :1 ORDER BY s.startdate", array('i03'))->willReturn(array($result)); + $this->dbStub->expects($this->exactly(1))->method('paginate')->with("SELECT CONCAT(p.proposalcode, p.proposalnumber, '-', s.visit_number) as visit, TO_CHAR(s.startdate, 'DD-MM-YYYY HH24:MI') as st, TO_CHAR(s.enddate, 'DD-MM-YYYY HH24:MI') as en,s.beamlinename as bl FROM blsession s INNER JOIN proposal p ON (p.proposalid = s.proposalid) WHERE p.proposalcode LIKE 'cm' AND s.beamlinename LIKE :1 AND s.enddate <= CURRENT_TIMESTAMP ORDER BY s.startdate DESC", array('i03', 0, 1))->willReturn(array()); $this->slimStub->shouldReceive('halt')->times(1)->with(400, '{"status":400,"message":"No such visit"}')->andThrow(new \Exception); $this->expectException(\Exception::class); @@ -287,4 +287,4 @@ public function testGetPuckNamesWithPropAndValidBlArrayForStaffMemberReturnsReal $this->assignController->getPuckNames(); $this->assertEquals('[{"id":1,"name":11},{"id":12,"name":1231}]', $response->getBody()); } -} \ No newline at end of file +} diff --git a/api/tests/Model/Services/AssignDataTest.php b/api/tests/Model/Services/AssignDataTest.php index c007cb63c..064a69d87 100644 --- a/api/tests/Model/Services/AssignDataTest.php +++ b/api/tests/Model/Services/AssignDataTest.php @@ -47,7 +47,7 @@ protected function setUp(): void public function testGetContainerCreatesCorrectSql(): void { $this->assignData->getContainer('testVisitId', 'testContainerId'); - $this->assertEquals("SELECT d.dewarid,bl.beamlinename,c.containerid,c.code FROM Container c INNER JOIN Dewar d ON d.dewarid = c.dewarid INNER JOIN Shipping s ON s.shippingid = d.shippingid INNER JOIN BLSession bl ON bl.proposalid = s.proposalid INNER JOIN Proposal p ON s.proposalid = p.proposalid WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), bl.visit_number) LIKE 'testVisitId' AND c.containerid='testContainerId'", $this->db->getLastQuery()); + $this->assertEquals("SELECT d.dewarid,bl.beamlinename,c.containerid,c.code FROM Container c INNER JOIN Dewar d ON d.dewarid = c.dewarid INNER JOIN Shipping s ON s.shippingid = d.shippingid INNER JOIN BLSession bl ON bl.proposalid = s.proposalid INNER JOIN Proposal p ON s.proposalid = p.proposalid WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) LIKE 'testVisitId' AND c.containerid='testContainerId'", $this->db->getLastQuery()); } public function testAssignContainerCreatesCorrectSql(): void @@ -85,7 +85,7 @@ public function testUpdateContainerHistoryCreatesCorrectSql(): void public function testGetDewarWithVisitDataCreatesCorrectSql(): void { $this->assignData->getDewar('testDewarId', 'testProposalId', 'testVisitId'); - $this->assertEquals("SELECT d.dewarid FROM Dewar d INNER JOIN Shipping s ON s.shippingid = d.shippingid INNER JOIN BLSession bl ON bl.proposalid = s.proposalid INNER JOIN Proposal p ON s.proposalid = p.proposalid WHERE CONCAT(CONCAT(CONCAT(p.proposalcode, p.proposalnumber), '-'), bl.visit_number) LIKE 'testVisitId' AND d.dewarid='testDewarId'", $this->db->getLastQuery()); + $this->assertEquals("SELECT d.dewarid FROM Dewar d INNER JOIN Shipping s ON s.shippingid = d.shippingid INNER JOIN BLSession bl ON bl.proposalid = s.proposalid INNER JOIN Proposal p ON s.proposalid = p.proposalid WHERE CONCAT(p.proposalcode, p.proposalnumber, '-', bl.visit_number) LIKE 'testVisitId' AND d.dewarid='testDewarId'", $this->db->getLastQuery()); } public function testGetDewarWithNoVisitDataCreatesCorrectSql(): void diff --git a/api/tests/Model/Services/UserDataSingleInvocationTest.php b/api/tests/Model/Services/UserDataSingleInvocationTest.php index 0b0200408..d1add87da 100644 --- a/api/tests/Model/Services/UserDataSingleInvocationTest.php +++ b/api/tests/Model/Services/UserDataSingleInvocationTest.php @@ -134,7 +134,7 @@ public function testGetUsersCountWithDefaults(): void public function testGetUsersWithDefaults(): void { $res = $this->userData->getUsers(false, true, 's', 3); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.familyname,p.givenname LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.familyname,p.givenname LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -148,14 +148,14 @@ public function testGetUsersCountWithInvalidSortBy(): void public function testGetUsersWithValidSortBy(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN'); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } public function testGetUsersWithInvalidSortBy(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'blah'); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.familyname,p.givenname LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.familyname,p.givenname LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -169,7 +169,7 @@ public function testGetUsersCountWithValidSortBy(): void public function testGetUsersWithValidSortBypID(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=null) AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=null) AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -183,7 +183,7 @@ public function testGetUsersCountWithValidSortByPid(): void public function testGetUsersWithValidSortBypIDPersonId(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5, 6); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=null) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=null) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -197,7 +197,7 @@ public function testGetUsersCountWithValidSortByPidPersonId(): void public function testGetUsersWithValidSortBypIDPersonIdIsManager(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5, 6, true); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=null) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=null) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -211,7 +211,7 @@ public function testGetUsersCountWithValidSortByPidPersonIdIsManager(): void public function testGetUsersWithValidSortBypIDPersonIdIsManagerCurrentUserId(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5, 6, true, 7); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -225,7 +225,7 @@ public function testGetUsersCountWithValidSortByPidPersonIdIsManagerCurrentUserI public function testGetUsersWithValidSortBypIDPersonIdIsManagerCurrentUserIdGid(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5, 6, true, 7, 8); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN UserGroup_has_Person uhp ON uhp.personid = p.personid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND uhp.usergroupid=8 GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN UserGroup_has_Person uhp ON uhp.personid = p.personid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND uhp.usergroupid=8 GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -239,7 +239,7 @@ public function testGetUsersCountWithValidSortByPidPersonIdIsManagerCurrentUserI public function testGetUsersWithValidSortBypIDPersonIdIsManagerCurrentUserIdSid(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5, 6, true, 7, null, 9); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN blsession_has_person shp ON shp.personid = p.personid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND shp.sessionid=9 GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN blsession_has_person shp ON shp.personid = p.personid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND shp.sessionid=9 GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -253,7 +253,7 @@ public function testGetUsersCountWithValidSortByPidPersonIdIsManagerCurrentUserI public function testGetUsersWithValidSortBypIDPersonIdIsManagerCurrentUserIdPjid(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5, 6, true, 7, null, null, 10); - $this->assertEquals("SELECT CONCAT(CONCAT(p.personid, '-'), php.projectid) as ppid, p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN Project_has_Person php ON p.personid = php.personid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND php.projectid=10 GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT CONCAT(p.personid, '-', php.projectid) as ppid, p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN Project_has_Person php ON p.personid = php.personid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND php.projectid=10 GROUP BY p.personid ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -267,21 +267,21 @@ public function testGetUsersCountWithValidSortByPidPersonIdIsManagerCurrentUserI public function testGetUsersWithValidSortBypIDPersonIdIsManagerCurrentUserIdVisitname(): void { $res = $this->userData->getUsers(false, true, 's', 3, 'LOGIN', 5, 5, 6, true, 7, null, null, null, 'visit1'); - $this->assertEquals("SELECT count(ses.sessionid) as visits, DATE_FORMAT(max(ses.startdate), '%d-%m-%Y') as last, shp.remote, shp.role, p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN Session_has_Person shp ON shp.personid = p.personid INNER JOIN BLSession s ON shp.sessionid = s.sessionid INNER JOIN Proposal pr ON pr.proposalid = s.proposalid LEFT OUTER JOIN Session_has_Person shp2 ON p.personid = shp2.personid LEFT OUTER JOIN BLSession ses ON ses.sessionid = shp2.sessionid AND ses.startdate < s.startdate WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND shp.remote IS NOT NULL AND CONCAT(CONCAT(CONCAT(pr.proposalcode,pr.proposalnumber), '-'), s.visit_number) LIKE 'visit1' GROUP BY p.personid, p.givenname, p.familyname, p.login ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); + $this->assertEquals("SELECT count(ses.sessionid) as visits, DATE_FORMAT(max(ses.startdate), '%d-%m-%Y') as last, shp.remote, shp.role, p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid INNER JOIN Session_has_Person shp ON shp.personid = p.personid INNER JOIN BLSession s ON shp.sessionid = s.sessionid INNER JOIN Proposal pr ON pr.proposalid = s.proposalid LEFT OUTER JOIN Session_has_Person shp2 ON p.personid = shp2.personid LEFT OUTER JOIN BLSession ses ON ses.sessionid = shp2.sessionid AND ses.startdate < s.startdate WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND shp.remote IS NOT NULL AND CONCAT(pr.proposalcode, pr.proposalnumber, '-', s.visit_number) LIKE 'visit1' GROUP BY p.personid, p.givenname, p.familyname, p.login ORDER BY p.login ASC LIMIT 30,15", $this->db->getLastQuery()); $this->assertEmpty($res); } public function testGetUsersCountWithValidSortByPidPersonIdIsManagerCurrentUserIdVisitname(): void { $res = $this->userData->getUsers(true, true, 's', 3, 'LOGIN', 5, 5, 6, true, 7, null, null, null, 'visit1'); - $this->assertEquals("SELECT count(distinct p.personid) as tot FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid INNER JOIN Session_has_Person shp ON shp.personid = p.personid INNER JOIN BLSession s ON shp.sessionid = s.sessionid INNER JOIN Proposal pr ON pr.proposalid = s.proposalid LEFT OUTER JOIN Session_has_Person shp2 ON p.personid = shp2.personid LEFT OUTER JOIN BLSession ses ON ses.sessionid = shp2.sessionid AND ses.startdate < s.startdate WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND shp.remote IS NOT NULL AND CONCAT(CONCAT(CONCAT(pr.proposalcode,pr.proposalnumber), '-'), s.visit_number) LIKE 'visit1'", $this->db->getLastQuery()); + $this->assertEquals("SELECT count(distinct p.personid) as tot FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid INNER JOIN Session_has_Person shp ON shp.personid = p.personid INNER JOIN BLSession s ON shp.sessionid = s.sessionid INNER JOIN Proposal pr ON pr.proposalid = s.proposalid LEFT OUTER JOIN Session_has_Person shp2 ON p.personid = shp2.personid LEFT OUTER JOIN BLSession ses ON ses.sessionid = shp2.sessionid AND ses.startdate < s.startdate WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) AND shp.remote IS NOT NULL AND CONCAT(pr.proposalcode, pr.proposalnumber, '-', s.visit_number) LIKE 'visit1'", $this->db->getLastQuery()); $this->assertEmpty($res); } public function testGetUsersWithValidSortBypIDPersonIdIsManagerCurrentUserIdPerPage(): void { $res = $this->userData->getUsers(false, true, 's', 1, 'LOGIN', 5, 5, 6, true, 7, null, null, null, null, 3); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 0,3", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE 1=1 AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login ASC LIMIT 0,3", $this->db->getLastQuery()); $this->assertEmpty($res); } @@ -302,7 +302,7 @@ public function testGetUsersCountWithValidSortByPidPersonIdIsManagerCurrentUserI public function testGetUsersWithValidSortBypIDPersonIdIsManagerCurrentUserIdPerPageDirAndIsOnlyLogin(): void { $res = $this->userData->getUsers(false, true, 's', 1, 'LOGIN', 5, 5, 6, true, 7, null, null, null, null, 3, false, false, true); - $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(CONCAT(p.givenname, ' '), p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login DESC LIMIT 0,3", $this->db->getLastQuery()); + $this->assertEquals("SELECT p.personid, p.givenname, p.familyname, CONCAT(p.givenname, ' ', p.familyname) as fullname, p.login, p.emailaddress, p.phonenumber, l.name as labname, l.address, l.city, '' as postcode, l.country FROM Person p LEFT OUTER JOIN ProposalHasPerson prhp ON prhp.personid = p.personid LEFT OUTER JOIN LabContact lc ON lc.personid = p.personid LEFT OUTER JOIN Laboratory l ON l.laboratoryid = p.laboratoryid WHERE p.login IS NOT NULL AND (prhp.proposalid=5 OR lc.proposalid=5 OR p.personid=7) AND p.personid=6 AND (lower(p.familyname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.givenname) LIKE lower(CONCAT(CONCAT('%','s'),'%')) OR lower(p.login) LIKE lower(CONCAT(CONCAT('%','s'),'%'))) GROUP BY p.personid ORDER BY p.login DESC LIMIT 0,3", $this->db->getLastQuery()); $this->assertEmpty($res); }