#include <stdio.h>
#include <sys/stat.h>		/* for stat() */
#include <string.h>
#include <ctype.h>
#include <time.h>


#include "global.h"

#include "manhat-lib/shared_util.h"
#include "manhat-lib/shared_cs_util.h"
#include "manhat-lib/shared_system_data.h"  
#include "manhat-lib/shared_testpilot_util.h"  
#include "manhat-lib/shared_lock.h"  
#include "manhat-lib/shared_news_util.h"  

static void
read_parameters (char *course, char *key, char *sender,  char *info_fname, long *offset, char *tp4);

static void
mark_this_message_as_read(SESSION *user, long offset, CONFIG_STRUCT *conf);
 
int
main (void)
{
  char course[MAX_PATH + 1];	/* from crs=? command line */
  char key[MAX_KEY + 1];	/* from id=? command line */
  char sender[MAX_USERNAME +1];
  char info_fname[MAX_FILENAME +1];
  long offset;
  char tp4[MAX_URL + 1];	/* from id=? command line */
  char password[MAX_PATH + 1];	/* from id=? command line */
  SESSION user;
  CONFIG_STRUCT conf;		/* the configuration read from config file */
  char *view =0;
  cs_cgi_init();

  read_parameters (course, key, sender, info_fname, &offset, tp4);
  read_configuration_file (course, &conf);	/* shared_util.c */
  validate_key (key, &user, &conf);	/* shared_util.c */
  
  makeTestPassword(user.username, course, password); /* shared_testpilot_util.c */
  view = hdf_get_value(global_cgi->hdf, "Query.view", "");
  if(strlen(view))
      printf("Location: %s/%s?USER_ID=%s&USER_PW=%s&REQUEST=Review Your Score\n\n", system_data_str("TESTPILOT_SERVER"),tp4, user.id, password); 
  else
  {
    if(user.group == STUDENT)
    {
       set_discussion_names (conf.course_path, user.username, TESTPILOT);  /* shared_news_util.c */

       mark_this_message_as_read(&user, offset, &conf);
    }
    printf("Location: %s/%s?USER_ID=%s&USER_PW=%s\n\n", system_data_str("TESTPILOT_SERVER"), tp4, user.id, password); 
  } 
  cs_cgi_destroy();
  return 0;
}


static void
read_parameters (char *course, char *key, char *sender,  char *info_fname, long *offset, char *tp4)
{
  char tmp[25];

  cs_get_required_parameter ("crs", course, MAX_PATH);	/* shared_cgi_util.c */
  cs_get_required_parameter ("id", key, MAX_KEY);
  cs_get_required_parameter ("sender", sender, MAX_USERNAME);
  cs_get_required_parameter ("inf", info_fname, MAX_FILENAME);  
  cs_get_required_parameter ("tp4", tp4, MAX_URL);
  cs_get_required_parameter  ("loc", tmp, 24);
  *offset = atol(tmp);
  
}

static void
mark_this_message_as_read(SESSION *user, long offset, CONFIG_STRUCT *conf)
{
   time_t current_time;
   int msg_count;
   MSG_TREE_NODE *msg_ptr;
   MSG_TREE_NODE *topic_ptr;

   build_one_topic_tree(user, TESTPILOT, offset, &msg_ptr, &topic_ptr, &msg_count,0, 0, &current_time);

   mark_msg_as_read(&(msg_ptr->data),conf,user);   /*shared_news_util.c */

}

