#!/bin/sh
#
#Fake sacctmgr show user results for testing

#Order of fields is
#format=adminlevel,defaultaccount,user 
verbose_flag=

print_header()
{
	echo "Admin|Def Acct|User|"
}

print_user()
{	uname=$1
	defacct=$2
	admin=$3
	if [ "x$admin" = "x" ]; then
		admin=None
	fi
	echo "$admin|$defacct|$uname|"
}

print_specified_user()
{	usr=$1

	case $usr in
	   aaa)
		print_user 'aaa' 'test'
		;;
	   bbb)
		print_user 'bbb' 'test' 'Administrator'
		;;
	   ccc)
		print_user 'ccc' 'abc114' 'Administrator'
		;;
	   ddd)
		print_user 'ddd' 'test'
		;;
	   *)
		x=x
		#echo >&2 "Unknown user $usr"
		;;
	esac
}

print_users()
{	if [ "x$verbose_flag" = "xyes" ]; then
		print_header
	fi
	while [ $# -gt 0 ]
	do
		usr=$1
		shift
		print_specified_user $usr
	done
}

print_all_users()
{	#Must do alphabetically
	print_users 'aaa' 'bbb' 'ccc' 'ddd'
}


print_test_users()
{	#Print all users with defacct test
	print_users 'aaa' 'bbb' 'ddd'
}

print_abc114_users()
{	#Print all users with defacct test
	print_users 'ccc'
}

print_all_admins()
{	#Print all users with adminlevel Admin
	print_users 'bbb' 'ccc'
}

print_test_admins()
{	#Print all users with defacct test and adminlevel Admin
	print_users 'bbb'
}

print_abc114_admins()
{	#Print all users with defacct test and adminlevel Admin
	print_users 'ccc'
}

print_all_nonadmins()
{	#Print all non-admins
	print_users 'aaa' 'ddd'
}

print_test_nonadmins()
{	print_users 'aaa' 'ddd'
}

print_abc114_nonadmins()
{	return
}

#Parse options
defacct_flag=
name_flag=
alevel_flag=

while [ $# -gt 0 ]
do
	arg=$1
	shift

	case $arg in
	    name=* )
		tmp=`echo $arg | sed -e 's/^name=//' -e "s/'//g" -e 's/"//g' `
		name_flag=$tmp
		;;
	    adminlevel=* )
		tmp=`echo $arg | sed -e 's/^adminlevel=//' -e "s/'//g" -e 's/"//g' `
		alevel_flag=$tmp
		;;
	     defaultaccount=* )
		tmp=`echo $arg | sed -e 's/^defaultaccount=//' -e "s/'//g" -e 's/"//g' `
		defacct_flag=$tmp
		;;
	     -v|--verbose)
		verbose_flag=yes
		;;
	esac
done

if [ "x${alevel_flag}" != "x" ]; then
	#adminlevel requested, possibly with defacct
	if [ "x${defacct_flag}" = "x" ]; then
		if [ "x${alevel_flag}" = "xAdministrator" ]; then
			#adminlevel only
			print_all_admins;
		elif [ "x${alevel_flag}" = "xNone" ]; then
			print_all_nonadmins
		fi
	else
	    if [ "x${alevel_flag}" = "xAdministrator" ]; then
		#admin + defacct
		if [ "x${defacct_flag}" = "xtest" ]; then
			print_test_admins;
		elif [ "x$defacct_flag}" = "xabc114" ]; then
			print_abc114_admins;
		fi
	    elif [ "x${alevel_flag}" = "xNone" ]; then
		#nonadmin + defacct
		if [ "x${defacct_flag}" = "xtest" ]; then
			print_test_nonadmins;
		elif [ "x$defacct_flag}" = "xabc114" ]; then
			print_abc114_nonadmins;
		fi
	    fi
	fi
elif [ "x${defacct_flag}" != "x" ]; then
	#defacct specified.  Do not handle multiple flags here
	if [ "x$defacct_flag" = "xtest" ]; then
		print_test_users
	elif [ "x$defacct_flag" = "xabc114" ]; then
		print_abc114_users
	fi
elif [ "x${name_flag}" != "x" ]; then
	#name specified.  Do not handle multiple flags here
	print_specified_user $name_flag
else
	#No flags, print everyone
	print_all_users
fi


