//[ValidateAntiForgeryToken]
        public IActionResult FindSpm(float supportPercentage, DateTime startDate, DateTime endDate)
        {
            //  IEnumerable<UkRetailOriginalSales> inputDataset = _dbContext.UkRetailOriginalSales.Select(a => a.CustomerID , a. ).ToList();
            var customerOrders = _dbContext.UkRetailOriginalSales
                                 .Where(a => a.InvoiceDate.Date >= startDate.Date && a.InvoiceDate.Date <= endDate.Date &&
                                        a.CustomerID != null && a.CustomerID < 13000 && a.Quantity > 0 &&
                                        string.Compare(a.StockCode, "a") == -1)
                                 .Select(a => new { a.CustomerID, Year = a.InvoiceDate.Year, Month = a.InvoiceDate.Month, a.StockCode })
                                 //.OrderBy(a => new { a.Year, a.Month })
                                 .GroupBy(a => new { a.CustomerID }).AsQueryable();
            //.GroupBy(a => new { a.CustomerID, a.Year, a.Month });

            List <List <List <string> > > transformedSequences = new List <List <List <string> > >();

            foreach (var groupCustomer in customerOrders)
            {
                var customerMonthlyorder       = groupCustomer.GroupBy(a => new { a.Year, a.Month });
                List <List <string> > sequence = new List <List <string> >();
                foreach (var groupCustomerMontlyOrder in customerMonthlyorder)
                {
                    List <string> itemset = new List <string>();
                    foreach (var order in groupCustomerMontlyOrder)
                    {
                        itemset.Add(order.StockCode);
                    }
                    sequence.Add(itemset);
                }
                transformedSequences.Add(sequence);
            }

            int CountUsers = transformedSequences.Count();
            int support    = Convert.ToInt32(Math.Floor((supportPercentage / 100) * CountUsers));
            GSP gsp        = new GSP();
            List <SequenceSupport> frequentSequences = gsp.FindSequentialPatterns(transformedSequences, support);

            List <SequenceSupportPercentage> frequentSequencesPercentages = new List <SequenceSupportPercentage>();

            foreach (SequenceSupport frequentSequence in frequentSequences)
            {
                SequenceSupportPercentage frequentSequencesPercentage = new SequenceSupportPercentage();
                frequentSequencesPercentage.sequence          = frequentSequence.sequence;
                frequentSequencesPercentage.support           = frequentSequence.support;
                frequentSequencesPercentage.supportPercentage = ((float)frequentSequence.support / transformedSequences.Count()) * 100;
                frequentSequencesPercentages.Add(frequentSequencesPercentage);
            }

            // SavetoDatabase(frequentSequencesPercentages.Where(a => a.sequence.Count()>1).ToList());
            SavetoDatabase(frequentSequencesPercentages.ToList());
            //return View(frequentSequences.Where(a => a.sequence.Count>=1));
            return(View(frequentSequencesPercentages));
        }
        public IActionResult FindSpm(string inputData, int support)
        {
            List <List <List <string> > > transformedSequences = new List <List <List <string> > >();
            // List<List<string>> inputSequence = new List<List<string>>();
            // List<string> itemList = new List<List<string>>();

            List <string> sequenceList = new List <string>();

            sequenceList = inputData.Split("\r\n").Where(r => (r != "") && (r != " ")).ToList();
            //sequenceList = inputData.Split('<','>').Where(r => (r != "") && (r != "\r\n")).ToList();
            foreach (string sequence in sequenceList)
            {
                List <string> sequenceItemlists = sequence.Split(' ').ToList();

                List <List <string> > inputSequence = new List <List <string> >();
                foreach (string sequenceItemlist in sequenceItemlists)
                {
                    List <string> itemlist = sequenceItemlist.Split(',').ToList();
                    inputSequence.Add(itemlist);
                }
                transformedSequences.Add(inputSequence);
            }

            GSP gsp = new GSP();
            List <SequenceSupport>           frequentSequences            = gsp.FindSequentialPatterns(transformedSequences, support);
            List <SequenceSupportPercentage> frequentSequencesPercentages = new List <SequenceSupportPercentage>();

            foreach (SequenceSupport frequentSequence in frequentSequences)
            {
                SequenceSupportPercentage frequentSequencesPercentage = new SequenceSupportPercentage();
                frequentSequencesPercentage.sequence          = frequentSequence.sequence;
                frequentSequencesPercentage.support           = frequentSequence.support;
                frequentSequencesPercentage.supportPercentage = ((float)frequentSequence.support / transformedSequences.Count()) * 100;
                frequentSequencesPercentages.Add(frequentSequencesPercentage);
            }

            return(View(frequentSequencesPercentages));
        }