#!/usr/bin/env bash
set -e

script=$(basename "$0")
version="1.0.1"

help() {
    echo
    echo "$script"
    echo
    echo 'Description: Manage Odoo users.'
    echo "Syntax: $script [-c|-d|-a[enable,disable,list,reset]|-i|-V|help]"
    echo 'Example: $script -d erp-dev -c odoo06 -a enable -id janikvonrot@mint-system.ch'
    echo 'options:'
    echo '  -c    Docker container. Defaults to '\''odoo'\''.'
    echo '  -d    Database name. Defaults to '\''odoo'\''.'
    echo '  -a    Action to perform. Options: enable, disable, list, reset'
    echo '  -i    User account login id.'
    echo "  -V    Show $script version."
    echo "  help  Show $script manual."
    echo
}

if [[ "$1" == 'help' ]]; then
    help
    exit
fi

database=odoo
container=odoo

while getopts ':c: :d: :a: :i: :V' opt; do
    case $opt in
        c) container="$OPTARG";;
        d) database="$OPTARG";;
        a) action="$OPTARG";;
        i) id="$OPTARG";;
        V) echo "$script version $version"
        exit 0
        ;;
        \?) echo "Invalid option -$OPTARG" >&2
        help
        exit;;
    esac
done

[[ -z "$action" ]] && { echo 'Parameter -a|action is empty.' ; exit 1; }

if [[ $action == 'enable' ]]; then
    [[ -z "$id" ]] && { echo 'Parameter -i|id is empty.' ; exit 1; }
    docker exec -i $container /bin/bash -c "psql postgresql://\$PGUSER:\$PGPASSWORD@\$PGHOST/$database -c \"UPDATE res_users SET active=true WHERE login='$id';\""
    echo "Enabled user $id on database $database."
fi

if [[ $action == 'disable' ]]; then
    [[ -z "$id" ]] && { echo 'Parameter -i|id is empty.' ; exit 1; }
    docker exec -i $container /bin/bash -c "psql postgresql://\$PGUSER:\$PGPASSWORD@\$PGHOST/$database -c \"UPDATE res_users SET active=false WHERE login='$id';\""
    echo "Disabled user $id on database $database."
fi

if [[ $action == 'list' ]]; then
    docker exec -i $container /bin/bash -c "psql postgresql://\$PGUSER:\$PGPASSWORD@\$PGHOST/$database -c 'SELECT id,login,active FROM res_users;'"
fi

if [[ $action == 'reset' ]]; then
    [[ -z "$id" ]] && { echo 'Parameter -i|id is empty.' ; exit 1; }
    query="\"UPDATE res_users SET active=true,password='odoo' WHERE id='$id';\""
    docker exec -i $container /bin/bash -c "psql postgresql://\$PGUSER:\$PGPASSWORD@\$PGHOST/$database -c $query"
    echo "Set password 'odoo' to user with id $id on database $database."
fi
