public SecurityPrice SaveSecurityPrice(ISession session, SecurityPrice newSecurityPrice)
        {
            if (session == null)
            {
                throw new ArgumentNullException(nameof(session));
            }

            if (newSecurityPrice == null)
            {
                throw new ArgumentNullException(nameof(newSecurityPrice));
            }

            Entities.SecurityPrice existingSecurityPrice = securityPriceRepository.GetSecurityPriceBySymbol(session, newSecurityPrice.Security.Symbol, newSecurityPrice.NavDate);

            if (existingSecurityPrice == null)
            {
                securityPriceRepository.SaveOrUpdate(session, newSecurityPrice);

                return(newSecurityPrice);
            }
            else
            {
                existingSecurityPrice.OpenPrice  = newSecurityPrice.OpenPrice;
                existingSecurityPrice.ClosePrice = newSecurityPrice.ClosePrice;

                securityPriceRepository.SaveOrUpdate(session, existingSecurityPrice);

                return(existingSecurityPrice);
            }
        }
        private void PublishSecurityPrice(IModel channel, Entities.SecurityPrice securityPrice, string requestMessageId)
        {
            var securityPriceResponse = securityPriceResponseBuilder.BuildSecurityPriceResponse(securityPrice);

            securityPriceResponse.MessageId = requestMessageId;

            channel.PublishMessageOnQueue(securityPriceResponse, Queues.SecurityPriceResponseQueue);
        }