====== pears.NetClientVacanciesShortlistAction ======
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
===== Original SQL =====
create procedure "pears"."NetClientVacanciesShortlistAction"( in "pWebUserID" char(20),in "pVacancyID" char(20),in "pPersonID" char(20),in "pStatusReasonID" char(20),in "pRejectionReasonID" char(20) default null )
result( "pResult" char(250) )
// IQXNet
begin
declare "pProgressID" char(20);
declare "RejectionReasonText" char(100);
declare "pStaffID" char(20);
declare "pVacID" char(20);
if "isnull"("pVacancyID",'') = '' then
select '99:~Please check Vacancy';
return
end if;
if "isnull"("pPersonID",'') = '' then
select '98:~Please check Person';
return
end if;
if "isnull"("pStatusReasonID",'') = '' then
select '97:~Please check Status ';
return
end if;
if not "pWebUserID" = any(select "isnull"((select "iqxnetuserid" from "iqxnetuserlink" key join "employment" key join "vacancy" where "vacancyid" = "pVacancyID"),(select "iqxnetuserid" from "iqxnetuserlink" key join "employment" key join "vacancy" key join "tempshiftplan" where "tempshiftplanid" = "pVacancyID"))) then
select '96:~Please check Vacancy';
return
end if;
set "pVacID" = "isnull"((select "vacancyid" from "tempshiftplan" where "tempshiftplanid" = "pVacancyID"),"pVacancyID");
if "isnull"("pVacID",'') = '' then
select '95:~Please check Vacancy';
return
end if;
if "isnull"("pRejectionReasonID",'') <> '' then
set "RejectionReasonText" = (select top 1 "reason" from "rejectionreason" where "rejectreasonid" = "pRejectionReasonID")
end if;
set "pStaffID" = (select top 1 "staffid" from "vacancy" where "vacancyid" = "pVacID");
set "pProgressID" = (select top 1 "progressid" from "progress" where "vacancyid" = "pVacID" and "personid" = "pPersonID");
if "isnull"("pProgressID",'') <> '' then
update "progress" set "status" = "pStatusReasonID","rejectionreason" = "RejectionReasonText" where "progressid" = "pProgressID"
else
insert into "progress"( "ProgressID","VacancyID","status","rejectionreason","staffid","personid" ) values( "uniquekey"("pVacancyID"),"pVacID","pStatusReasonID","RejectionReasonText","pStaffID","pPersonID" )
end if;
select '0:~Success'
end /* DOC
2016-12-12 PC Create routine to set status for progress
2018-08-22 PC improve error handling
Tests:
invalid pWebUserID
valid pWebUserID, invalid pVacancyID
valid pWebUserID,pVacancyID, invalid pPersonID
valid pWebUserID,pVacancyID,pPersonID, invalid pStatusReasonID
valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID as insert
valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID, invalid pVacancyID
valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID invalid pRejectionReasonID as update
valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID, pRejectionReasonID
*/
/* TEST
call NetTestSetup('');
update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.client','test.agency','test.candidate','test.owner');
update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.client';
insert into status (type,status,name,help) on existing update values ('R','~','test','test');
insert into rejectionreason on existing update values ('TEST','test',0);
insert into rejectionreason on existing update values ('TEST2','test2',1);
update vacancy set staffid='TEST' where vacancyid='TEST';
select * from NetClientVacanciesShortlistAction(null,null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client',null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client','TEST',null,null,null);
expect 98*;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST',null,null);
expect 97*;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~',null);
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST');
expect 0*;
update progress set rejectionreason='test' where vacancyid='test';
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST2');
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test2;
update vacancy set staffid=null where vacancyid='TEST';
*/
go
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetClientVacanciesShortlistAction" IS
{create PROCEDURE pears."NetClientVacanciesShortlistAction"( in "pWebUserID" char(20),in "pVacancyID" char(20), in pPersonID char(20), in "pStatusReasonID" char(20), in pRejectionReasonID char(20) default null)
result( "pResult" char(250) )
// IQXNet
BEGIN
declare pProgressID char(20);
declare RejectionReasonText char(100);
declare pStaffID char(20);
declare pVacID char(20);
if isnull(pVacancyID,'')='' then
select '99:~Please check Vacancy';
return;
end if;
if isnull(pPersonID,'')='' then
select '98:~Please check Person';
return;
end if;
if isnull(pStatusReasonID,'')='' then
select '97:~Please check Status ';
return;
end if;
if pWebUserID not in (select isnull((select iqxnetuserid from iqxnetuserlink key join employment key join vacancy where vacancyid=pVacancyID),(select iqxnetuserid from iqxnetuserlink key join employment key join vacancy key join tempshiftplan where tempshiftplanid=pVacancyID))) then
select '96:~Please check Vacancy';
return;
end if;
set pVacID=isnull((select vacancyid from tempshiftplan where tempshiftplanid=pVacancyID),pVacancyID);
if isnull(pVacID,'')='' then
select '95:~Please check Vacancy';
return;
end if;
if isnull(pRejectionReasonID,'') !='' then
set RejectionReasonText = (select top 1 reason from rejectionreason where rejectreasonid=pRejectionReasonID);
end if;
set pStaffID=(select top 1 staffid from vacancy where vacancyid=pVacID);
set pProgressID=(select top 1 progressid from progress where vacancyid=pVacID and personid=pPersonID);
if isnull (pProgressID,'') != '' then
update progress set status=pStatusReasonID,rejectionreason=RejectionReasonText where progressid=pProgressID;
else
insert into progress (ProgressID,VacancyID,status,rejectionreason,staffid,personid) values (uniquekey(pVacancyID),pVacID,pStatusReasonID,RejectionReasonText,pStaffID,pPersonID);
end if;
select '0:~Success';
END
/* DOC
2016-12-12 PC Create routine to set status for progress
2018-08-22 PC improve error handling
Tests:
invalid pWebUserID
valid pWebUserID, invalid pVacancyID
valid pWebUserID,pVacancyID, invalid pPersonID
valid pWebUserID,pVacancyID,pPersonID, invalid pStatusReasonID
valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID as insert
valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID, invalid pVacancyID
valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID invalid pRejectionReasonID as update
valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID, pRejectionReasonID
*/
/* TEST
call NetTestSetup('');
update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.client','test.agency','test.candidate','test.owner');
update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.client';
insert into status (type,status,name,help) on existing update values ('R','~','test','test');
insert into rejectionreason on existing update values ('TEST','test',0);
insert into rejectionreason on existing update values ('TEST2','test2',1);
update vacancy set staffid='TEST' where vacancyid='TEST';
select * from NetClientVacanciesShortlistAction(null,null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client',null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client','TEST',null,null,null);
expect 98*;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST',null,null);
expect 97*;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~',null);
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST');
expect 0*;
update progress set rejectionreason='test' where vacancyid='test';
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST2');
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test2;
update vacancy set staffid=null where vacancyid='TEST';
*/
}