async Task <string> GetItemPrice(string itemNumber)
        {
            string     result = "";
            mbsContext mb     = new mbsContext();

            try
            {
                Schedule msr =
                    await mb.Schedule.SingleAsync(b => b.ItemNum == itemNumber);

                if (msr.Benefit85 > 0)
                {
                    result =
                        $"MBS rate for the item number {msr.ItemNum} is ${msr.ScheduleFee}.\nYou will get back 85% of the amount, which is ${msr.Benefit85}.\n" +
                        $"Type info if you want the description of the item";;
                }
                else
                {
                    result =
                        $"MBS rate for the item number {msr.ItemNum} is ${msr.Benefit100}.\nYou will get back 100% of the amount, which is ${msr.Benefit100}.\n" +
                        $"Type info if you want the description of the item";
                }
            }
            catch (Exception e)
            {
                result =
                    "I am extremely sorry but I couldn't find any information about your desired MBS item number";
            }


            return(result);
        }
        /// <summary>
        /// Quote is fetched from db because of the response time limitation.
        /// Check cronjob folder for the cronjob that fetches and save prices automatically
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public string OshcGetQuote(DflowWebhookRequest request)
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var bq    = new BaseQuote();
            var cover = "";

            bq.duration = (int)(request.QueryResult.Parameters.Duration.Value ?? 0);
            if (request.QueryResult.Parameters.Duration.DurationDuration == "year")
            {
                bq.duration = bq.duration * 12;
            }
            var child = request.QueryResult.Parameters.Child.ToLower();
            var adult = request.QueryResult.Parameters.Partner.ToLower();

            if (child == "no" && adult == "no")
            {
                cover = "Single";
            }
            else if (child == "no" && adult == "yes")
            {
                cover = "Couple";
            }
            else if (child == "yes" && adult == "yes")
            {
                cover = "Family";
            }
            else if (child == "yes" && adult == "no")
            {
                cover = "Single Parent";
            }

            string model = "";

            Console.WriteLine($"Sending to Handler: {stopwatch.Elapsed.ToString()} has elapsed");
            mbsContext mbs = new mbsContext();

            try
            {
                OshcQuote quote = mbs.OshcQuote.Where(e => (e.Covertype == cover) && (e.Duration == bq.duration)).OrderByDescending(a => a.Date)
                                  .Select(p => p).FirstOrDefault();;
                Console.WriteLine($"OP class: {stopwatch.Elapsed.ToString()} has elapsed");
                model = $"You will need a {cover} cover.\n" +
                        $"For {bq.duration} months, this is the quote I have fetched:\n" +
                        $"1. Allianz OSHC: ${quote.Allianz}AUD \n" +
                        $"2. Medibank OSHC: ${quote.Medibank}AUD \n" +
                        $"3. Nib OSHC: ${quote.Nib}AUD \n" +
                        $"4. AHM OSHC: ${quote.Ahm}AUD \n" +
                        $"**This quote was fetched on {quote.Date.ToString("g", new CultureInfo("en-AU"))} AEST. It will be updated on {quote.Date.AddDays(1).ToString("d", new CultureInfo("en-AU"))} at 6:00 AM AEST";
                stopwatch.Stop();
            }
            catch (Exception e)
            {
                model = "Sorry, but something went wrong. Please try later";
            }

            return(model);
        }
        async Task <string> GetItemDetails(string itemNumber)
        {
            string     result = "";
            mbsContext mb     = new mbsContext();

            try
            {
                Schedule msr =
                    await mb.Schedule.SingleAsync(b => b.ItemNum == itemNumber);

                result = $"This is the description I have found in MBS for item number {msr.ItemNum}:\n"
                         + msr.Description.Replace(":", ":\n")
                         + "Type fee to see the scheduled fee of this item";
                result = Regex.Replace(result, @"; \(", "\n ");
            }
            catch (Exception e)
            {
                result =
                    "I am extremely sorry but I couldn't find any information about your desired MBS item number";
            }


            return(result);
        }