예제 #1
0
        public async Task <MResellerController> init()
        {
            user = await user.init();

            nanoFinAddr = await MUtilityClass.getAddress(client, 1);

            burnAddress = await MUtilityClass.getBurnAddress(client);

            return(this);
        }
예제 #2
0
        //burn reseller bulk voucher. issue consumer voucher
        public async Task <int> sendBulk(int recipientUserID, int amount)
        {
            string recipientAddr = await MUtilityClass.getAddress(client, recipientUserID);

            //await user.grantPermissions(BlockchainPermissions.Send);
            //spend reseller BulkVoucher inputs
            string metadata             = "Reseller \'" + user.propertyUserID() + "\' spent " + amount.ToString() + " BulkVoucher. " + amount.ToString() + " Voucher of same amount to be issued to user \'" + recipientUserID.ToString() + "\'.";
            var    sendWithMetaDataFrom = await client.SendWithMetadataFromAsync(user.propertyUserAddress(), burnAddress, "BulkVoucher", amount, MUtilityClass.strToHex(metadata)); //metadata has to be converted to hex. convert back to string online or with MUtilityClasss

            sendWithMetaDataFrom.AssertOk();

            //check if recipient has the correct permissions, if not grant permissions
            MUserController recipientUser = new MUserController(recipientUserID);

            recipientUser = await recipientUser.init();

            //await recipientUser.grantPermissions(BlockchainPermissions.Receive);
            //issue recipient voucher
            var issueMore = await client.IssueMoreFromWithMetadataAsync(nanoFinAddr, recipientAddr, "Voucher", amount, "Issue consumer \'" + recipientUserID.ToString() + "\' " + amount.ToString() + " Voucher");

            issueMore.AssertOk();

            return(0);
        }
예제 #3
0
        //post user - return true if user created. userType - 11 for consumer & 21 for reseller
        public async Task <DTOuser> postUser(string fName, string lName, string userName, string email, string contactNum, string userPass, int userType, string IDnumber)
        {
            user tmp = new user();

            tmp.userFirstName = fName;
            tmp.userLastName  = lName;
            //email is taken return empty user object before changes to db made
            if (await isUsernameTaken(userName))
            {
                tmp.userFirstName = null;
                tmp.userLastName  = null;
                tmp.userName      = "******";
                return(new DTOuser(tmp));
            }
            else
            {
                tmp.userName = userName;
            }

            if (await isEmailTaken(email))
            {
                tmp.userFirstName = null;
                tmp.userLastName  = null;
                tmp.userEmail     = "-1";
                return(new DTOuser(tmp));
            }
            else
            {
                tmp.userEmail = email;
            }

            tmp.userContactNumber = contactNum;
            tmp.userPassword      = encryptPass(userPass);
            tmp.userIsActive      = true;
            tmp.userType          = userType;
            if (userType == 11) //user is consumer - to be validated by admin
            {
                tmp.userActivationType = "Pending";
            }
            else if (userType == 21) //user is reseller - verified through NF staff
            {
                tmp.userActivationType = "verified";
            }
            else //user is neither consumer or reseller and should be flagged
            {
                tmp.userActivationType = "None";
            }
            tmp.IDnumber              = IDnumber;
            tmp.IdDocumentPath        = null;
            tmp.IdDocumentLastUpdated = DateTime.Now;


            db.users.Add(tmp);
            await db.SaveChangesAsync();

            MUserController tmpBCUser = new MUserController(tmp.User_ID); //create new user

            tmpBCUser = await tmpBCUser.init();                           //initializing user will set users blockchain address.

            tmp.blockchainAddress = tmpBCUser.propertyUserAddress();

            return(new DTOuser(tmp));
        }
예제 #4
0
 public MResellerController(int resellerUserID)
 {
     //client = new MultiChainClient("188.166.170.248", 6492, false, "multichainrpc", "AYBR44NDe7VdSWXHJCrR2i2xhCcnByorzHy6f6vaczTd", "NanoFinBlockChain");
     client = new MultiChainClient("188.166.170.248", 2748, false, "multichainrpc", "7yPU3yrroGZp4WAgrL2cD9JDe7WbwwiUmLps3PPmPPde", "NanoFinBlockchain");
     user   = new MUserController(resellerUserID, client);
 }
예제 #5
0
 public MAdminController(int consumerUserID)
 {
     client = new MultiChainClient("188.166.170.248", 2748, false, "multichainrpc", "7yPU3yrroGZp4WAgrL2cD9JDe7WbwwiUmLps3PPmPPde", "NanoFinBlockchain");
     user   = new MUserController(consumerUserID, client);
 }