#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use JSON;
use Opals::User qw(
    user_save
);
my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $result={};
if ($ENV{'REQUEST_METHOD'} eq "POST") {
    my $json ="";
    while (<STDIN>) {
        $json .= $_;
    }
    my $userInfo = decode_json($json);
    my $dupUserErr=isDupUser($dbh,$userInfo);
    if($dupUserErr ==0){
       $result->{'uid'}=user_save($dbh,$userInfo);
       $result->{'status'}=1;
    }
    else{
        $result->{'status'}=0;
        $result->{'error'}={dupUserBc=>($dupUserErr==1),
                            dupSid=>($dupUserErr==2),
                            dupUsername=>($dupUserErr==3)
                            };
    }
    
}
print "Content-type: text/plain\n\n";
print   to_json($result);
#-------------------------------------------------------------
sub isDupUser{
    my ($dbh,$user)=@_;
    if(defined $user->{'userbarcode'} && $user->{'userbarcode'} ne ''){
        my ($uid)=$dbh->selectrow_array("select uid from opl_user where userbarcode=?",undef,$user->{'userbarcode'});
        if($uid && $uid ne $user->{'uid'}){
            return 1;
        }
    }
   if(defined $user->{'sid'} && $user->{'sid'} ne ''){
        my ($uid)=$dbh->selectrow_array("select uid from opl_user where sid=?",undef,$user->{'sid'});
        if($uid && $uid ne $user->{'uid'}){
            return 2;
        }
    }
    if(defined $user->{'username'} && $user->{'username'} ne ''){
        my ($uid)=$dbh->selectrow_array("select uid from opl_user where username=?",undef,$user->{'username'});
        if($uid && $uid ne $user->{'uid'}){
            return 3;
        }
    }
    return 0;
}


