| Current Path : /var/www/cesa.co.za/php/ |
| Current File : /var/www/cesa.co.za/php/adecquestionnaire.php |
<?php
//ini_set('display_errors', 1);
//error_reporting(E_ALL);
// var_dump($_POST);
// exit;
if (strpos($_SERVER['HTTP_HOST'], 'devstage.co.za') > 0) {
$declarationLink = "/php/adecquestionnaire.php";
$declarationLandingPage = "/php/annualdeclaration.php";
} else {
$declarationLink = "/management-system-declarations/";
$declarationLandingPage = "/cesa-annual-declaration/";
}
function UniqueFilename($sDir, $sFilename, $sFilenamePrefix = "")
{
global $conn;
$ext = pathinfo($sFilename, PATHINFO_EXTENSION);
$fname = pathinfo($sFilename, PATHINFO_FILENAME);
$i = 1;
$sNewFilename = "";
if (!empty($_SESSION["ProviderID"]))
$sNewFilename = $_SESSION["ProviderID"];
if (!empty($sFilenamePrefix)) {
$sNewFilename .= str_replace(array("'", '"', ",", '#', " "), "_", $sFilenamePrefix);
} else {
$sNewFilename .= str_replace(array("'", '"', ",", '#'), "_", $fname);
}
$sFinalFilename = $sNewFilename;
while (file_exists($sDir . $sNewFilename . "." . $ext)) {
$sNewFilename = $sFinalFilename . "_" . $i;
$i++;
}
return $sDir . $sNewFilename . "." . $ext;
}
$sessid = session_id();
if (empty($sessid)) {
session_start();
$sessid = session_id();
}
include($_SERVER['DOCUMENT_ROOT'] . "/members/inc/auth.inc");
include($_SERVER['DOCUMENT_ROOT'] . "/php/includes/sqlFunctions.php");
include($_SERVER['DOCUMENT_ROOT'] . "/php/includes/ADQAnswers.php");
include($_SERVER['DOCUMENT_ROOT'] . "/php/includes/ADQFirms.php");
$conni = mysqli_connect($server, $user, $pass, $db);
$QID = intval($_REQUEST["QID"]);
$arrDateQs = array(4, 5, 6, 29, 30, 31, 77, 78, 79);
$arrFileQs = array(71, 73, 91);
if (!isset($MemberFirmID)) {
if (isset($_REQUEST['FirmID']) && !empty($_REQUEST['FirmID'])) {
$MemberFirmID = intval($_REQUEST['FirmID']);
} elseif (isset($_SESSION["CID"]) && !empty($_SESSION["CID"])) {
$sql = "SELECT DISTINCT tblMemberFirms.FirmID
FROM OfficeContacts, tblMemberFirmOffices, tblMemberFirms
WHERE OfficeContacts.ContactsID=" . intval($_SESSION["CID"]) . "
AND OfficeContacts.OfficeID=tblMemberFirmOffices.OfficeID
AND tblMemberFirmOffices.FirmID=tblMemberFirms.FirmID";
$recFirmID = mysqli_query($conni, $sql);
if ($rowFirmID = mysqli_fetch_assoc($recFirmID)) {
$MemberFirmID = $rowFirmID["FirmID"];
} else {
die("Not authorised");
}
} else {
die("Not authorised");
}
}
$bShowQues = true;
$bShowForm = false;
$bShowScore = false;
$bShowReturn = false;
$bCompleted = false;
$errs = array();
$nowDate = new DateTime();
$auditYear = $nowDate->format('Y');
$adqAnswers = new ADQAnswers($sqlf);
$adqFirms = new ADQFirms($sqlf);
$adqFirm = $adqFirms->checkCreate($MemberFirmID, $QID, $auditYear);
$adqAnswers->testAndCopy($adqFirm['ADQFirmID'], $MemberFirmID, $QID, $auditYear);
if (isset($_GET['year']) && $_GET['year'] > 0) {
$auditYear = $_GET['year'];
}
if (isset($_REQUEST["do"])) {
$bShowQues = false;
if ($_REQUEST["do"] == 1) {
// Save initial question, show form
$sql = "SELECT * FROM ADQFirms WHERE ADQID=" . intval($_REQUEST["QID"]) . " AND FirmID=" . intval($_REQUEST["FirmID"]) . " AND AuditYear = " . $auditYear;
$recADQFirmID = mysqli_query($conni, $sql);
if ($rowADQFirmID = mysqli_fetch_assoc($recADQFirmID)) {
$iQFirmID = $rowADQFirmID["ADQFirmID"];
if (empty($rowADQFirmID["DateStarted"])) {
$sql = "UPDATE ADQFirms SET DateStarted=NOW() WHERE ADQID=" . intval($_REQUEST["QID"]) . " AND FirmID=" . intval($_REQUEST["FirmID"]) . " AND AuditYear = " . $auditYear;
mysqli_query($conni, $sql);
}
} else {
$sql = "INSERT INTO ADQFirms (ADQID, FirmID, DateStarted, AuditYear) VALUES (" . intval($_REQUEST["QID"]) . ", " . intval($_REQUEST["FirmID"]) . ", NOW(), " . $auditYear . ")";
mysqli_query($conni, $sql);
$iQFirmID = mysqli_insert_id($conni);
}
foreach ($_POST as $key => $val) {
if (strpos($key, "Ques") === 0) {
$sql = "REPLACE INTO ADQAnswers (ADQFirmID, ADQuestionID, Answer, AuditYear) VALUES (" . $iQFirmID . ", " . str_replace("Ques", "", $key) . ", '" . addslashes($val) . "', $auditYear)";
mysqli_query($conni, $sql);
}
}
$bShowForm = true;
} else {
// Save full questionnaire
$iQFirmID = $_POST["QFirmID"];
// Check for errors
$errs = array();
if ($_POST["do"] == 2) {
foreach ($_POST as $key => $val) {
if (strpos($key, "Ques") === 0) {
if (($val == "Yes") && empty($_POST["Evidence" . str_replace("Ques", "", $key)])) {
$sql = "SELECT QuestionNum FROM ADQuestions WHERE ADQuestionID=" . str_replace("Ques", "", $key);
$recQuesNum = mysqli_query($conni, $sql);
if ($rowQuesNum = mysqli_fetch_assoc($recQuesNum))
$errs[] = "Please provide requirements for question " . $rowQuesNum["QuestionNum"];
}
if (($val == "NA") && empty($_POST["Justification" . str_replace("Ques", "", $key)])) {
$sql = "SELECT QuestionNum
FROM ADQuestions WHERE ADQuestionID=" . str_replace("Ques", "", $key);
$recQuesNum = mysqli_query($conni, $sql);
if ($rowQuesNum = mysqli_fetch_assoc($recQuesNum))
$errs[] = "Please provide justification for question " . $rowQuesNum["QuestionNum"];
}
}
}
}
if (count($errs) > 0) {
$bShowForm = true;
} else {
// Insert answers
$iScore = 0;
$iMaxScore = 0;
$iPerc = 0;
foreach ($_POST as $key => $val) {
if (strpos($key, "Ques") === 0) {
$sql = "REPLACE INTO ADQAnswers (ADQFirmID, ADQuestionID, Answer, Evidence, Justification) VALUES (" . $_POST["QFirmID"] . ", " . str_replace("Ques", "", $key) . ", '" . addslashes($val) . "', '" . addslashes($_POST[str_replace("Ques", "Evidence", $key)]) . "', '" . addslashes($_POST[str_replace("Ques", "Justification", $key)]) . "')";
mysqli_query($conni, $sql);
if ($val == "Yes")
$iScore++;
if (($val == "Yes") || ($val == "No"))
$iMaxScore++;
}
}
foreach ($arrFileQs as $val) {
$target_dir = $_SERVER['DOCUMENT_ROOT'] . "/echasl23/uploads/";
if (isset($_FILES["Ques" . $val])) {
$sFile = "";
$target_file = UniqueFilename($target_dir, basename($_FILES["Ques" . $val]["name"]), str_replace(" ", "_", $sDocName . $z));
if (move_uploaded_file($_FILES["Ques" . $val]["tmp_name"], $target_file)) {
$sFile = basename($target_file);
$sql = "REPLACE INTO ADQAnswers (ADQFirmID, ADQuestionID, Answer) VALUES (" . $_POST["QFirmID"] . ", " . $val . ", '" . addslashes($sFile) . "')";
mysqli_query($conni, $sql);
}
}
}
$bShowForm = false;
if ($_POST["do"] == 2) {
$sql = "UPDATE ADQFirms SET Score=" . $iScore . ", MaxScore=" . $iMaxScore . ", ScorePerc=" . ($iMaxScore > 0 ? round($iScore / $iMaxScore * 100, 2) : "NULL") . ", DateCompleted=NOW() WHERE ADQFirmID=" . $_POST["QFirmID"];
//echo $sql;
mysqli_query($conni, $sql);
$bShowScore = true;
} else {
$bShowReturn = true;
}
}
}
// echo 'Answers saved';
// exit;
} else {
$sql = "SELECT * FROM ADQFirms WHERE ADQFirms.ADQID=" . $QID . " AND ADQFirms.FirmID=" . $MemberFirmID . " AND AuditYear = " . $auditYear;
$recExist = mysqli_query($conni, $sql);
if ($rowExist = mysqli_fetch_assoc($recExist)) {
if (!empty($rowExist["DateCompleted"])
// && !in_array($rowExist["FirmID"], array(1206, 1270, 1374))
) {
$bCompleted = true;
$bShowQues = false;
$bShowForm = true;
}
}
}
$sql = "SELECT * FROM ADecQuestionnaires WHERE ADQID=" . $QID;
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
?>
<style>
input,
textarea {
border-color: #333333 !important;
}
.adecqtable tr td {
border: 1px solid #333333;
/* border-width:0px 1px 0px 1px; */
padding: 5px !important;
}
</style>
<link rel="stylesheet" href="/js/jqueryui/jquery-ui.css" type="text/css">
<script src="/js/jqueryui/jquery-ui.js"></script>
<script>
function SaveForLater() {
jQuery('input').removeAttr('required');
jQuery('input').prop('required', false);
jQuery('#adecqformdo').val('3');
jQuery('#adecqform').submit();
}
</script>
<table border=0 width=100%>
<tr>
<td width="67%"> </td>
<td width="33%"><a style="background-color:#325eab; color:white; border:1px solid #325eab; border-radius:10px; padding:5px; text-align:center;display :block;" href="/cesa-annual-declaration/"><b>Return to Annual Declaration Main Page</b></a></td>
</tr>
<tr>
<td width="100%" colspan="2"><span style="background-color:#325eab; color:white; border:1px solid #325eab; border-radius:10px; padding:5px; text-align:center;display :block; width:900px;"><b><?php echo $row["QuestionnaireName"]; ?></b></span></td>
</tr>
</table>
<p></p>
<?php
if (!$bShowScore)
echo $row["Introduction"];
$iFirstQuesID = 0;
$sFirstQues = "";
$sql = "SELECT * FROM ADQuestions WHERE ADQID=" . $QID . " AND SectionNum=1 AND QuestionNum=1";
$recQ = mysqli_query($conni, $sql);
if ($rowQ = mysqli_fetch_assoc($recQ)) {
$iFirstQuesID = $rowQ["ADQuestionID"];
$sFirstQues = $rowQ["Question"] . "<br>" . $rowQ["Explanation"];
}
$arrExist = $_POST;
$sql = "SELECT ADQAnswers.* FROM ADQuestions JOIN ADQFirms USING (ADQID) JOIN ADQAnswers USING (ADQFirmID, ADQuestionID)
WHERE ADQFirms.ADQID=" . $QID . " AND ADQFirms.FirmID=" . $MemberFirmID;
echo '<!-- ' . $sql . ' -->';
$recExist = mysqli_query($conni, $sql);
while ($rowExist = mysqli_fetch_assoc($recExist)) {
if (!isset($_POST["Ques" . $rowExist["ADQuestionID"]]) || empty($_POST["Ques" . $rowExist["ADQuestionID"]])) {
$arrExist["Ques" . $rowExist["ADQuestionID"]] = $rowExist["Answer"];
$arrExist["Evidence" . $rowExist["ADQuestionID"]] = $rowExist["Evidence"];
$arrExist["Justification" . $rowExist["ADQuestionID"]] = $rowExist["Justification"];
}
}
if ($bShowQues) {
?>
<p>
Please consult the '<strong>Procedure: CESA Management System Declarations (MSDs)</strong>'
for guidance on how to complete the Management System Declaration.
<a href="/uploads/20201114_-_CESA_MSD_Procedure_-_Final_draft_CC_DL_review.pdf" target="_blank">Click here</a>
to view the Procedure.
</p>
<form method="post" action="<?php echo $declarationLink; ?>">
<input type="hidden" name="QID" value="<?php echo $QID; ?>">
<input type="hidden" name="FirmID" value="<?php echo $MemberFirmID; ?>">
<input type="hidden" name="u" value="<?php echo $_REQUEST["u"]; ?>">
<input type="hidden" name="do" value="1">
<table border="0" width="100%">
<tr>
<td><?php echo $sFirstQues; ?></td>
<td><input type="radio" name="Ques<?php echo $iFirstQuesID; ?>" value="Yes" required<?php if ($arrExist["Ques" . $iFirstQuesID] == "Yes") echo " checked"; ?>)> Yes</td>
<td><input type="radio" name="Ques<?php echo $iFirstQuesID; ?>" value="No" required<?php if ($arrExist["Ques" . $iFirstQuesID] == "No") echo " checked"; ?>> No</td>
</tr>
<tr>
<td colspan="3" align="center"><input type="submit" value="Continue"></td>
</tr>
</table>
<?php
}
if ($bShowForm) {
if (count($errs) > 0) {
?>
<div style="border:2px solid red; padding:5px">Your information has not been saved. Please correct the following errors and submit again:<br>
<ul>
<li><?php echo implode("</li><li>", $errs); ?></li>
</ul>
</div>
<?php
}
switch ($QID) {
case 1:
// FIMS
$sFilter = "";
if ($_POST["Ques" . $iFirstQuesID] == "No") {
$sFilter = " AND SectionNum>1";
}
$iRefCols = 2;
break;
case 2:
// QMS
if ($_POST["Ques" . $iFirstQuesID] == "Yes") {
$sFilter = " AND SectionNum=1";
} else {
$sFilter = " AND SectionNum>1";
}
$iRefCols = 2;
break;
case 3:
// PSM
$sFilter = "";
if ($_POST["Ques" . $iFirstQuesID] == "No") {
$sFilter = " AND SectionNum>1";
}
$iRefCols = 1;
break;
}
?>
<script>
jQuery(document).ready(function() {
<?php if ($bCompleted) { ?>
jQuery("input").attr("disabled", "disabled");
jQuery("input").prop("disabled", true);
jQuery("textarea").attr("disabled", "disabled");
jQuery("textarea").prop("disabled", true);
<?php } else { ?>
jQuery(".datepicker").datepicker({
dateFormat: "yy-mm-dd"
});
<?php } ?>
});
</script>
<?php if (!$bCompleted) { ?>
<form method="post" action="<?php echo $declarationLink; ?>" enctype="multipart/form-data" id="adecqform">
<input type="hidden" name="QID" value="<?php echo $QID; ?>">
<input type="hidden" name="FirmID" value="<?php echo $MemberFirmID; ?>">
<input type="hidden" name="QFirmID" value="<?php echo $iQFirmID; ?>">
<input type="hidden" name="u" value="<?php echo $_REQUEST["u"]; ?>">
<input type="hidden" name="do" id="adecqformdo" value="2">
<?php } else { ?>
<p><b>You have already completed this questionnaire and will not be able to edit your answers.</b></p>
<?php } ?>
<table border="1" cellspacing="0" cellpadding="5" width="100%" class="adecqtable">
<?php
$sql = "SELECT * FROM ADQSections WHERE ADQID=" . $QID;
$sql .= $sFilter;
$sql .= " ORDER BY SectionNum";
$recS = mysqli_query($conni, $sql);
$iNumSections = 0;
$bHeadingsShown = false;
while ($rowS = mysqli_fetch_assoc($recS)) {
$iNumSections++;
?>
<!--
<tr><td colspan="<?php echo 7 + $iRefCols; ?>" style="background-color:#6DA9D4">
<h2><?php echo $rowS["SectionName"]; ?></h2>
</td></tr> -->
<?php
// if (($rowS["SectionNum"]>1) && ($iNumSections<mysqli_num_rows($recS))) {
if (($rowS["SectionNum"] > 1) && (!$bHeadingsShown)) {
$bHeadingsShown = true;
?>
<tr>
<td colspan="<?php echo 7 + $iRefCols; ?>">
<p><b>Glossary</b><br>
<i>Requirements:</i> Describes examples of types of documentation that member firms can provide upon request from CESA for adhoc verification reviews. Please note that this documentation does not need to be uploaded when completing the MSD, but should be readily available upon request during the CESA verification process.<br>
<i>Additional Guidance:</i> This section contains additional information which will assist the member firms to ensure that documentation requirments align with the FIDIC guidelines.
</p>
</td>
</tr>
<tr>
<td width="5%"><b>No.</b></td>
<td width="10%"><b>Ref1</b></td><?php if ($iRefCols > 1) { ?><td width="10%"><b>Ref2</b></td><?php } ?>
<td width="40%"><b>Declaration</b></td>
<td colspan="5" width="35%"><b>Level of System Development</b></td>
</tr>
<tr>
<td colspan="<?php echo 2 + $iRefCols; ?>">
<p>
Please consult the '<strong>Procedure: CESA Management System Declarations (MSDs)</strong>'
for guidance on how to complete the Management System Declaration.
<a href="https://www.cesa.co.za/uploads/20201114_-_CESA_MSD_Procedure_-_Final_draft_CC_DL_review.pdf" target="_blank">Click here</a>
to view the Procedure.
</p>
</td>
<td><b>Yes</b></td>
<td><b>No</b></td>
<td><b>N/A</b></td>
<td width="15%"><b>Documentation Requirements - If yes, have evidence for verification</b></td>
<td width="15%"><b>If NA, give justification</b></td>
</tr>
<?php
}
$sql = "SELECT * FROM ADQuestions WHERE ADQID=" . $QID . " AND SectionNum=" . $rowS["SectionNum"] . " AND ADQuestionID<>" . $iFirstQuesID . " ORDER BY QuestionNum";
$recQ = mysqli_query($conni, $sql);
while ($rowQ = mysqli_fetch_assoc($recQ)) {
if (($rowS["SectionNum"] > 1) && ($iNumSections < mysqli_num_rows($recS))) {
?>
<tr>
<td valign="top"><?php echo $rowQ["QuestionNum"]; ?></td>
<td valign="top"><?php echo nl2br(wordwrap($rowQ["Ref1"], 15)); ?></td>
<?php if ($iRefCols > 1) { ?>
<td valign="top"><?php echo nl2br($rowQ["Ref2"]); ?></td>
<?php } ?>
<td valign="top"><?php echo $rowQ["Question"]; ?><br><br>
<?php if (!empty($rowQ["Explanation"])) echo "<u><i>Additional Guidance</i></u><br>"; ?>
<i><?php echo nl2br($rowQ["Explanation"]); ?></i>
</td>
<td valign="top" align="center">Yes<br><input type="radio" name="Ques<?php echo $rowQ["ADQuestionID"]; ?>" value="Yes" required<?php if ($arrExist["Ques" . $rowQ["ADQuestionID"]] == "Yes") echo " checked"; ?> title="Yes"></td>
<td valign="top" align="center">No<br><input type="radio" name="Ques<?php echo $rowQ["ADQuestionID"]; ?>" value="No" <?php if ($arrExist["Ques" . $rowQ["ADQuestionID"]] == "No") echo " checked"; ?> title="No"></td>
<td valign="top" align="center">NA<br><input type="radio" name="Ques<?php echo $rowQ["ADQuestionID"]; ?>" value="NA" <?php if ($arrExist["Ques" . $rowQ["ADQuestionID"]] == "NA") echo " checked"; ?> title="NA"></td>
<td valign="top">Requirements (if <i>yes</i>)<br><textarea cols="20" rows="3" name="Evidence<?php echo $rowQ["ADQuestionID"]; ?>"
placeholder="<?php echo $rowQ["Placeholder"]; ?>"
title="Evidence"><?php echo str_replace("\\", "", $arrExist["Evidence" . $rowQ["ADQuestionID"]]); ?></textarea></td>
<td valign="top">Justification (if <i>NA</i>)<br><textarea rows="3" name="Justification<?php echo $rowQ["ADQuestionID"]; ?>"
title="Justification"><?php echo str_replace("\\", "", $arrExist["Justification" . $rowQ["ADQuestionID"]]); ?></textarea></td>
</tr>
<?php
} else {
?>
<tr>
<td colspan="<?php echo 2 + $iRefCols; ?>" valign="top"><?php echo $rowQ["Question"]; ?><br><br>
<i><?php echo nl2br($rowQ["Explanation"]); ?></i>
</td>
<td colspan="5" valign="top">
<input name="Ques<?php echo $rowQ["ADQuestionID"]; ?>" <?php if (in_array($rowQ["ADQuestionID"], $arrFileQs)) { ?>type="file" <?php } else { ?>type="text" value="<?php echo $arrExist["Ques" . $rowQ["ADQuestionID"]]; ?>" <?php }
if (in_array($rowQ["ADQuestionID"], $arrDateQs)) echo " placeholder=\"YYYY-MM-DD\" class=\"datepicker\""; ?>>
</td>
</tr>
<?php
}
}
}
?>
<?php if (!$bCompleted) { ?>
<tr>
<td colspan="<?php echo 2 + $iRefCols; ?>" align="center"><input type="button" value="Save and Continue Later" onclick="javascript:SaveForLater()"><br>
<i>Save your answers and return to complete the questionnaire at another time.</i>
</td>
<td colspan="5" align="center"><input type="submit" value="Submit Answers"><br>
<i>Submit your completed questionnaire (you will not be able to edit your answers later).</i>
</td>
</tr>
<?php } ?>
</table>
<?php if (!$bCompleted) { ?>
</form>
<?php } ?>
<?php
}
if ($bShowScore) {
?>
<div style="border:5px solid green; padding:10px">
<p><b>Thank you for completing the questionnaire.</b></p>
<?php
if (!empty($iMaxScore)) {
?>
<p>Your score: <?php echo $iScore; ?> out of <?php echo $iMaxScore; ?> (<?php echo round($iScore / $iMaxScore * 100, 2); ?>%).</p>
<p>Please consult the '<strong>Procedure: CESA Management System Declarations (MSDs)</strong>' for more information on how your declaration is scored.
<a href="/uploads/20201114_-_CESA_MSD_Procedure_-_Final_draft_CC_DL_review.pdf" target="_blank">Click here</a> to view the Procedure.
</p>
<?php
}
?>
<ul>
<li><a href="<?php echo $declarationLandingPage; ?>">Click here to return to the Annual Declaration main page</a></li>
<?php if (intval($_POST["QID"]) < 3) { ?><li><a href="<?php echo $declarationLink; ?>?u=<?php echo $_POST["u"]; ?>&QID=<?php echo intval($_POST["QID"]) + 1; ?>">Click here to continue to the next Management Systems Declaration questionnaire</a></li><?php } ?>
</ul>
<?php
}
if ($bShowReturn) {
?>
<div style="border:5px solid green; padding:10px">
<p><b>Your answers have been saved, but not submitted. You can return later to complete and submit the questionnaire.</b></p>
<ul>
<li><a href="<?php echo $declarationLandingPage; ?>">Click here to return to the Annual Declaration main page</a></li>
<?php if (intval($_POST["QID"]) < 3) { ?><li><a href="<?php echo $declarationLink; ?>?u=<?php echo $_POST["u"]; ?>&QID=<?php echo intval($_POST["QID"]) + 1; ?>">Click here to continue to the next Management Systems Declaration questionnaire</a></li><?php } ?>
</ul>
<?php
}
}
?>
<script>
function check() {
jQuery.getJSON(
'/echasl23/ajax/session-keep-alive.php',
function(data) {}
);
}
jQuery(document).ready(function() {
setInterval(function() {
check();
}, 100000); // Tick every 100 seconds
check();
});
</script>