public void BeginEdit() { if (log.IsDebugEnabled) { log.Debug("Beginning edit, creating from backup of currently selected request."); } backupOfRequestForQuote = SelectedRequestForQuote.Clone(SelectedRequestForQuote.Identifier); }
public List <OptionDetailImpl> ParseOptionTypes(string request, IRequestForQuote parent) { if (String.IsNullOrEmpty(request)) { throw new ArgumentException("request"); } if (parent == null) { throw new ArgumentNullException("parent"); } var optionTypes = new List <OptionDetailImpl>(); var optionDetailReg = new Regex(@"^(?<side>[+-])?(?<quantity>[1-9])?(?<type>[CP]{1})+"); var optionLegReg = new Regex(@"^(?<leg>[+-]?[1-9]?[CP]{1})+"); var matchedLegs = optionLegReg.Match(request); var legCount = 0; while (matchedLegs.Success) { var leg = matchedLegs.Groups["leg"].ToString(); var matchedDetails = optionDetailReg.Match(leg); var side = matchedDetails.Groups["side"].Value == "-" ? SideEnum.SELL : SideEnum.BUY; var quantity = matchedDetails.Groups["quantity"].Value == "" ? 1 : Convert.ToInt32(matchedDetails.Groups["quantity"].Value); var isCall = matchedDetails.Groups["type"].Value == "C"; optionTypes.Add(new OptionDetailImpl() { Side = side, Quantity = quantity, IsCall = isCall, LegId = ++legCount, ParentRequest = parent }); if (log.IsDebugEnabled) { log.Debug("leg #" + optionTypes.Count + ": " + leg + ", leg side: " + side + ", quantity: " + quantity + ", Type: " + (isCall ? "CALL" : "PUT")); } request = request.Replace(leg, ""); matchedLegs = optionLegReg.Match(request); } return(optionTypes); }
public List <OptionDetailImpl> ParseRequest(string request, IRequestForQuote parent) { if (String.IsNullOrEmpty(request)) { throw new ArgumentException("request"); } if (parent == null) { throw new ArgumentNullException("parent"); } var partsOfTheRequest = request.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); var optionLegs = ParseOptionTypes(partsOfTheRequest[0], parent); ParseOptionStrikes(partsOfTheRequest[1], optionLegs); ParseOptionMaturityDates(partsOfTheRequest[2], optionLegs); ParseOptionUnderlyings(partsOfTheRequest[3], optionLegs); return(optionLegs); }
/// <summary> /// Updates an RFQ via the web service. /// </summary> /// <param name="requestToUpdate"> the rfq to update.</param> /// <returns> true if the RFQ is updated successfully, false otherwise.</returns> /// <exception cref="ArgumentNullException"> thrown if requestToSave is null.</exception> public bool UpdateRequest(IRequestForQuote requestToUpdate) { if (requestToUpdate == null) { throw new ArgumentNullException("requestToUpdate"); } try { return(requestControllerProxy.update(CreateServiceRequestFromRequestForQuote(requestToUpdate), configManager.CurrentUser)); } catch (FaultException fe) { log.Error("Failed to update request. Exception thrown: ", fe); } catch (EndpointNotFoundException enfe) { log.Error("Failed to update request. Exception thrown: ", enfe); } return(false); }
/// <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); }
public void CopyMembers(IRequestForQuote fromSourceRequest) { Status = fromSourceRequest.Status; Client = fromSourceRequest.Client; TradeDate = fromSourceRequest.TradeDate; ExpiryDate = fromSourceRequest.ExpiryDate; DayCountConvention = fromSourceRequest.DayCountConvention; Request = fromSourceRequest.Request; IsOTC = fromSourceRequest.IsOTC; Delta = fromSourceRequest.Delta; Gamma = fromSourceRequest.Gamma; Vega = fromSourceRequest.Vega; Theta = fromSourceRequest.Theta; Rho = fromSourceRequest.Rho; ImpliedVol = fromSourceRequest.ImpliedVol; PremiumAmount = fromSourceRequest.PremiumAmount; PremiumPercentage = fromSourceRequest.PremiumPercentage; Identifier = fromSourceRequest.Identifier; PickedUpBy = fromSourceRequest.PickedUpBy; BookCode = fromSourceRequest.BookCode; PremiumSettlementCurrency = fromSourceRequest.PremiumSettlementCurrency; PremiumSettlementDate = fromSourceRequest.PremiumSettlementDate; PremiumSettlementDaysOverride = fromSourceRequest.PremiumSettlementDaysOverride; PremiumSettlementFXRate = fromSourceRequest.PremiumSettlementFXRate; SalesCreditAmount = fromSourceRequest.SalesCreditAmount; SalesCreditPercentage = fromSourceRequest.SalesCreditPercentage; SalesCreditCurrency = fromSourceRequest.SalesCreditCurrency; SalesCreditFXRate = fromSourceRequest.SalesCreditFXRate; Multiplier = fromSourceRequest.Multiplier; Contracts = fromSourceRequest.Contracts; LotSize = fromSourceRequest.LotSize; NotionalMillions = fromSourceRequest.NotionalMillions; NotionalCurrency = fromSourceRequest.NotionalCurrency; NotionalFXRate = fromSourceRequest.NotionalFXRate; BidImpliedVol = fromSourceRequest.BidImpliedVol; BidPremiumPercentage = fromSourceRequest.BidPremiumPercentage; BidPremiumAmount = fromSourceRequest.BidPremiumAmount; BidFinalPercentage = fromSourceRequest.BidFinalPercentage; BidFinalAmount = fromSourceRequest.BidFinalAmount; AskImpliedVol = fromSourceRequest.AskImpliedVol; AskPremiumPercentage = fromSourceRequest.AskPremiumPercentage; AskPremiumAmount = fromSourceRequest.AskPremiumAmount; AskFinalPercentage = fromSourceRequest.AskFinalPercentage; AskFinalAmount = fromSourceRequest.AskFinalAmount; SalesComment = fromSourceRequest.SalesComment; TraderComment = fromSourceRequest.TraderComment; ClientComment = fromSourceRequest.ClientComment; HedgePrice = fromSourceRequest.HedgePrice; HedgeType = fromSourceRequest.HedgeType; if (fromSourceRequest.Legs != null) { Legs = new List <OptionDetailImpl>(); foreach (var leg in fromSourceRequest.Legs) { Legs.Add(leg.CloneOptionDetails()); } } // TODO verify if (Messages != null) { Messages = new List <ChatMessageImpl>(fromSourceRequest.Messages); } }
public RequestForQuoteDetailsViewModel(IOptionRequestPricer optionRequestPricer, IRequestForQuote requestForQuote, IClientManager clientManager, IBookManager bookManager, IEventAggregator eventAggregator, IUnderlyingManager underlyingManager, IChatServiceManager chatServiceManager, IOptionRequestPersistanceManager optionRequestPersistanceManager, IConfigurationManager configManager, IUserManager userManager) { if (optionRequestPricer == null) { throw new ArgumentNullException("optionRequestPricer"); } if (clientManager == null) { throw new ArgumentNullException("clientManager"); } if (bookManager == null) { throw new ArgumentNullException("bookManager"); } if (userManager == null) { throw new ArgumentNullException("userManager"); } if (underlyingManager == null) { throw new ArgumentNullException("underlyingManager"); } if (chatServiceManager == null) { throw new ArgumentNullException("chatServiceManager"); } if (eventAggregator == null) { throw new ArgumentNullException("eventAggregator"); } if (optionRequestPersistanceManager == null) { throw new ArgumentNullException("optionRequestPersistanceManager"); } if (configManager == null) { throw new ArgumentNullException("configManager"); } if (requestForQuote == null) { throw new ArgumentNullException("requestForQuote"); } this.optionRequestPricer = optionRequestPricer; this.clientManager = clientManager; this.bookManager = bookManager; this.userManager = userManager; this.underlyingManager = underlyingManager; this.chatServiceManager = chatServiceManager; this.eventAggregator = eventAggregator; this.optionRequestPersistanceManager = optionRequestPersistanceManager; this.configManager = configManager; SelectedRequestForQuote = requestForQuote; InitializeCommands(); InitializeCollections(); InitializeEventSubscriptions(); }