/// <summary> /// Inserts a new customer record in database. /// </summary> public CreateCustomerResponse CreateCustomer(long hostId, CreateCustomerRequest value) { CreateCustomerResponse result = new CreateCustomerResponse(); long newCustomerId = 0; //Generate address WalletServices walletServices = new WalletServices(); string customerAddress = walletServices.GenerateWalletAddress(); using (var context = new AnnoDBContext()) { //Insert customer to database Customer customer = new Customer() { host_id = hostId, ref_id = value.ReferenceId, address = customerAddress, record_status = RecordStatuses.Live, created_date = DateTime.UtcNow }; context.Customer.Add(customer); context.SaveChanges(); //Get the Id of the newly created customer newCustomerId = customer.customer_id; } //Create customer wallet walletServices.SaveWallet(newCustomerId, WalletOwnerTypes.Customer, customerAddress); //Commit to blockchain IdentityServices identityService = new IdentityServices(); ContractApi blockchainContract = new ContractApi(); blockchainContract.CreateCustomer(identityService.AddressOf(IdentityServices.AddressTypes.Host, hostId), customerAddress, value.ReferenceId); //TODO: For demo purpose, give 1000 ANN tokens to new customers walletServices.Transfer(Config.OwnerAddress, customerAddress, 1000, null, "Demo"); //Commit to blockchain blockchainContract.TransferFrom(Config.OwnerAddress, customerAddress, 1000); result.WalletAddress = customerAddress; result.WalletBalance = 1000; return(result); }
/// <summary> /// Inserts a new host record in database. /// </summary> public void CreateHost(CreateHostRequest value, out string newAPIKey) { long newHostId = 0; //Generate address WalletServices walletServices = new WalletServices(); string hostAddress = walletServices.GenerateWalletAddress(); using (var context = new AnnoDBContext()) { //Insert host to database var newHost = new Host() { name = value.Name, address = hostAddress, record_status = RecordStatuses.Live, created_date = DateTime.UtcNow }; context.Host.Add(newHost); context.SaveChanges(); //Get the ID of the newly created host newHostId = newHost.host_id; //Generate new API key newAPIKey = Guid.NewGuid().ToString().Replace("-", ""); //Insert into api_keys table context.ApiKey.Add(new ApiKey() { host_id = newHostId, api_key = newAPIKey, record_status = RecordStatuses.Live, created_date = DateTime.UtcNow }); context.SaveChanges(); //Create host wallet WalletServices walletService = new WalletServices(); walletService.SaveWallet(newHostId, WalletOwnerTypes.Host, hostAddress); } //Commit to blockchain ContractApi blockchainContract = new ContractApi(); blockchainContract.CreateHost(hostAddress, value.Name); }