コード例 #1
0
ファイル: PensionFundBusiness.cs プロジェクト: ocg1/Demo
        private PensionFund GetFromDatabase(string pensionFundContractAddress)
        {
            PensionFund pensionFund = Data.GetByContract(pensionFundContractAddress);

            if (pensionFund == null || pensionFund.Option.Company == null || pensionFund.Option.Company.Employee == null)
            {
                throw new ArgumentException("Pension fund cannot be found.");
            }

            pensionFund.Option.PensionFundContract.PensionFundReferenceContract = PensionFundReferenceContractBusiness.List(pensionFund.Option.PensionFundContract.TransactionHash);
            if (!pensionFund.Option.PensionFundContract.PensionFundReferenceContract.Any())
            {
                throw new ArgumentException("Reference contract cannot be found.");
            }

            pensionFund.Option.Company.BonusDistribution = BonusDistributionBusiness.List(pensionFund.Option.Company.Address);
            if (!pensionFund.Option.Company.BonusDistribution.Any())
            {
                throw new ArgumentException("Bonus distribution cannot be found.");
            }

            return(pensionFund);
        }
コード例 #2
0
ファイル: PensionFundBusiness.cs プロジェクト: ocg1/Demo
        public PensionFundContract CreateCompleteEntry(Fund fund, Company company, Employee employee)
        {
            Validate(fund, company, employee);
            var assetDictionary     = GetAssetAllocationDictionary(fund);
            var pensionFund         = PensionFundBusiness.Create(fund.Name);
            var pensionFundWallet   = WalletBusiness.Create();
            var pensionFundOption   = PensionFundOptionBusiness.Create(pensionFundWallet.Address, fund.Fee, fund.LatePaymentFee, pensionFund.Id);
            var companyWallet       = WalletBusiness.Create();
            var domainCompany       = CompanyBusiness.Create(companyWallet.Address, company.Name, company.BonusFee, company.MaxBonusFee, pensionFundOption.Address, company.VestingRules);
            var employeeWallet      = WalletBusiness.Create();
            var domainEmployee      = EmployeeBusiness.Create(employeeWallet.Address, employee.Name, employee.Salary, employee.ContributionPercentage, domainCompany.Address);
            var pensionFundContract = PensionFundContractBusiness.Create(pensionFundOption.Address, domainCompany.Address, domainEmployee.Address,
                                                                         pensionFundOption.Fee, pensionFundOption.LatePenalty, domainCompany.MaxSalaryBonusRate, domainEmployee.Contribution,
                                                                         domainCompany.BonusRate, domainEmployee.Salary,
                                                                         assetDictionary,
                                                                         company.VestingRules.ToDictionary(bonus => bonus.Period, bonus => bonus.Percentage));

            foreach (var asset in assetDictionary)
            {
                PensionFundReferenceContractBusiness.Create(pensionFundContract.TransactionHash, asset.Key, asset.Value);
            }

            return(pensionFundContract);
        }