?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Accounting and Validation: Verify Validation Name' ??
MODULE avm$verify_validation_name;

{ PURPOSE:
{   This module contains the procedure used to verify that a name specified for
{   a user, account, or project when creating validation records, is a name
{   that is allowed by the site.

?? NEWTITLE := 'Global declarations referenced by this module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc ave$admin_validations_errors
*copyc avt$account_name
*copyc avt$project_name
*copyc avt$validation_name
*copyc ost$user_identification
?? POP ??
*copyc avp$family_administrator
*copyc avp$get_capability
*copyc avp$system_administrator
*copyc clp$trimmed_string_size
*copyc osp$append_status_parameter
*copyc osp$set_status_abnormal
?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] avp$verify_validation_name', EJECT ??
*copyc avh$verify_validation_name

  PROCEDURE [XDCL, #GATE] avp$verify_validation_name
    (    validation_name: avt$validation_name;
     VAR status: ost$status);

?? OLDTITLE ??
?? NEWTITLE := 'verify_account_name', EJECT ??

    PROCEDURE verify_account_name
      (    account_name: avt$account_name;
       VAR status: ost$status);

      status.normal := TRUE;

{ This is an example of code that allows a system administrator to specify any account name and any other user
{ to only specify account names that are seven characters or less.

{     IF (NOT avp$system_administrator ()) AND (clp$trimmed_string_size (account_name) > 7) THEN
{       osp$set_status_abnormal ('AV', ave$name_not_allowed, account_name, status);
{       osp$append_status_parameter (osc$status_parameter_delimiter, 'ACCOUNT', status);
{     IFEND;

      IF ((account_name = 'ALL') OR (account_name = 'NONE') OR (account_name = 'DEFAULT') OR
            (account_name = 'PUBLIC')) THEN
        osp$set_status_abnormal ('AV', ave$name_not_allowed, account_name, status);
        osp$append_status_parameter (osc$status_parameter_delimiter, 'ACCOUNT', status);
      IFEND;

    PROCEND verify_account_name;
?? OLDTITLE ??
?? NEWTITLE := 'verify_project_name', EJECT ??

    PROCEDURE verify_project_name
      (    project_name: avt$project_name;
       VAR status: ost$status);

      status.normal := TRUE;

{ This is an example of code that allows a system administrator to specify any project name, and any other user
{ to only specify project names that are seven characters or less.

{     IF (NOT avp$system_administrator ()) AND (clp$trimmed_string_size (project_name) > 7) THEN
{       osp$set_status_abnormal ('AV', ave$name_not_allowed, project_name, status);
{       osp$append_status_parameter (osc$status_parameter_delimiter, 'PROJECT', status);
{     IFEND;

      IF ((project_name = 'ALL') OR (project_name = 'NONE') OR (project_name = 'DEFAULT') OR
            (project_name = 'PUBLIC')) THEN
        osp$set_status_abnormal ('AV', ave$name_not_allowed, project_name, status);
        osp$append_status_parameter (osc$status_parameter_delimiter, 'PROJECT', status);
      IFEND;

    PROCEND verify_project_name;
?? OLDTITLE ??
?? NEWTITLE := 'verify_user_name', EJECT ??

    PROCEDURE verify_user_name
      (    user_name: ost$user_name;
       VAR status: ost$status);

      status.normal := TRUE;

{ This is an example of code that allows a system administrator to specify any user name, and any other user
{ to only specify user names that are seven characters or less.

{     IF (NOT avp$system_administrator ()) AND (clp$trimmed_string_size (user_name) > 7) THEN
{       osp$set_status_abnormal ('AV', ave$name_not_allowed, user_name, status);
{       osp$append_status_parameter (osc$status_parameter_delimiter, 'USER', status);
{     IFEND;

{ The user name FTAM is reserved.

      IF ((user_name = 'ALL') OR (user_name = 'NONE') OR (user_name = 'DEFAULT') OR
            (user_name = 'FTAM')) THEN
        osp$set_status_abnormal ('AV', ave$name_not_allowed, user_name, status);
        osp$append_status_parameter (osc$status_parameter_delimiter, 'USER', status);
      IFEND;

    PROCEND verify_user_name;
?? OLDTITLE, EJECT ??

    status.normal := TRUE;

    CASE validation_name.kind OF
    = avc$vnk_account =
      verify_account_name (validation_name.account_name, status);
    = avc$vnk_project =
      verify_project_name (validation_name.project_name, status);
    = avc$vnk_user =
      verify_user_name (validation_name.user_name, status);
    ELSE

{ Unknown type of validation name.

    CASEND;

  PROCEND avp$verify_validation_name;
?? OLDTITLE ??
MODEND avm$verify_validation_name;
