public async Task <MResellerController> init() { user = await user.init(); nanoFinAddr = await MUtilityClass.getAddress(client, 1); burnAddress = await MUtilityClass.getBurnAddress(client); return(this); }
//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); }
//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)); }