public async Task <(bool, string)> Create(RentContractDataViewModel contractVM) { var success = true; var msg = string.Empty; var contract = ContractVMToApiModel(contractVM); using (TransactionScope tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { contract.ID = Guid.NewGuid().ToString(); // Create Domain in DB. var domainContract = new Domain.Contract { Id = contract.ID, ProviderId = contract.contractProvider.ID, ClientId = contract.contractClient.ID }; contractsRepo.Insert(domainContract); await contractsRepo.SaveAsync(); // Create Blockchain data. (success, msg) = await bcContracts.Create(contract); if (success) { tx.Complete(); } } return(success, msg); }
public async Task <(bool, string)> Amend(RentContractDataViewModel newContractVM) { //newData = new NewDataModel //{ // durationDays = aContract.durationDays + 10, // expiryDate = aContract.expiryDate.AddDays(10), // status = RentContractStatus.SIGNED, // content = "The content of the contract has been amended again." //} var newContract = ContractVMToApiModel(newContractVM); var originalContract = await GetByIdAsync(newContract.ID); var aTxAmendContract = new TxAmendContractModel { contract = originalContract, newData = new NewDataModel { ID = newContract.ID, expiryDate = newContract.expiryDate, durationDays = newContract.durationDays, status = newContract.status, content = newContract.content, } }; (var success, var message) = await bcContractTx.Create(aTxAmendContract); return(success, message); }
private RentContractModel ContractVMToApiModel(RentContractDataViewModel vm) { return(new RentContractModel { ID = vm.ID, contractProvider = GetAdminParticipantById(vm.ContractProvider.ID), contractClient = GetClientParticipantById(vm.ContractClient.ID), expiryDate = vm.ExpiryDate, durationDays = vm.DurationDays, status = vm.Status, content = vm.Content, }); }