<?php
if (!defined("PSWE_MODULELOADED")) {
   exit;
}

class Column {
	var $name;
	var $type;
	var $nullable;

	function Column($name, $type, $nullable) {
		$this->name = $name;
		$this->type = $type;
		$this->nullable = $nullable=="NO"?false:true;
	}

	function getName() {
		return $this->name;
	}

	function getType() {
		return $this->type;
	}

	function isNullable() {
		return $this->nullable;
	}

	function toString() {
		return("name=".$this->name.",type=".$this->type.",nullable=".$this->nullable);
	}
}

DrawTitle(RequestValue("table"));

$table = RequestValue("table");

$columns= array();
$tableQuery= db_OpenTable("EXEC sp_columns @table_name = '".$table."'");
while (($blah = db_Next($tableQuery)) != null) {
	if ($blah["COLUMN_NAME"]!='keycolumn') {
		$column = new Column($blah["COLUMN_NAME"], $blah["TYPE_NAME"], $blah["IS_NULLABLE"]);
		array_push($columns, $column);
	}
}
db_CloseTable($tableQuery);

InitializeFormEngine();
InitializeForm($table,'GUID');
DrawFormHeader(PSWE_SYS_ROOTFOLDER."module.php?module=msa&page=maintenance/index_edittable_ack");

if (!IsNewRecord()) {
	$tableQuery = db_OpenTable("SELECT TOP 1 * FROM $table WHERE GUID = '".RequestValue("id")."'");
	$tableResult = db_Next($tableQuery);
	db_CloseTable($tableQuery);

	foreach ($tableResult as $key => $value) {
		$_SESSION["fld".$key] = $value;
	}
} else {
	foreach ($columns as $myColumn) {
		if (RequestValue($myColumn->getName()) != "") {
			$_SESSION["fld".$myColumn->getName()] = RequestValue($myColumn->getName());
		}
	}
}

/* Gonads and Strife
 */
foreach ($columns as $column) {
	switch ($column->getType()) {
		case "uniqueidentifier":
			if (!IsNewRecord()) {
				DrawFormHidden("fld".$column->getName(), $_SESSION['fld'.$column->getName()]);
			} elseif ($column->getName() != 'GUID') {
				if (RequestValue($column->getName()) == "") {
					DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateSQLSelectField("fld".$column->getName(), db_Relationship($table,$column->getName())));
				} else {
					DrawFormHidden("fld".$column->getName(), RequestValue(strtolower($column->getName())));
				}
			}
			break;
		default:
			switch ($table) {
				case "MSA_Criteria":
					switch ($column->getName()) {
						case "TeamMember":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateSQLSelectField("fld".$column->getName(), "SELECT FirstName+' '+LastName AS Name, UserName AS ID FROM MSAPSWE.dbo.sec_Users WHERE Developer = 0 AND Disabled = 0 ORDER BY Name"));
							break;
						case "Coordinator":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateSQLSelectField("fld".$column->getName(), "SELECT FirstName+' '+LastName AS Name, UserName AS ID FROM MSAPSWE.dbo.sec_Users WHERE Developer = 0 AND Disabled = 0 ORDER BY Name"));
							break;
						case "CaptainValidated":
							//DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateBooleanField("fld".$column->getName()));
							break;
						default:
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateTextField("fld".$column->getName()),$column->isNullable());
					}
					break;
				case "MSA_Findings":
					switch ($column->getName()) {
						case "WhoSubmitted":
							DrawFormHidden("fldWhoSubmitted", $gblSystemProperties["CURRENTUSER"]["USERNAME"]);
							break 2;
						case "Findings":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateMemoField("fld".$column->getName()),$column->isNullable());
							break;
						case "DeficiencyID":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateSQLSelectField("fld".$column->getName(), "SELECT DeficiencyDescription AS Name, DeficiencyID AS ID FROM MSA_Deficiency_Master ORDER BY ID"));
							break;
						case "StatusOpen":
							//DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateBooleanField("fld".$column->getName()));
							break;
						default:
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateTextField("fld".$column->getName()),$column->isNullable());
					}
					break;
				case "MSA_Prerequisites":
					switch ($column->getName()) {
						case "CR_Description":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateMemoField("fld".$column->getName()),$column->isNullable());
							break;
						default:
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateTextField("fld".$column->getName()),$column->isNullable());
					}
					break;
				case "MSA_ObjectiveEvidence":
					switch ($column->getName()) {
						case "OEDateAdded":
							if (IsNewRecord())
								$_SESSION['fldOEDateAdded'] = date("Y-m-d");
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateTextField("fld".$column->getName()),$column->isNullable());
							break;
						case "Description":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateMemoField("fld".$column->getName()),$column->isNullable());
							break;
						case "StatusOpen":
						case "DocumentsSubmitted":
						case "OEReadyForReview":
						case "FileName":
							//DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateBooleanField("fld".$column->getName()));
							break;
						case "ResponsiblePerson":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateSQLSelectField("fld".$column->getName(), "SELECT FirstName+' '+LastName AS Name, UserName AS ID FROM MSAPSWE.dbo.sec_Users WHERE Developer = 0 AND Disabled = 0 ORDER BY Name"));
							break;
						default:
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateTextField("fld".$column->getName()),$column->isNullable());
					}
					break;
				case "MSA_SubCriteria":
					switch ($column->getName()) {
						case "ResponsibleManager":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateSQLSelectField("fld".$column->getName(), "SELECT FirstName+' '+LastName AS Name, UserName AS ID FROM MSAPSWE.dbo.sec_Users WHERE Developer = 0 AND Disabled = 0 ORDER BY Name"));
							break;
						case "ActivityDescription":
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateMemoField("fld".$column->getName()),$column->isNullable());
							break;
						case "Number":
							if (IsNewRecord()) {
								$objSubCriteria = db_OpenTable("SELECT TOP 1 Number FROM vwSubCriteria WHERE criteriaguid = '".RequestValue('criteriaguid')."' ORDER BY Number DESC");
								if ($SubCriteria = db_Next($objSubCriteria))
									$_SESSION['fld'.$column->getName()] = $SubCriteria['Number'] + 1;
								else
									$_SESSION['fld'.$column->getName()] = 1;
							}
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()), $_SESSION['fld'.$column->getName()]);
							DrawFormHidden('fld'.$column->getName(), $_SESSION['fld'.$column->getName()]);
						case "StatusOpen":
						case "MSATeamReview":
							break;
						default:
							DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateTextField("fld".$column->getName()),$column->isNullable());
					}
					break;
				default:
					DrawFormField(CreateFieldCaption("fld".$column->getName(), $column->getName()),CreateTextField("fld".$column->getName()),$column->isNullable());
					break;
			}
			break;
	}
}
DrawFormHidden('fldTable',$table);
DrawFormFooter();
