<?php

/*
 *	Load Updated record functions for sabreQMS module
 */



/*
 *	eng_load_updated_display()
 *
 *	returns:  Displays table list of load_updated options
 *
 */

function eng_load_updated_display() {
	
	if (user_access('view admin lists') == False) {
		return '';
	}
	
	// Check permissions -- only allow editing capabilities if 'administer' enabled
	$bAllowAdmin = user_access('administer sabreQMS');

	$table_header = array( 
		array( 'data' => 'Engineering Load Updated' ),
	);
	
	if ( $bAllowAdmin == True ) {
		$table_header[] = array(
			'data' => 'Admin',
			//'class' => 'sorttable_nosort',
		);
	}
	
	
	// Get list of customers
	$result = db_query("SELECT eng_load_updated_id, eng_load_updated_desc FROM {qms_eng_load_updated} q ORDER BY eng_load_updated_desc");

	$i = 0;
	$table_rows = array();
	
	foreach ($result as $row) {
		
		$row_data = array(
			check_plain($row->eng_load_updated_desc),
		);
		
		if ( $bAllowAdmin == True ) {
			$row_data[] = _st_generate_options('engloadupdate', $row->eng_load_updated_id);
		}
		
		$table_rows[] = array( 'data' => $row_data	);
		$i++;
	}

	$content = '';

	if ( $bAllowAdmin )
	{
		$content = l( t('Add Load Updated Item'), 'engloadupdate/add' );
	}
	
	$content .= theme( 'table', array(
		'header' => $table_header,
		'rows' => $table_rows,
		'empty' => t('None'),
	));

	return $content;
}

/*
 *	eng_load_updated_form()
 *
 *  overloads:  hook_form()
 *
 *	Displays the eng_load_updated_form for adding/updating
 */

function eng_load_updated_form($form, $form_state, $load_updated_id = '') {

	if ( user_access('administer sabreQMS') == FALSE ) {
    return form_set_error( t('Unauthorized'), t('Administrator access required'));
  }
  
	$load_updated = array();
	
	$form['load_updated_desc'] = array(
		'#type' => 'textfield',
		'#title' => t('Load Updated Description'),
		'#maxlength' => 100,
		'#default_value' => '',
	);		
	$form['load_updated_id'] = array(
		'#type' => 'value',
		'#value' => 'NEW',
	);				
		
	
	if ( $load_updated_id <> '' ) {   // Edit existing record
		
		// get the record
		$sql = "SELECT eng_load_updated_desc FROM {qms_eng_load_updated} q WHERE eng_load_updated_id = :luid";
		$result = db_query($sql, array(':luid' => $load_updated_id));
		
		if ( $result->rowCount() == 0 ) {
	    form_set_error( t('Oops!'), t('Something seems to have gone wrong.  Load Updated record not found.'));
			drupal_goto('engloadupated');
			return;
	  }
	
		$load_updated = $result->fetchObject();
		
		// set existing customer values into form
		$form['load_updated_id']['#value'] = $load_updated_id;		
		$form['load_updated_desc']['#default_value'] = $load_updated->eng_load_updated_desc;
	}
	
	$form['actions'] = array('#type' => 'actions');
	$form['actions']['submit'] = array(
		'#type' => 'submit',
		'#value' => t('Submit'),
    '#attributes' => array('class' => array('qms-btn-submit')),
	);
  $form['actions']['done'] = array(
		'#type' => 'button',
		'#value' => t('Done'),
		'#attributes' => array('class' => array('qms-btn-done', 'qms-btn-extra'),
                           'onclick' => 'window.location="' . 
                                            url('qmssettings/engloadupdated') . 
                                         '"; return false;'),
	);
	
	return $form;
}

/*
 *	eng_load_updated_form_validate()  
 *
 *  overloads:  hook_form_validate()
 *
 *	Validates eng_load_updated_form after it is submitted
 */

function eng_load_updated_form_validate($form, $form_state) {
	if ( trim($form_state['values']['load_updated_desc']) == '' ) {
		form_set_error('load_updated_desc', t('Load Updated Description is a required field'));
	}
}

/*
 *	eng_load_updated_form_submit()  
 *
 *  overloads:  hook_form_submit()
 *
 *	Saves form data upon successful submit
 */

function eng_load_updated_form_submit($form, $form_state) {
	$load_updated = (object) NULL;
	
	$mode = $form_state['values']['load_updated_id'];
	if ($mode == 'NEW') {
		$load_updated->eng_load_updated_desc = $form_state['values']['load_updated_desc'];
	}
	else {
		$load_updated->eng_load_updated_id = (int) $mode;
		$load_updated->eng_load_updated_desc = $form_state['values']['load_updated_desc'];
	}
	

	if  ( $mode == 'NEW' )  {  
		// new record
		// Table:  {qms_eng_load_updated}
		if ( False == drupal_write_record('qms_eng_load_updated', $load_updated)) {
			$msg = "Oops!  Something went wrong storing the load updated record.";
			drupal_set_message(t($msg));
		}
	}
	else {
		// update existing
		// Table:  {qms_eng_load_updated}
		if ( False == drupal_write_record('qms_eng_load_updated', $load_updated, 'eng_load_updated_id')) {
			$msg = "Oops!  Something went wrong updating the load updated record.";
			drupal_set_message(t($msg));
		}
	}
	
	
	drupal_goto('qmssettings/engloadupdated');
}

/*
 *	load_updated_delete_confirm()  
 *
 *	Validate and Ask for confirmation before deleting record
 */

function eng_load_updated_delete_confirm($form, $form_state, $load_updated_id) {
	
	if ( user_access('administer sabreQMS') == FALSE ) {
    form_set_error( t('Unauthorized Access'), t('Administrator access required.'));
		drupal_goto('qmssettings/engloadupdated');
		return;	
  }

	$load_updated_id = check_plain($load_updated_id);
	
	// Get record by id
	$sql = "SELECT eng_load_updated_desc FROM {qms_eng_load_updated} WHERE eng_load_updated_id = :luid";
	$result = db_query($sql, array(':luid' => $load_updated_id));
	
	if ( $result->rowCount() == 0 ) {
    form_set_error( t('Oops!'), t('Something seems to have gone wrong.  Load Updated record not found.'));
		drupal_goto('qmssettings/engloadupdated');
		return;
  }
	
	$load_updated_desc = $result->fetchField();
	
	// check if the eng_load_updated items is linked to an engineering record
	$sql = "SELECT engineering_id FROM {qms_engineering} WHERE load_updated_id = :luid LIMIT 1";
	$result = db_query($sql, array(':luid' => $load_updated_id));
	if ( $result->rowCount() ) {
		// cannot delete, load updated record linked to engineering records
		$msg = "Unable to delete " . $load_updated_desc .  ".  Load Updated record is linked to engineering records.";
		drupal_set_message(t($msg));	
		drupal_goto('qmssettings/engloadupdated');
		return;	
	}
	
	
	$form['load_updated_id'] = array(
		'#type' => 'value',
		'#value' => $load_updated_id,
	);
	
	$form['load_updated_desc'] = array(
		'#type' => 'value',
		'#value' => $load_updated_desc,
	);
  
  $title = t('Delete Load Updated Item') . '?';
  $question = t('Are you sure you want to delete?') . 
              '<h2>' . $load_updated_desc . '</h2><br />' . 
              t('This action cannot be undone.');
  $goto_if_canceled = 'qmssettings/engloadupdated';
  $yes_btn = 	t('Delete');
  $no_btn = t('Cancel');
	
  // force this here to avoid a problem with routing if cancelled
  //$_GET['destination'] = $goto_if_canceled;
  
  return confirm_form($form, $title,	$goto_if_canceled, $question, 
                      $yes_btn, $no_btn);
}

/*
 *	load_updated_delete_confirm_submit()  
 *
 *	Submit after confirmation, delete the specified record
 */

function eng_load_updated_delete_confirm_submit($form, $form_state) {
	
	if ( $form_state['values']['confirm']) {
		$load_updated_id = $form_state['values']['load_updated_id'];
		$load_updated_desc = $form_state['values']['load_updated_desc'];
	
	
		// delete from database
		$num_rows = db_delete('qms_eng_load_updated')
								->condition('eng_load_updated_id', $load_updated_id, '=')
								->execute();
	
		$msg = '';					
		if ( $num_rows == 1 ) {
			$msg = 'Load Updated record for ' . $load_updated_desc . ' has been deleted.';
		}
		else {
			$msg = 'Oops!  Unable to delete record for ' . $load_updated_desc . '.';
		}
		drupal_set_message(t($msg));	
	}
	
	drupal_goto('qmssettings/engloadupdated');
}







