//this one returns a single quote.
        //the type of quote is indicate in the options parameters
        //public async Task DoOperationAsync()
        public async Task <QuoteCube> ReturnASingleQuote(OptionsSingleQuote optionsSingleQuote)
        {
            QuoteCube quoteCube = new QuoteCube();

            if (optionsSingleQuote.enumSourceOfData == Enums.EnumSourceOfData.DataBaseInMemory)
            {
                //get quote from memory.
                quoteCube = await ReturnQuoteFromMemory(optionsSingleQuote);
            }
            else if (optionsSingleQuote.enumSourceOfData == Enums.EnumSourceOfData.DataBaseInContext)
            {
                if (optionsSingleQuote.bloggingContext == null)
                {
                    quoteCube.DetailsAboutOperation = "db context is null";
                    quoteCube.OperationSuccessful   = false;

                    return(quoteCube);
                }
                //get quote from database context
                quoteCube = await ReturnQuoteFromDatabase(optionsSingleQuote);
            }
            else
            {
                quoteCube.DetailsAboutOperation = "optionsSingleQuote contains unknown data source.";
                quoteCube.OperationSuccessful   = false;
            }

            return(quoteCube);
        }
示例#2
0
        public async Task TestIReturnSingleQuoteRandomAsync()
        {
            IReturnSingleQuote returnSingleQuote  = new ReturnSingleQuote();
            OptionsSingleQuote optionsSingleQuote = new OptionsSingleQuote();

            //settign options
            //source is memory.
            optionsSingleQuote.enumSourceOfData = RandomStuffGeneratorPrivate.Enums.EnumSourceOfData.DataBaseInMemory;
            //quote is random
            optionsSingleQuote.RandomQuote = true;

            QuoteCube quoteCube = await returnSingleQuote.ReturnASingleQuote(optionsSingleQuote);

            var actual   = quoteCube.OperationSuccessful;
            var expected = true;

            Assert.Equal(expected, actual);
        }
示例#3
0
        public async Task TestIReturnSingleQuoteRandomKnownIdentifierAsync()
        {
            IReturnSingleQuote returnSingleQuote  = new ReturnSingleQuote();
            OptionsSingleQuote optionsSingleQuote = new OptionsSingleQuote();

            //settign options
            //source is memory.
            optionsSingleQuote.enumSourceOfData = RandomStuffGeneratorPrivate.Enums.EnumSourceOfData.DataBaseInMemory;
            //quote is specific
            optionsSingleQuote.RandomQuote = false;
            //provide identifier
            optionsSingleQuote.QuoteIdentifierCompadre = "1";

            QuoteCube quoteCube = await returnSingleQuote.ReturnASingleQuote(optionsSingleQuote);

            var actual   = quoteCube.OperationSuccessful;
            var expected = true;

            Assert.Equal(expected, actual);
        }
        public async Task <ActionResult <QuoteCube> > GetASingleQuoteAsync()
        {
            var tempQuoteCube = new QuoteCube();
            IReturnSingleQuote returnSingleQuote  = new ReturnSingleQuote();
            OptionsSingleQuote optionsSingleQuote = new OptionsSingleQuote();

            //setting options
            optionsSingleQuote.enumSourceOfData = EnumSourceOfData.DataBaseInContext;
            //quote is random
            optionsSingleQuote.RandomQuote = true;
            //set the context.
            optionsSingleQuote.bloggingContext = _context;

            tempQuoteCube = await returnSingleQuote.ReturnASingleQuote(optionsSingleQuote);

            //add the general response
            var generalAPIResponse = new GeneralAPIResponse();

            generalAPIResponse.dateTimeOfResponse = DateTime.Now;
            tempQuoteCube.generalAPIResponse      = generalAPIResponse;

            return(tempQuoteCube);
        }
        private async Task <QuoteCube> ReturnQuoteFromDatabase(OptionsSingleQuote optionsSingleQuote)
        {
            QuoteCube quoteCube = new QuoteCube();
            OptionsCollectionOfQuotes optionsCollectionOfQuotes = new OptionsCollectionOfQuotes();
            IQuoteCubeCollection      quoteCubeCollection       = new ReturnQuoteCubeCollection();

            //now, look at options, if it is random, pick any one.
            //TODO - both the if and else have some common statements.
            //perhaps we can merge and keep only the unique things.
            if (optionsSingleQuote.RandomQuote == true)
            {
                //set up collection options.

                optionsCollectionOfQuotes.enumSourceOfData = optionsSingleQuote.enumSourceOfData;
                optionsCollectionOfQuotes.bloggingContext  = optionsSingleQuote.bloggingContext;

                var TempCubeCollection = await quoteCubeCollection.GetQuoteCubeCollection(optionsCollectionOfQuotes);

                if (TempCubeCollection.OperationSuccessful == false)
                {
                    quoteCube.DetailsAboutOperation = "There was a problem getting the source collection";
                    quoteCube.OperationSuccessful   = false;
                }
                else
                {
                    //our collection is good.
                    try
                    {
                        //lets pick a random quote.
                        // Instantiate random number generator using system-supplied value as seed.
                        var rand = new Random();
                        var quoteRandomNumber = rand.Next(TempCubeCollection.numberOfQuotes);
                        quoteCube = TempCubeCollection.quoteCubes[quoteRandomNumber];
                    }
                    catch (Exception e)
                    {
                        quoteCube.DetailsAboutOperation = "Exception Error " + e.ToString();
                        quoteCube.OperationSuccessful   = false;
                    }
                }
            }
            //if it is specific, see if it is there in the list.
            else
            {
                if (String.IsNullOrEmpty(optionsSingleQuote.QuoteIdentifierCompadre) == true)
                {
                    quoteCube.DetailsAboutOperation = "QuoteIdentifierCompadre is missing or empty";
                    quoteCube.OperationSuccessful   = false;
                }
                else
                {
                    //set up collection options.

                    optionsCollectionOfQuotes.enumSourceOfData = optionsSingleQuote.enumSourceOfData;
                    optionsCollectionOfQuotes.bloggingContext  = optionsSingleQuote.bloggingContext;

                    var TempCubeCollection = await quoteCubeCollection.GetQuoteCubeCollection(optionsCollectionOfQuotes);

                    if (TempCubeCollection.OperationSuccessful == false)
                    {
                        quoteCube.DetailsAboutOperation = "There was a problem getting the source collection";
                        quoteCube.OperationSuccessful   = false;
                    }
                    else
                    {
                        //our collection is good.
                        try
                        {
                            //lets pick a specific quote
                            var tempquoteCube = TempCubeCollection.quoteCubes.Select(x => x).Where(x => x.QuoteIdentifierCompadre == optionsSingleQuote.QuoteIdentifierCompadre).First();
                            if (tempquoteCube == null)
                            {
                                quoteCube.DetailsAboutOperation = "No quote with " + optionsSingleQuote.QuoteIdentifierCompadre + "exists in our system";
                                quoteCube.OperationSuccessful   = false;
                            }
                            else
                            {
                                quoteCube = tempquoteCube;
                            }
                        }
                        catch (Exception e)
                        {
                            quoteCube.DetailsAboutOperation = "Exception Error " + e.ToString();
                            quoteCube.OperationSuccessful   = false;
                        }
                    }
                }
            }

            return(quoteCube);
        }