#!/usr/bin/perl -w

use strict;
use esmith::AccountsDB;
use esmith::event;
use DateTime;

my $a = esmith::AccountsDB->open or
    die "Could not open AccountsDB\n";

my $event = shift;
my $userName = shift;
my @users;

if (defined $userName){
  my $user = $a->get($userName);
  die "Account $userName is not a user account; can't update the auto-reply message.\n"
    unless $user && $user->prop('type') eq "user";
  @users = ($user);
}
else{
  @users = ( $a->users );
}

my $now = DateTime->now;

foreach my $user (@users){
  my $userName = $user->key;

  # Remove user from all its groups
  my @groups = $a->user_group_list($userName);
  $a->remove_user_from_groups($userName, @groups);
  event_signal('group-modify', @groups) if (scalar @groups);

  # Set forward if needed
  my $fwd = $user->prop('ExpireForwardAfterLock') || '';
  if ($fwd ne ''){
    $user->set_prop('ForwardAddress', $fwd);
    $user->set_prop('EmailForward', 'forward');
  }
  # Remove expiration settings now that the account is locked
  $user->delete_prop('ExpireLockOn');
  $user->delete_prop('ExpireLastNotifiedOn');
  # Set the expiration date
  $user->set_prop('ExpireLockedOn', $now->ymd);
}

exit (0);
