public static Reference ToEntity(this ReferenceContract referenceContract) { return(new Reference { Id = referenceContract.Id, Company = referenceContract.Company, ImageUrl = referenceContract.ImageUrl, Name = referenceContract.Name, Occupation = referenceContract.Occupation, QuoteText = referenceContract.QuoteText }); }
public PensionFundInfo GetPensionFundInfo(string pensionFundContractAddress) { PensionFund pensionFund = GetByContract(pensionFundContractAddress); Dictionary <int, double> assetReference = new Dictionary <int, double>(); List <Asset> assets = new List <Asset>(); foreach (PensionFundReferenceContract reference in pensionFund.Option.PensionFundContract.PensionFundReferenceContract) { ReferenceContract contract = ReferenceContractBusiness.Get(reference.ReferenceType); assets.Add(new Asset() { Address = contract.Address, Name = contract.Description, Percentage = reference.Percentage }); IEnumerable <ReferenceValue> values = contract.ReferenceValue.OrderBy(c => c.Period); double baseValue = values.ElementAt(0).Value; foreach (ReferenceValue value in values) { if (!assetReference.ContainsKey(value.Period)) { assetReference[value.Period] = 0; } assetReference[value.Period] += (value.Value / baseValue) * reference.Percentage / 100; } } return(new PensionFundInfo() { PensionFundName = pensionFund.Name, EmployeeName = pensionFund.Option.Company.Employee.Name, CompanyName = pensionFund.Option.Company.Name, PensionFundAddress = pensionFund.Option.Address, EmployeeAddress = pensionFund.Option.Company.Employee.Address, CompanyAddress = pensionFund.Option.Company.Address, PensionFundFee = pensionFund.Option.Fee, PensionFundLatePenalty = pensionFund.Option.LatePenalty, AuctusFee = PensionFundContractBusiness.AUCTUS_FEE, ContractAddress = pensionFund.Option.PensionFundContract.Address, ContractTransactionHash = pensionFund.Option.PensionFundContract.TransactionHash, ContractBlockNumber = pensionFund.Option.PensionFundContract.BlockNumber.Value, AssetsReferenceValue = assetReference.Select(c => new AssetsReferenceValue() { Period = c.Key, Value = c.Value }), Assets = assets, EmployeeBaseContribution = pensionFund.Option.Company.Employee.Salary * pensionFund.Option.Company.Employee.Contribution / 100, CompanyBaseContribution = pensionFund.Option.Company.Employee.Salary * pensionFund.Option.Company.BonusRate / 100 * Math.Min(pensionFund.Option.Company.MaxSalaryBonusRate, pensionFund.Option.Company.Employee.Contribution) / 100 }); }
private JsonResult GetJsonFromReferenceContract(ReferenceContract referenceContract) { return(Json(new { Address = referenceContract.Address, Name = referenceContract.Description, Values = referenceContract.ReferenceValue.Select(c => new double[] { c.Period, c.Value }) })); }
public FutureTransactionPricer(ILogger logger, ICoreCache cache, string nameSpace, DateTime tradeDate, ExchangeContractTypeEnum futuresType, IBusinessCalendar settlementCalendar, FutureTransaction futureFpML, string basePartyReference, Boolean forecastRateInterpolation) { logger.LogInfo("FuturesType set. Commence to build a future transaction."); if (futureFpML == null) { return; } Multiplier = 1.0m; BuyerReference = futureFpML.buyerPartyReference.href; PaymentCurrencies = new List <string> { futureFpML.unitPrice.currency.Value }; SellerReference = futureFpML.sellerPartyReference.href; BasePartyBuyer = basePartyReference == futureFpML.buyerPartyReference.href; if (!BasePartyBuyer) { Multiplier = -1.0m; } ForecastRateInterpolation = forecastRateInterpolation; SettlementCalendar = settlementCalendar; FuturesType = futuresType; ReferenceContract = futureFpML.future.id; var futuresCode = ReferenceContract.Split('-')[2]; NumberOfContracts = Convert.ToInt16(futureFpML.numberOfUnits); PurchasePrice = MoneyHelper.GetAmount(futureFpML.unitPrice.amount, futureFpML.unitPrice.currency.Value); var exchangeMIC = futureFpML.future.exchangeId; FuturesCurveName = CurveNameHelpers.GetExchangeTradedCurveName(futureFpML.unitPrice.currency.Value, exchangeMIC.Value, futuresCode); DiscountCurveName = CurveNameHelpers.GetDiscountCurveName(futureFpML.unitPrice.currency, true); FuturesTypeInfo = new FutureNodeStruct(); var exchangeMICData = InstrumentDataHelper.CreateEquityExchangeKey(nameSpace, exchangeMIC.Value); var exchangeData = cache.LoadItem <ExchangeConfigData>(exchangeMICData); if (exchangeData?.Data is ExchangeConfigData) { Exchange = (ExchangeConfigData)exchangeData.Data; FuturesTypeInfo.SpotDate = Exchange.SettlementDate; } if (futureFpML.future != null) { if (SettlementCalendar == null) { SettlementCalendar = BusinessCenterHelper.ToBusinessCalendar(cache, FuturesTypeInfo.SpotDate .businessCenters, nameSpace); } var future = XmlSerializerHelper.Clone(futureFpML.future); FuturesTypeInfo.Future = future; if (FuturesTypeInfo.SpotDate != null) { SettlementDate = GetSettlementDate(tradeDate, SettlementCalendar, FuturesTypeInfo.SpotDate); } //Instantiate the priceable future. NamedValueSet namedValueSet = PriceableAssetFactory.BuildPropertiesForAssets(nameSpace, FuturesTypeInfo.Future.id, tradeDate); var asset = AssetHelper.Parse(FuturesTypeInfo.Future.id, 0.0m, 0.0m); UnderlyingFuture = PriceableAssetFactory.Create(logger, cache, nameSpace, asset.Second, namedValueSet, null, null) as IPriceableFuturesAssetController; if (UnderlyingFuture != null) { RiskMaturityDate = UnderlyingFuture.GetRiskMaturityDate(); MaturityDate = RiskMaturityDate; LastTradeDate = UnderlyingFuture.LastTradeDate; } if (!PaymentCurrencies.Contains(futureFpML.future.currency.Value)) { PaymentCurrencies.Add(futureFpML.future.currency.Value); } logger.LogInfo("Futures transaction has been successfully created."); } else { logger.LogInfo("Futures type data not available."); } //Add payments like the settlement price if (!PurchasePrice.amountSpecified) { return; } var amount = PurchasePrice.amount * NumberOfContracts / 100; var settlementPayment = PaymentHelper.Create("FuturesSettlemetAmount", BuyerReference, SellerReference, amount, SettlementDate); AdditionalPayments = PriceableInstrumentsFactory.CreatePriceablePayments(basePartyReference, new[] { settlementPayment }, SettlementCalendar); if (!PaymentCurrencies.Contains(settlementPayment.paymentAmount.currency.Value)) { PaymentCurrencies.Add(settlementPayment.paymentAmount.currency.Value); } }
public void Post(ReferenceContract referenceContract) { _uow.ReferenceRepository.CreateOrUpdate(referenceContract.ToEntity()); }