示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 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,
     });
 }