/// <summary> /// Converts web service format of the option leg of the RFQ into the GUI format. /// </summary> /// <param name="serviceOptionLeg"> the web service formatted RFQ's option leg to be converted.</param> /// <returns> the GUI formatted of the RFQ's option leg.</returns> /// <exception cref="ArgumentNullException"> thrown if the web service formatted RFQ's option leg is null.</exception> /// <exception cref="InvalidDataException"> thrown if maturity date or side are invalid and cannot be converted.</exception> private OptionDetailImpl CreateRequestForQuoteLegFromServiceOptionLeg(optionDetailImpl serviceOptionLeg) { if (serviceOptionLeg == null) { throw new ArgumentNullException("serviceOptionLeg"); } DateTime maturityDateResult; if (!DateTime.TryParse(serviceOptionLeg.maturityDate, out maturityDateResult)) { throw new InvalidDataException("maturityDate"); } DateTime tradeDateResult; if (!DateTime.TryParse(serviceOptionLeg.tradeDate, out tradeDateResult)) { throw new InvalidDataException("tradeDate"); } SideEnum sideResult; if (!Enum.TryParse(serviceOptionLeg.side, true, out sideResult)) { throw new InvalidDataException("side"); } return(new OptionDetailImpl() { IsCall = serviceOptionLeg.isCall, IsEuropean = serviceOptionLeg.isEuropean, LegId = serviceOptionLeg.legId, Delta = serviceOptionLeg.delta, Gamma = serviceOptionLeg.gamma, Vega = serviceOptionLeg.vega, Theta = serviceOptionLeg.theta, Rho = serviceOptionLeg.rho, PremiumAmount = serviceOptionLeg.premium, MaturityDate = maturityDateResult, TradeDate = tradeDateResult, Description = serviceOptionLeg.description, Quantity = serviceOptionLeg.quantity, DayCountConvention = serviceOptionLeg.dayCountConvention, DaysToExpiry = serviceOptionLeg.daysToExpiry, UnderlyingPrice = serviceOptionLeg.underlyingPrice, Volatility = serviceOptionLeg.volatility, InterestRate = serviceOptionLeg.interestRate, RIC = serviceOptionLeg.underlyingRIC, Strike = serviceOptionLeg.strike, Side = sideResult }); }
/// <summary> /// Converts GUI formatted RFQ into the web service format. /// </summary> /// <param name="sourceRequestForQuote"> the GUI formatted RFQ to be converted.</param> /// <returns> the web service formatted RFQ.</returns> /// <exception cref="ArgumentNullException"> thrown if the GUI formatted RFQ is null.</exception> private requestDetailImpl CreateServiceRequestFromRequestForQuote(IRequestForQuote sourceRequestForQuote) { if (sourceRequestForQuote == null) { throw new ArgumentNullException("sourceRequestForQuote"); } var serviceRequestToCreate = new requestDetailImpl(); if (sourceRequestForQuote.Legs != null && sourceRequestForQuote.Legs.Count > 0) { var legsArray = new optionDetailImpl[sourceRequestForQuote.Legs.Count]; var legCount = 0; foreach (var leg in sourceRequestForQuote.Legs) { legsArray[legCount++] = CreateServiceOptionLegFromRequestForQuoteLeg(leg); } serviceRequestToCreate.legs = new optionDetailListImpl() { optionDetailList = legsArray }; } serviceRequestToCreate.bookCode = sourceRequestForQuote.BookCode; serviceRequestToCreate.request = sourceRequestForQuote.Request; serviceRequestToCreate.identifier = sourceRequestForQuote.Identifier; serviceRequestToCreate.clientId = sourceRequestForQuote.Client.Identifier; serviceRequestToCreate.isOTC = sourceRequestForQuote.IsOTC; serviceRequestToCreate.status = sourceRequestForQuote.Status.ToString(); //6 serviceRequestToCreate.tradeDate = sourceRequestForQuote.TradeDate.ToShortDateString(); serviceRequestToCreate.expiryDate = sourceRequestForQuote.ExpiryDate.ToShortDateString(); //8 serviceRequestToCreate.dayCountConvention = sourceRequestForQuote.DayCountConvention; serviceRequestToCreate.lotSize = sourceRequestForQuote.LotSize; serviceRequestToCreate.multiplier = sourceRequestForQuote.Multiplier; serviceRequestToCreate.contracts = sourceRequestForQuote.Contracts; serviceRequestToCreate.quantity = sourceRequestForQuote.Quantity; //12 serviceRequestToCreate.notionalMillions = sourceRequestForQuote.NotionalMillions; serviceRequestToCreate.notionalFXRate = sourceRequestForQuote.NotionalFXRate; serviceRequestToCreate.notionalCurrency = sourceRequestForQuote.NotionalCurrency.ToString(); //15 serviceRequestToCreate.delta = sourceRequestForQuote.Delta; serviceRequestToCreate.gamma = sourceRequestForQuote.Gamma; serviceRequestToCreate.vega = sourceRequestForQuote.Vega; serviceRequestToCreate.theta = sourceRequestForQuote.Theta; serviceRequestToCreate.rho = sourceRequestForQuote.Rho; //20 serviceRequestToCreate.deltaNotional = sourceRequestForQuote.DeltaNotional; serviceRequestToCreate.gammaNotional = sourceRequestForQuote.GammaNotional; serviceRequestToCreate.vegaNotional = sourceRequestForQuote.VegaNotional; serviceRequestToCreate.thetaNotional = sourceRequestForQuote.ThetaNotional; serviceRequestToCreate.rhoNotional = sourceRequestForQuote.RhoNotional; //25 serviceRequestToCreate.deltaShares = sourceRequestForQuote.DeltaShares; serviceRequestToCreate.gammaShares = sourceRequestForQuote.GammaShares; serviceRequestToCreate.vegaShares = sourceRequestForQuote.VegaShares; serviceRequestToCreate.thetaShares = sourceRequestForQuote.ThetaShares; serviceRequestToCreate.rhoShares = sourceRequestForQuote.RhoShares; //30 serviceRequestToCreate.askFinalAmount = sourceRequestForQuote.AskFinalAmount; serviceRequestToCreate.askFinalPercentage = sourceRequestForQuote.AskFinalPercentage; serviceRequestToCreate.askImpliedVol = sourceRequestForQuote.AskImpliedVol; serviceRequestToCreate.askPremiumAmount = sourceRequestForQuote.AskPremiumAmount; serviceRequestToCreate.askPremiumPercentage = sourceRequestForQuote.AskPremiumPercentage; //35 serviceRequestToCreate.bidFinalAmount = sourceRequestForQuote.BidFinalAmount; serviceRequestToCreate.bidFinalPercentage = sourceRequestForQuote.BidFinalPercentage; serviceRequestToCreate.bidImpliedVol = sourceRequestForQuote.BidImpliedVol; serviceRequestToCreate.bidPremiumAmount = sourceRequestForQuote.BidPremiumAmount; serviceRequestToCreate.bidPremiumPercentage = sourceRequestForQuote.BidPremiumPercentage; //40 serviceRequestToCreate.premiumAmount = sourceRequestForQuote.PremiumAmount; serviceRequestToCreate.premiumPercentage = sourceRequestForQuote.PremiumPercentage; serviceRequestToCreate.impliedVol = sourceRequestForQuote.ImpliedVol; //43 serviceRequestToCreate.salesCreditAmount = sourceRequestForQuote.SalesCreditAmount; serviceRequestToCreate.salesCreditPercentage = sourceRequestForQuote.SalesCreditPercentage; serviceRequestToCreate.salesCreditCurrency = sourceRequestForQuote.SalesCreditCurrency.ToString(); serviceRequestToCreate.salesCreditFXRate = sourceRequestForQuote.SalesCreditFXRate; //47 serviceRequestToCreate.premiumSettlementCurrency = sourceRequestForQuote.PremiumSettlementCurrency.ToString(); serviceRequestToCreate.premiumSettlementDate = sourceRequestForQuote.PremiumSettlementDate.ToShortDateString(); serviceRequestToCreate.premiumSettlementDaysOverride = sourceRequestForQuote.PremiumSettlementDaysOverride; serviceRequestToCreate.premiumSettlementFXRate = sourceRequestForQuote.PremiumSettlementFXRate; //51 serviceRequestToCreate.salesComment = sourceRequestForQuote.SalesComment; serviceRequestToCreate.traderComment = sourceRequestForQuote.TraderComment; serviceRequestToCreate.clientComment = sourceRequestForQuote.ClientComment; //54 serviceRequestToCreate.hedgePrice = sourceRequestForQuote.HedgePrice; serviceRequestToCreate.hedgeType = sourceRequestForQuote.HedgeType.ToString(); serviceRequestToCreate.totalPremium = sourceRequestForQuote.TotalPremium; serviceRequestToCreate.pickedUpBy = sourceRequestForQuote.PickedUpBy; //58 return(serviceRequestToCreate); }