database:procedures:pears_netownercontactsearch



pears.NetOwnerContactSearch

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

CREATE PROCEDURE "pears"."NetOwnerContactSearch"( IN "pWebUserID" CHAR(20),IN "SearchValue" CHAR(20) DEFAULT '%',IN "SearchState" CHAR(5) DEFAULT NULL,IN "pSlice" INTEGER DEFAULT 1,IN "pSliceSize" INTEGER DEFAULT 20 ) 
RESULT( "EmploymentID" CHAR(20),"Name" CHAR(61),"CompanyName" CHAR(100),"address" CHAR(60),"Jobtitle" CHAR(50),"status" CHAR(50),"Alert" CHAR(255),"IsFavourite" INTEGER ) 
// IQXWeb
BEGIN
  DECLARE "x" INTEGER;
  DECLARE "y" INTEGER;
  DECLARE "pStaffID" CHAR(20);
  SET "pStaffID" = (SELECT FIRST "StaffID" FROM "iqxnetuser" WHERE "iqxnetuser"."iqxnetuserid" = "pWebUserID");
  SET "x" = "pSliceSize";
  SET "y" = "x"*"pSlice"+1;
  SET "SearchValue" = "trim"("replace"("isnull"("SearchValue",''),'*',''));
  IF "trim"("isnull"("SearchState",'')) = '' THEN
    SET "SearchState" = '%'
  END IF;
  SELECT top "x" START at "y"
    "e"."employmentid" AS "EmploymentID",
    "p"."forenames"+' '+"p"."surname" AS "Name",
    "c"."name" AS "CompanyName",
    "c"."town" AS "address",
    "e"."position" AS "JobTitle",
    "companystatus"."name" AS "status",
    "c"."alert" AS "Alert",
    IF(SELECT "count"() FROM "favourites" WHERE "ID" = "e"."employmentid" AND "Staffid" = "pStaffID") > 0 THEN 1 ELSE 0 endif AS "IsFavourite"
    FROM "person" AS "p" KEY JOIN "employment" AS "e" KEY JOIN "company" AS "c" KEY LEFT OUTER JOIN "companystatus"
    WHERE "isnull"("c"."divisionid",'') = any(SELECT "DivisionID" FROM "DashboardStaffDivisions"())
    AND "c"."status" LIKE "SearchState"
    AND "p"."status" = 'L'
    AND "SearchValue" <> ''
    AND "p"."keyname" LIKE "SearchValue"+'%'
    ORDER BY "p"."KeyName" ASC
END /* DOC
2016-09-19 PC alter routine to allow search, and paging
2017-04-10 PC alter to allow all categories
2018-05-16 GJ Updated to use MHS function to obey divisions & tidied up test
 
inputs:
pWebUserID
SearchValue
SearchState
pSlice
pSliceSize
 
outputs:
EmploymentID
Name
CompanyName
address
Jobtitle
status
Alert
IsFavourite
 
tests:
null pWebUserID
invalid pWebUserID
null SearchValue and pSearchState
create test category
null SearchValue and test pSearchState
incorrect SearchValue and test pSearchState
create three test divisions
check default division 
check assigned divisions
check all divisions
check isFavourite
 
*/
/* TEST
call NetTestSetup('');
update company set divisionid=null where companyid='test';
update person set keyname='testxxxyyyzzz',status='L' where personid='test';
update staff set divisionid=null,DivisionAccess=0 where staffid='TEST';
delete from divisionaccess where staffid='TEST';
delete from favourites where staffid='TEST';
select * from "NetOwnerContactSearch"( null,null,null,0, 20);
expect EOF;
select * from "NetOwnerContactSearch"( 'z99',null,null,0, 20);
expect EOF;
update staff set divisionid='Test',DivisionAccess=0 where staffid='TEST';
select * from "NetOwnerContactSearch"( 'test.owner',null,null,0, 20);
expect EOF;
update company set divisionid='Test' where companyid='test';
select * from "NetOwnerContactSearch"( 'test.owner',null,null,0, 20);
expect EOF;
select * from "NetOwnerContactSearch"( 'test.owner','testxxxyyyzzz',null,0, 20);
expect EmploymentID=TEST,IsFavourite=0;
insert into favourites (favouritesid, parent, id, staffid, description, type) on existing update defaults off values ('TEST',null,'TEST','TEST','Test Fav','C');
select * from "NetOwnerContactSearch"( 'test.owner','testxxxyyyzzz',null,0, 20);
expect EmploymentID=TEST,IsFavourite=1;
*/
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetOwnerContactSearch" IS 
{CREATE PROCEDURE pears."NetOwnerContactSearch"( IN "pWebUserID" CHAR(20),IN "SearchValue" CHAR(20) DEFAULT '%',IN SearchState CHAR(5) DEFAULT NULL,IN pSlice INTEGER DEFAULT 1, IN pSliceSize INTEGER DEFAULT 20 ) 
RESULT( "EmploymentID" CHAR(20),"Name" CHAR(61),"CompanyName" CHAR(100),address CHAR(60),Jobtitle CHAR(50),"status" CHAR(50),Alert CHAR(255),"IsFavourite" INTEGER ) 
// IQXWeb
BEGIN
DECLARE x INTEGER;
DECLARE y INTEGER;
DECLARE pStaffID CHAR(20);
 
SET pStaffID = (SELECT FIRST StaffID FROM iqxnetuser WHERE iqxnetuser.iqxnetuserid = pWebUserID);
SET x=pSliceSize;
SET y=x*pSlice+1;
SET SearchValue = TRIM(REPLACE(isnull(SearchValue,''),'*',''));
 
IF TRIM(isnull(SearchState,''))='' THEN
  SET SearchState='%';
END IF;
 
SELECT top x START at y
  e.employmentid AS EmploymentID,
  p.forenames + ' ' + p.surname AS Name,
  c.name AS CompanyName,
  c.town AS address,
  e.position AS JobTitle,
  companystatus.name AS STATUS,
  c.alert AS Alert,
  IF (SELECT COUNT(*) FROM favourites WHERE ID=e.employmentid AND Staffid=pStaffID) >0 THEN 1 ELSE 0 endif AS IsFavourite
  FROM person p KEY JOIN employment e KEY JOIN company c KEY LEFT OUTER JOIN companystatus 
  WHERE 
    isnull(c.divisionid,'') IN (SELECT DivisionID FROM DashboardStaffDivisions())
    AND c.status LIKE SearchState
    AND p.status = 'L'
    AND SearchValue <> ''
    AND p.keyname LIKE SearchValue+'%'
  ORDER BY p.KeyName ASC
END
 
/* DOC
2016-09-19 PC alter routine to allow search, and paging
2017-04-10 PC alter to allow all categories
2018-05-16 GJ Updated to use MHS function to obey divisions & tidied up test
 
inputs:
    pWebUserID
    SearchValue
    SearchState
    pSlice
    pSliceSize
 
outputs:
    EmploymentID
    Name
    CompanyName
    address
    Jobtitle
    status
    Alert
    IsFavourite
 
tests:
    null pWebUserID
    invalid pWebUserID
    null SearchValue and pSearchState
    create test category
    null SearchValue and test pSearchState
    incorrect SearchValue and test pSearchState
    create three test divisions
    check default division 
    check assigned divisions
    check all divisions
    check isFavourite
 
*/
 
/* TEST
call NetTestSetup('');
update company set divisionid=null where companyid='test';
update person set keyname='testxxxyyyzzz',status='L' where personid='test';
update staff set divisionid=null,DivisionAccess=0 where staffid='TEST';
delete from divisionaccess where staffid='TEST';
delete from favourites where staffid='TEST';
select * from "NetOwnerContactSearch"( null,null,null,0, 20);
expect EOF;
select * from "NetOwnerContactSearch"( 'z99',null,null,0, 20);
expect EOF;
update staff set divisionid='Test',DivisionAccess=0 where staffid='TEST';
select * from "NetOwnerContactSearch"( 'test.owner',null,null,0, 20);
expect EOF;
update company set divisionid='Test' where companyid='test';
select * from "NetOwnerContactSearch"( 'test.owner',null,null,0, 20);
expect EOF;
select * from "NetOwnerContactSearch"( 'test.owner','testxxxyyyzzz',null,0, 20);
expect EmploymentID=TEST,IsFavourite=0;
insert into favourites (favouritesid, parent, id, staffid, description, type) on existing update defaults off values ('TEST',null,'TEST','TEST','Test Fav','C');
select * from "NetOwnerContactSearch"( 'test.owner','testxxxyyyzzz',null,0, 20);
expect EmploymentID=TEST,IsFavourite=1;
*/
}
  • database/procedures/pears_netownercontactsearch.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1