public async Task <IActionResult> BarChartCategory(int categoryId)
        {
            var user = await _userManager.GetUserAsync(User);

            int nrUserTests       = _context.Tests.Where(t => t.UserId == user.Id).Where(c => c.CategoryId == categoryId).Count();
            int nrUserPassedTests = _context.Tests.Where(t => t.UserId == user.Id).Where(t => t.Passed == true).Where(c => c.CategoryId == categoryId).Count();


            BarChartDataSet dataset = new BarChartDataSet()
            {
                data            = new int[] { nrUserTests, nrUserPassedTests },
                backgroundColor = new string[] { "#7195A3",
                                                 "#8FB258" },
                borderColor = new string[] { "#7195A3",
                                             "#8FB258" },
                borderWidth = 2
            };

            BarChartData data = new BarChartData()
            {
                labels   = new string[] { "Numarul de examene", "Numarul de teste trecute" },
                datasets = new BarChartDataSet[] { dataset }
            };

            return(Json(data));
        }
        public async Task <JsonResult> ProfileChart()
        {
            var user = await _userManager.GetUserAsync(User);

            int nrUserTests       = _context.Tests.Where(t => t.UserId == user.Id).Count();
            int nrUserPassedTests = _context.Tests.Where(t => t.UserId == user.Id).Where(t => t.Passed == true).Count();


            BarChartDataSet dataset = new BarChartDataSet()
            {
                data            = new int[] { nrUserPassedTests, nrUserTests - nrUserPassedTests },
                backgroundColor = new string[] { "#8FB258",
                                                 "#E14B3B" },
                borderColor = new string[] { "#41924B",
                                             "#BF381A" },
                borderWidth = 1
            };

            PieChartData data = new PieChartData()
            {
                labels   = new string[] { "Numarul de teste trecute", "Numarul de teste picate" },
                datasets = new BarChartDataSet[] { dataset }
            };

            return(Json(data));
        }
        public JsonResult GetShipmentStatusYearlyChart(string Selectyear)
        {
            var cs  = "Host=qa-datalake-pg.cluster-ctg0nvlybzpq.ap-southeast-1.rds.amazonaws.com; Username =liluna_datalake; Password =Liluna@SCGL; Database =pd_datalake";
            var con = new NpgsqlConnection(cs);

            con.Open();
            var sql             = "select * from dom.\"Reporting_YearlySummary_ShipmentStatus\"";
            var cmd             = new NpgsqlCommand(sql, con);
            NpgsqlDataReader dr = cmd.ExecuteReader();

            List <string> lsLabel   = new List <string>();
            List <double> lsSMTotal = new List <double>();

            List <string> lsbgcolorSMTotal = new List <string>();
            List <string> lsbdcolorSMTotal = new List <string>();

            string c1 = "rgba(255, 99, 132, 0.2)";
            string c2 = "rgba(54, 162, 235, 0.2)";
            string c3 = "rgba(255, 206, 86, 0.2)";
            string c4 = "rgba(75, 192, 192, 0.2)";
            string c5 = "rgba(153, 102, 255, 0.2)";
            string c6 = "rgba(255, 159, 64, 0.2)";

            while (dr.Read())
            {
                lsLabel.Add(dr[2].ToString());
                if (!string.IsNullOrEmpty(dr[1].ToString()))
                {
                    lsSMTotal.Add(Convert.ToInt32(dr[1].ToString()));
                }

                //set color
                lsbgcolorSMTotal.Add(c1);
                lsbdcolorSMTotal.Add(c1);
            }

            //Mock the data
            BarChartDataSet datasetSMTotal = new BarChartDataSet()
            {
                type            = "bar",
                label           = "All Shipment",
                data            = lsSMTotal.ToArray(),
                backgroundColor = lsbgcolorSMTotal.ToArray(),
                borderColor     = lsbdcolorSMTotal.ToArray(),
                borderWidth     = 1
            };

            BarChartData data = new BarChartData()
            {
                labels   = lsLabel.ToArray(),
                datasets = new BarChartDataSet[] { datasetSMTotal }
            };

            var jsonResult = Json(data);

            jsonResult.MaxJsonLength = int.MaxValue;

            return(jsonResult);
        }
Exemplo n.º 4
0
        public ActionResult GetChartData(string DataKey, int lineIdx)
        {
            var chartTargetModel = Session[SessionKeyConfig.ChartTargetModel] as ChartTargetModel;
            var dataLabel        = chartTargetModel.ChartYAxisLables[0][DataKey];
            //var data = new List<ChartXYData>();
            //for (int i = 0; i < chartTargetModel.Labels.Count; i++)
            //{
            //    data.Add(new ChartXYData() { x = chartTargetModel.Labels[i], y = chartTargetModel.ChartYAxisValues[0][DataKey][i] });
            //}
            var data    = chartTargetModel.ChartYAxisValues[0][DataKey];
            var idx     = lineIdx % ChartTargetModel.ChartColors.Count;
            var key     = DataKey;
            var dataset = new BarChartDataSet()
            {
                label                = dataLabel,
                backgroundColor      = ChartTargetModel.ChartColors[idx],
                borderColor          = ChartTargetModel.ChartColors[idx],
                pointBorderColor     = ChartTargetModel.ChartColors[idx],
                pointBackgroundColor = ChartTargetModel.ChartColors[idx],
                pointBorderWidth     = 1,
                yAxisID              = string.Format("y-axis-{0}", 0),
                data        = data.ToArray(),
                lineTension = 0,
                fill        = false,
                spanGaps    = true,
                DataKey     = DataKey
            };

            var dMax = data.Max();

            if (dMax > 10)
            {
                var len      = Math.Floor(dMax.Value).ToString().Length - 1;
                var div      = Convert.ToInt32(Math.Pow(10, len));
                var ticksMax = (Math.Ceiling(dMax.Value / div) * div);
                if (ticksMax == dMax)
                {
                    dMax = Convert.ToDecimal(Math.Ceiling(dMax.Value / div) * div) * 1.25m;
                }
                else
                {
                    dMax = ticksMax;
                }
            }
            else
            {
                dMax = Math.Ceiling(dMax.Value * 1.25m);
            }
            dMax = Convert.ToDecimal(Math.Max(1, dMax.Value));

            var r = new { dataset = dataset, ticksMax = dMax };

            return(Json(r));
        }
Exemplo n.º 5
0
        public JsonResult GetSpendingChartData()
        {
            //Setting up (Instantiating) data structures
            var barChartVM         = new BarChartVM();
            var actualChartDataSet = new BarChartDataSet();
            var targetChartDataSet = new BarChartDataSet();


            var hhId = User.Identity.GetHouseholdId();
            //Select first seven of the latest
            var categories = db.Categories.Where(c => c.HouseholdId == hhId && c.DebitCredit == false).ToList();  //False 'DebitCredit' indicates a Debit

            foreach (var cat in categories)
            {
                var tTypeId     = db.TransactionTypes.FirstOrDefault(t => t.Type == "Withdrawal").Id;
                var totalActual = cat.CategoryItems.SelectMany(c => c.Transactions).Where(t => t.TransactionTypeId == tTypeId).Where(t => t.Created.Month == DateTime.Now.Month).Select(t => t.Amount).Sum();
                var totalTarget = cat.TargetAmount;

                //Adding actual/target amounts to datasets
                actualChartDataSet.data.Add(totalActual);
                targetChartDataSet.data.Add(totalTarget);

                //Adding chart labels to ViewModel
                barChartVM.labels.Add(cat.Name);
            }


            //Adding 'Actual Spending' data to the open dataset
            actualChartDataSet.label                = "Actual Spending";
            actualChartDataSet.backgroundColor      = "rgba(60,141,188,0.9)";
            actualChartDataSet.borderColor          = "rgba(60,141,188,0.8)";
            actualChartDataSet.pointRadius          = false;
            actualChartDataSet.pointColor           = "#208cff";
            actualChartDataSet.pointStrokeColor     = "#208cff";
            actualChartDataSet.pointHighlightFill   = "#208cff";
            actualChartDataSet.pointHighlightStroke = "#208cff";

            //Adding 'Target Spending' data to the closed dataset
            targetChartDataSet.label                = "Target Spending";
            targetChartDataSet.backgroundColor      = "rgba(210, 214, 222, 1)";
            targetChartDataSet.borderColor          = "rgba(210, 214, 222, 1)";
            targetChartDataSet.pointRadius          = false;
            targetChartDataSet.pointColor           = "rgba(210, 214, 222, 1)";
            targetChartDataSet.pointStrokeColor     = "#c1c7d1";
            targetChartDataSet.pointHighlightFill   = "#fff";
            targetChartDataSet.pointHighlightStroke = "rgba(220,220,220,1)";

            //Adding datasets to ViewModel
            barChartVM.datasets.Add(actualChartDataSet);
            barChartVM.datasets.Add(targetChartDataSet);

            //Sending all data via ViewModel to the View
            return(Json(barChartVM, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 6
0
        /*
         * EXPORT FOR BAR
         */
        public BarChartData ExportBarData(Widget.Charts.Models.BarChart.BarChartData bubbleChartData)
        {
            var dataSetItems = new List <BarChartDataSet>();

            foreach (var item in bubbleChartData.DataSets)
            {
                var entryOriginal = item.IF_GetValues().Select(obj => new BarChartDataEntry(obj.GetXPosition(), obj.GetYPosition()));
                var dataSet       = new BarChartDataSet(entryOriginal.ToArray(), item.IF_GetLabel());
                OnIntializeDataSetBar(item, dataSet);
                dataSetItems.Add(dataSet);
            }
            var data = new BarChartData(dataSetItems.ToArray());

            return(data);
        }
        BarChartData GenerateBarData()
        {
            List <BarChartDataEntry> greenEntries  = new List <BarChartDataEntry>();
            List <BarChartDataEntry> blueEntries   = new List <BarChartDataEntry>();
            List <BarChartDataEntry> yellowEntries = new List <BarChartDataEntry>();
            List <BarChartDataEntry> orangeEntries = new List <BarChartDataEntry>();
            List <BarChartDataEntry> redEntries    = new List <BarChartDataEntry>();

            //Green
            greenEntries.Add(new BarChartDataEntry(0, 8f));
            greenEntries.Add(new BarChartDataEntry(1, 3));
            greenEntries.Add(new BarChartDataEntry(2, 1));
            greenEntries.Add(new BarChartDataEntry(3, -1));

            BarChartDataSet set1 = new BarChartDataSet(greenEntries.ToArray(), string.Empty);

            set1.DrawValuesEnabled = false;
            set1.SetColor(UIColor.Green);
            set1.ValueTextColor = UIColor.White;
            set1.ValueFont      = UIFont.SystemFontOfSize(15);
            //Blue
            blueEntries.Add(new BarChartDataEntry(3, -1f));
            blueEntries.Add(new BarChartDataEntry(4, -7f));
            blueEntries.Add(new BarChartDataEntry(5, -2f));
            blueEntries.Add(new BarChartDataEntry(6, -3f));
            blueEntries.Add(new BarChartDataEntry(7, -4f));

            BarChartDataSet set2 = new BarChartDataSet(blueEntries.ToArray(), string.Empty);

            set2.DrawValuesEnabled = false;
            set2.SetColor(UIColor.Red);
            set2.ValueTextColor = UIColor.White;
            set2.ValueFont      = UIFont.SystemFontOfSize(15);
            //Yellow

            List <IInterfaceChartDataSet> dataSets = new List <IInterfaceChartDataSet>();

            dataSets.Add(set1);
            dataSets.Add(set2);
            BarChartData barData = new BarChartData(dataSets.ToArray());

            barData.BarWidth = 0.7f;

            return(barData);
        }
Exemplo n.º 8
0
        protected override void OnInitializeChartData()
        {
            base.OnInitializeChartData();
            if (OriginalChartView != null && SupportChartView != null && SupportChartView.ChartData != null)
            {
                var dataSetItems = new List <BarChartDataSet>();

                foreach (var item in SupportChartView.ChartData.DataSets)
                {
                    var entryOriginal = item.IF_GetValues().Select(obj => new BarChartDataEntry(obj.GetXPosition(), obj.GetYPosition()));
                    var dataSet       = new BarChartDataSet(entryOriginal.ToArray(), item.IF_GetLabel());
                    OnIntializeDataSet(item, dataSet);
                    dataSetItems.Add(dataSet);
                }
                var data = new BarChartData(dataSetItems.ToArray());
                OriginalChartView.Data = data;

                OriginalChartView.ReloadInputViews();
                OriginalChartView.SetNeedsDisplay();
            }
        }
        private void InitializeChart()
        {
            if (supportChart != null && supportChart.ChartData != null && chartOriginal != null)
            {
                SupportChart.OnInitializeChart(supportChart, chartOriginal);

                var data         = supportChart.ChartData;
                var dataSetItems = new List <BarChartDataSet>();

                foreach (var itemChild in data.IF_GetDataSet())
                {
                    var             entryOriginal = itemChild.IF_GetEntry().Select(item => new iOSCharts.BarChartDataEntry(item.GetXPosition(), item.GetYPosition()));
                    BarChartDataSet lineDataSet   = new BarChartDataSet(entryOriginal.ToArray(), itemChild.IF_GetTitle());
                    lineDataSet.SetColor(itemChild.IF_GetDataColor().ToUIColor());
                    lineDataSet.DrawValuesEnabled = (itemChild.IF_GetDrawValue());
                    dataSetItems.Add(lineDataSet);
                }

                BarChartData lineData = new BarChartData(dataSetItems.ToArray());
                chartOriginal.Data = lineData;
            }
        }
Exemplo n.º 10
0
        public ActionResult InitChart(FormCollection formData)
        {
            var ChartAxis = new List <ChartAxi>();

            for (int i = 0; i < (formData.Count - 5) / 2; i++)
            {
                var index = Convert.ToInt32(formData[i * 2]);
                var key   = string.Format("{0}", formData[i * 2 + 1]);
                if (key.Equals("0"))
                {
                    continue;
                }
                ChartAxis.Add(new ChartAxi()
                {
                    Index = index, // Convert.ToInt32(formData[i * 2]),
                    Key   = key    // formData[i * 2 + 1]
                });
            }
            var chartType  = formData["ChartType"];
            var chartType1 = formData["ChartType1"];
            var chartType2 = formData["ChartType2"];

            if (string.IsNullOrEmpty(chartType1))
            {
                chartType1 = chartType;
            }

            if (string.IsNullOrEmpty(chartType2))
            {
                chartType2 = chartType;
            }
            if (ChartAxis.Count == 1)
            {
                chartType = chartType1;
            }
            else
            {
                if (chartType1.Equals("line") && chartType2.Equals("line"))
                {
                    chartType = "line";
                }
                else
                {
                    chartType = "bar";
                }
            }
            var charTypes = new[] { chartType1, chartType2 };

            var scaleMax = formData["Max"];
            var scaleMin = formData["Min"];


            var barConfig        = new BarConfig();
            var chartTargetModel = Session[SessionKeyConfig.ChartTargetModel] as ChartTargetModel;

            if (chartTargetModel == null)
            {
                barConfig.options.zoom.enabled = false;
                barConfig.options.zoom.drag    = false;
                return(Json(barConfig));
            }
            var axisLength = ChartAxis.Count;

            barConfig.type = chartType;// chartTargetModel.ChartTypes[0];
            if (!string.IsNullOrEmpty(chartType) && chartTargetModel.ChartTypes.Contains(chartType))
            {
                barConfig.type = chartType;
            }
            barConfig.data          = new BarChartData();
            barConfig.data.labels   = chartTargetModel.Labels.ToArray();
            barConfig.data.datasets = new BarChartDataSet[axisLength];
            for (int i = 0; i < axisLength; i++)
            {
                var key         = ChartAxis[i].Key;
                var dataset     = new BarChartDataSet();
                var yAxisLables = chartTargetModel.ChartYAxisLables[i];
                var listData    = chartTargetModel.ChartYAxisValues[i];

                dataset.type                 = charTypes[i % charTypes.Length];
                dataset.label                = yAxisLables[key];
                dataset.backgroundColor      = ChartTargetModel.ChartColors[i];
                dataset.borderColor          = ChartTargetModel.ChartColors[i];
                dataset.pointBorderColor     = ChartTargetModel.ChartColors[i];
                dataset.pointBackgroundColor = ChartTargetModel.ChartColors[i];
                dataset.pointBorderWidth     = 1;
                dataset.yAxisID              = string.Format("y-axis-{0}", i + 1);
                dataset.data                 = listData[key].ToArray();
                dataset.lineTension          = 0;
                dataset.fill                 = false;
                dataset.DataKey              = key;
                dataset.spanGaps             = true;
                barConfig.data.datasets[i]   = dataset;
            }
            if (chartType1 == "bar" || chartType2 == "line")
            {
                var dts = barConfig.data.datasets.Reverse().ToArray();
                barConfig.data.datasets = dts;
            }

            barConfig.options = new Options();

            barConfig.options.responsive             = true;
            barConfig.options.hoverMode              = "index";
            barConfig.options.hoverAnimationDuration = 400;
            barConfig.options.stacked = false;
            barConfig.options.title   = new Title()
            {
                display = false,
                text    = chartTargetModel.Title
            };

            barConfig.options.scales = new Scales();
            if (barConfig.type.ToLower().Equals("bar"))
            {
                barConfig.options.scales.xAxes = new XAxe[1];
                var time = new XAxeTime()
                {
                    unit           = chartTargetModel.XAxesTimeUnit,
                    unitStepSize   = chartTargetModel.XAxesUnitStepSize,
                    displayFormats = chartTargetModel.XAxesDisplayFormats
                };
                barConfig.options.scales.xAxes[0] = new XAxe()
                {
                    type = "category",
                    time = time,
                };
            }
            else if (!string.IsNullOrEmpty(chartTargetModel.XAxesType) && !string.IsNullOrEmpty(chartTargetModel.XAxesTimeUnit))
            {
                barConfig.options.scales.xAxes = new XAxe[1];
                var time = new XAxeTime()
                {
                    unit           = chartTargetModel.XAxesTimeUnit,
                    unitStepSize   = chartTargetModel.XAxesUnitStepSize,
                    displayFormats = chartTargetModel.XAxesDisplayFormats
                };
                barConfig.options.scales.xAxes[0] = new XAxe()
                {
                    type = chartTargetModel.XAxesType,
                    time = time,
                };
            }

            barConfig.options.scales.yAxes = new YAxe[axisLength];
            for (int i = 0; i < axisLength; i++)
            {
                var key = ChartAxis[i].Key;
                //var showAxis=(key.Equals("0") ? false : true);
                var yAxisLables = chartTargetModel.ChartYAxisLables[i];
                barConfig.options.scales.yAxes[i] = new YAxe();

                barConfig.options.scales.yAxes[i].type       = "linear"; // only linear but allow scale type registration. This allows extensions to exist solely for log scale for instance
                barConfig.options.scales.yAxes[i].display    = true;
                barConfig.options.scales.yAxes[i].scaleLabel = new ScaleLabel()
                {
                    display     = true,
                    labelString = yAxisLables[key]
                };
                if (i % 2 == 0)
                {
                    barConfig.options.scales.yAxes[i].position = "left";
                }
                else
                {
                    barConfig.options.scales.yAxes[i].position = "right";
                }
                barConfig.options.scales.yAxes[i].id        = string.Format("y-axis-{0}", i + 1);
                barConfig.options.scales.yAxes[i].gridLines = new GridLines()
                {
                    drawOnChartArea = i == 0
                };
                var listData = chartTargetModel.ChartYAxisValues[i];
                var dMax     = listData[key].Max();
                var dMin     = listData[key].Min();
                if (dMax > 10)
                {
                    var len      = Math.Floor(dMax.Value).ToString().Length - 1;
                    var div      = Convert.ToInt32(Math.Pow(10, len));
                    var ticksMax = (Math.Ceiling(dMax.Value / div) * div);
                    if (ticksMax == dMax)
                    {
                        dMax = Convert.ToDecimal(Math.Ceiling(dMax.Value / div) * div) * 1.25m;
                    }
                    else
                    {
                        dMax = ticksMax;
                    }
                }
                else
                {
                    dMax = Math.Ceiling(dMax.Value * 1.25m);
                }
                dMax = Convert.ToDecimal(Math.Max(1, dMax.Value));
                barConfig.options.scales.yAxes[i].ticks = new YAxesTicks()
                {
                    max = dMax.Value,
                    min = Math.Min(0, Math.Ceiling(dMin.Value * 1.1m))
                };
            }
            barConfig.options.zoom = new Zoom();
            if (!chartTargetModel.ZoomEnable)
            {
                barConfig.options.zoom.enabled = false;
                barConfig.options.zoom.drag    = false;
            }
            else
            {
                barConfig.options.zoom.sensitivity = chartTargetModel.ZoomSensitivity;
                if (chartType.ToLower().Equals("bar"))
                {
                    barConfig.options.zoom.sensitivity = 0;
                }
            }
            var r = new { barConfig = barConfig, scaleMax = scaleMax, scaleMin = scaleMin };

            return(Json(r));
        }
        private void OnIntializeDataSetBar(UltimateXF.Widget.Charts.Models.BarChart.IBarDataSet source, BarChartDataSet original)
        {
            /*
             * Properties could not set
             * IF_GetStackSize
             * IF_GetEntryCountStacks
             */

            OnSettingsBarLineScatterCandleBubbleDataSet(source, original);

            if (source.IF_GetBarShadowColor().HasValue)
            {
                original.BarShadowColor = source.IF_GetBarShadowColor().Value.ToUIColor();
            }

            if (source.IF_GetBarBorderWidth().HasValue)
            {
                original.BarBorderWidth = source.IF_GetBarBorderWidth().Value;
            }

            if (source.IF_GetBarBorderColor().HasValue)
            {
                original.BarBorderColor = source.IF_GetBarBorderColor().Value.ToUIColor();
            }

            if (source.IF_GetHighLightAlpha().HasValue)
            {
                original.HighlightAlpha = source.IF_GetHighLightAlpha().Value;
            }

            if (source.IF_GetStackLabels() != null && source.IF_GetStackLabels().Count > 0)
            {
                original.StackLabels = (source.IF_GetStackLabels().ToArray());
            }
        }
Exemplo n.º 12
0
        public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
        {
            var resultCell = collectionView.DequeueReusableCell(ResultViewController.resultCellId, indexPath) as ResultCollectionViewCell;

            resultCell.BackgroundColor = UIColor.White;

            var reportDataSet = this.reportsDatasets[indexPath.Row];

            if (ReportType.Overall.Equals(reports[indexPath.Row]))
            {
                resultCell.sectionLabel.Text = reports[indexPath.Row].ToString();

                if (reportDataSet.totalVotes > 0)
                {
                    var dataEntries = new List <PieChartDataEntry>();
                    for (int i = 0; i < reportDataSet.dataSets[0].Count; i++)
                    {
                        if (Convert.ToInt32(reportDataSet.dataSets[0][i]) > 0)
                        {
                            dataEntries.Add(new PieChartDataEntry(reportDataSet.dataSets[0][i], reportDataSet.labels[i]));
                        }
                    }

                    var dataSet = new PieChartDataSet(dataEntries.ToArray(), "");

                    dataSet.ValueFormatter = new ChartDefaultValueFormatter(new NSNumberFormatter()
                    {
                        MinimumFractionDigits = 0
                    });
                    dataSet.SliceSpace = 2;
                    //dataSet.Colors = ChartColorTemplates.Joyful;
                    dataSet.Colors          = this.chartColors.ToArray();
                    dataSet.ValueTextColor  = UIColor.FromRGB(90, 89, 89);
                    dataSet.ValueLineColor  = UIColor.FromRGB(90, 89, 89);
                    dataSet.EntryLabelColor = UIColor.FromRGB(90, 89, 89);
                    dataSet.XValuePosition  = PieChartValuePosition.OutsideSlice;
                    dataSet.YValuePosition  = PieChartValuePosition.OutsideSlice;

                    resultCell.pieChartView.Data = new PieChartData(new PieChartDataSet[] { dataSet });
                }

                resultCell.pieChartView.AnimateWithXAxisDuration(1.4, ChartEasingOption.EaseOutBack);
                resultCell.pieChartView.ChartDescription.Text = "";
                var colorAttributes = new UIStringAttributes
                {
                    ForegroundColor = UIColor.FromRGB(90, 89, 89)
                };
                resultCell.pieChartView.CenterAttributedText = new NSAttributedString(string.Format("Total {0} votes", reportDataSet.totalVotes, colorAttributes));
                resultCell.pieChartView.Legend.Enabled       = false;
                resultCell.pieChartView.NoDataText           = "No results to show";

                resultCell.AddSubview(resultCell.pieChartView);

                resultCell.AddConstraints(NSLayoutConstraint.FromVisualFormat("H:|[v0]|", new NSLayoutFormatOptions(), "v0", resultCell.pieChartView));
                resultCell.AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|[v0(24)][v1]|", new NSLayoutFormatOptions(), "v0", resultCell.sectionLabel, "v1", resultCell.pieChartView));
            }
            else
            {
                resultCell.sectionLabel.Text = "By " + reports[indexPath.Row].ToString();

                resultCell.barChartView.Legend.Enabled             = true;
                resultCell.barChartView.Legend.HorizontalAlignment = ChartLegendHorizontalAlignment.Right;
                resultCell.barChartView.Legend.VerticalAlignment   = ChartLegendVerticalAlignment.Top;
                resultCell.barChartView.Legend.Orientation         = ChartLegendOrientation.Vertical;
                resultCell.barChartView.Legend.DrawInside          = true;
                resultCell.barChartView.Legend.YOffset             = 10.0f;
                resultCell.barChartView.Legend.XOffset             = 10.0f;
                resultCell.barChartView.Legend.YEntrySpace         = 0.0f;
                resultCell.barChartView.Legend.TextColor           = UIColor.FromRGB(90, 89, 89);

                resultCell.barChartView.XAxis.DrawGridLinesEnabled    = true;
                resultCell.barChartView.XAxis.LabelPosition           = XAxisLabelPosition.Bottom;
                resultCell.barChartView.XAxis.CenterAxisLabelsEnabled = true;
                resultCell.barChartView.XAxis.ValueFormatter          = new ChartIndexAxisValueFormatter(TranslateReportGroups(reportDataSet.groups.ToArray()));
                resultCell.barChartView.XAxis.Granularity             = 1;
                resultCell.barChartView.XAxis.LabelTextColor          = UIColor.FromRGB(90, 89, 89);
                resultCell.barChartView.XAxis.GridColor     = UIColor.FromRGB(90, 89, 89);
                resultCell.barChartView.XAxis.AxisLineColor = UIColor.FromRGB(90, 89, 89);

                resultCell.barChartView.LeftAxis.SpaceTop             = 0.35f;
                resultCell.barChartView.LeftAxis.AxisMinimum          = 0;
                resultCell.barChartView.LeftAxis.DrawGridLinesEnabled = false;
                resultCell.barChartView.LeftAxis.Granularity          = 1;
                resultCell.barChartView.LeftAxis.ValueFormatter       = new ChartDefaultAxisValueFormatter(new NSNumberFormatter()
                {
                    MinimumFractionDigits = 0
                });
                resultCell.barChartView.LeftAxis.LabelTextColor = UIColor.FromRGB(90, 89, 89);
                resultCell.barChartView.LeftAxis.GridColor      = UIColor.FromRGB(90, 89, 89);
                resultCell.barChartView.LeftAxis.AxisLineColor  = UIColor.FromRGB(90, 89, 89);
                resultCell.barChartView.LeftAxis.ZeroLineColor  = UIColor.FromRGB(90, 89, 89);

                resultCell.barChartView.RightAxis.Enabled = false;

                if (reportDataSet.totalVotes > 0)
                {
                    var groupCount   = reportDataSet.groups.Count;
                    var optionsCount = reportDataSet.labels.Count;

                    var dataEntriesList = new List <List <BarChartDataEntry> >();

                    for (int i = 0; i < optionsCount; i++)
                    {
                        var dataEntries = new List <BarChartDataEntry>();

                        for (int j = 0; j < groupCount; j++)
                        {
                            if (Convert.ToInt32(reportDataSet.dataSets[i][j]) > 0)
                            {
                                dataEntries.Add(new BarChartDataEntry(i, reportDataSet.dataSets[i][j]));
                            }
                        }

                        dataEntriesList.Add(dataEntries);
                    }

                    var chartDataSetList = new List <BarChartDataSet>();

                    var k = 0;

                    for (int i = 0; i < dataEntriesList.Count; i++)
                    {
                        var barChartDataSet = new BarChartDataSet(dataEntriesList[i].ToArray(), reportDataSet.labels[i]);

                        if (dataEntriesList[i].ToArray().Length > 0)
                        {
                            barChartDataSet.SetColor(this.chartColors[k++]);
                        }
                        else
                        {
                            barChartDataSet.SetColor(UIColor.Clear);
                        }

                        barChartDataSet.ValueFormatter = new ChartDefaultValueFormatter(new NSNumberFormatter()
                        {
                            MinimumFractionDigits = 0, ZeroSymbol = ""
                        });
                        barChartDataSet.ValueTextColor = UIColor.FromRGB(90, 89, 89);
                        barChartDataSet.BarBorderColor = UIColor.FromRGB(90, 89, 89);

                        chartDataSetList.Add(barChartDataSet);
                    }

                    var dataSets = chartDataSetList.ToArray();

                    var chartData = new BarChartData(dataSets);

                    var initialXValue = 0;

                    var groupSpace = 0.3;
                    var barSpace   = 0.05;
                    var barWidth   = (0.7 - (0.05 * optionsCount)) / optionsCount; // (barWidth + 0.05) * optionsCount + 0.3 = 1.00 -> interval per "group"

                    chartData.BarWidth = barWidth;
                    resultCell.barChartView.XAxis.AxisMinimum = initialXValue;
                    resultCell.barChartView.XAxis.AxisMaximum = initialXValue + chartData.GroupWidthWithGroupSpace(groupSpace, barSpace) * groupCount;

                    chartData.GroupBarsFromX(initialXValue, groupSpace, barSpace);

                    resultCell.barChartView.Data = chartData;
                }

                resultCell.barChartView.AnimateWithXAxisDuration(1.4, ChartEasingOption.Linear);
                resultCell.barChartView.ChartDescription.Text = "";
                resultCell.barChartView.NoDataText            = "No results to show";

                resultCell.AddSubview(resultCell.barChartView);

                resultCell.AddConstraints(NSLayoutConstraint.FromVisualFormat("H:|[v0]|", new NSLayoutFormatOptions(), "v0", resultCell.barChartView));
                resultCell.AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|[v0(24)][v1]|", new NSLayoutFormatOptions(), "v0", resultCell.sectionLabel, "v1", resultCell.barChartView));
            }

            return(resultCell);
        }
        public JsonResult GetLPC010_ShipmentStatusChart_ByType(string selectmonth, string selectday, string reporttype)
        {
            var cs  = "Host=qa-datalake-pg.cluster-ctg0nvlybzpq.ap-southeast-1.rds.amazonaws.com; Username=datalakero; Password=d@t@SCGL; Database=pd_datalake";
            var con = new NpgsqlConnection(cs);

            con.Open();
            NpgsqlCommand command = new NpgsqlCommand();

            command = con.CreateCommand();
            var sql = " select a.*, b.count, b.DC_Inside, b.DC_Outside, b.Transfer, b.HUB" +
                      " from ( " +
                      " SELECT date_part('day'::text, dates_in_month) AS date_part " +
                      " FROM generate_series(date_trunc('month'::text, now()) , date_trunc('month'::text, now()) + '1 mon'::interval - '1 day'::interval, '1 day'::interval) dates_in_month" +
                      " ) a" +
                      " left join (" +
                      " select tmp.groupdate" +
                      " , date_part('day'::text, tmp.groupdate) AS date_part" +
                      " , count(distinct tmp.load_id)" +
                      " , sum( case when tmp.type = 'DC_Inside' then 1 else 0 end) as DC_Inside" +
                      " , sum( case when tmp.type = 'DC_Outside' then 1 else 0 end) as DC_Outside" +
                      " , sum( case when tmp.type = 'HUB' then 1 else 0 end) as HUB" +
                      " , sum( case when tmp.type = 'Transfer' then 1 else 0 end) as Transfer" +
                      " from (" +
                      " SELECT DISTINCT ON (ll.load_id)" +
                      " ll.load_id AS load_id" +
                      " , date(ll.user_create_date) as groupdate" +
                      " , CASE" +
                      " WHEN lld.origin_code::text = ANY (ARRAY['1130000009'::character varying::text, '6140000022'::character varying::text]) THEN 'DC_Inside'::text" +
                      " WHEN lld.origin_code::text = ANY (ARRAY['1130000011'::character varying::text, '6140000023'::character varying::text]) THEN 'DC_Outside'::text" +
                      " WHEN lld.origin_code::text = ANY (ARRAY['3500000029'::character varying::text, '3520000017'::character varying::text, '3530000011'::character varying::text, '3570000020'::character varying::text, '3600000017'::character varying::text, '3650000011'::character varying::text, '3670000013'::character varying::text, '4300000035'::character varying::text, '4340000027'::character varying::text, '4400000029'::character varying::text, '4410000023'::character varying::text, '4450000022'::character varying::text, '4490000009'::character varying::text, '5800000025'::character varying::text, '5800000027'::character varying::text, '5830000005'::character varying::text, '5840000022'::character varying::text, '5900000024'::character varying::text]) THEN 'HUB'::text" +
                      " ELSE 'Transfer'::text" +
                      " END AS type" +
                      " FROM dom.scvmvc_tms_load_leg ll" +
                      " left JOIN dom.scvmvc_tms_load_leg_detail lld ON ll.load_id::text = lld.load_id::text" +
                      " where extract('month' from ll.user_create_date) = " + selectmonth +
                      " ) tmp" +
                      " group by tmp.groupdate, date_part('day'::text, tmp.groupdate)" +
                      ") b on a.date_part = b.date_part";

            command.CommandText = sql;
            command.Parameters.AddWithValue("@month", Convert.ToInt32(selectmonth));
            command.Parameters.AddWithValue("@day", Convert.ToInt32(selectday));
            NpgsqlDataReader dr = command.ExecuteReader();

            List <string> lsLabel      = new List <string>();
            List <double> lsConsoTotal = new List <double>();
            List <double> lsDC_Inside  = new List <double>();
            List <double> lsDC_Outside = new List <double>();
            List <double> lsHub        = new List <double>();
            List <double> lsTransfer   = new List <double>();

            List <string> lsbgcolorConsoTotal = new List <string>();
            List <string> lsbdcolorConsoTotal = new List <string>();
            List <string> lsbgcolorDC_Inside  = new List <string>();
            List <string> lsbdcolorDC_Inside  = new List <string>();
            List <string> lsbgcolorDC_Outside = new List <string>();
            List <string> lsbdcolorDC_Outside = new List <string>();
            List <string> lsbgcolorHub        = new List <string>();
            List <string> lsbdcolorHub        = new List <string>();
            List <string> lsbgcolorTransfer   = new List <string>();
            List <string> lsbdcolorTransfer   = new List <string>();

            string c1  = "rgba(255, 99, 132, 0.2)";
            string c2  = "rgba(54, 162, 235, 0.2)";
            string c3  = "rgba(255, 206, 86, 0.2)";
            string c4  = "rgba(75, 192, 192, 0.2)";
            string c5  = "rgba(153, 102, 255, 0.2)";
            string c6  = "rgba(255, 159, 64, 0.2)";
            string c7  = "rgb(12, 202, 142, 0.5)";
            string c8  = "rgb(255, 205, 86, 0.5)";
            string c9  = "rgb(255, 99, 132, 0.5)";
            string c10 = "rgb(54, 162, 235, 0.9)";
            string c11 = "rgb(51, 102, 0, 0.9)";

            while (dr.Read())
            {
                lsLabel.Add(dr[0].ToString());
                if (!string.IsNullOrEmpty(dr[1].ToString()))
                {
                    lsConsoTotal.Add(Convert.ToInt32(dr[1].ToString()));
                }
                else
                {
                    lsConsoTotal.Add(0);
                }
                if (!string.IsNullOrEmpty(dr[2].ToString()))
                {
                    lsDC_Inside.Add(Convert.ToInt32(dr[2]));
                }
                else
                {
                    lsDC_Inside.Add(0);
                }
                if (!string.IsNullOrEmpty(dr[3].ToString()))
                {
                    lsDC_Outside.Add(Convert.ToInt32(dr[3]));
                }
                else
                {
                    lsDC_Outside.Add(0);
                }
                if (!string.IsNullOrEmpty(dr[4].ToString()))
                {
                    lsTransfer.Add(Convert.ToInt32(dr[4]));
                }
                else
                {
                    lsTransfer.Add(0);
                }
                if (!string.IsNullOrEmpty(dr[5].ToString()))
                {
                    lsHub.Add(Convert.ToInt32(dr[5]));
                }
                else
                {
                    lsHub.Add(0);
                }

                //set color
                lsbgcolorConsoTotal.Add(c11);
                lsbdcolorConsoTotal.Add(c11);
                lsbgcolorDC_Inside.Add(c7);
                lsbdcolorDC_Inside.Add(c7);
                lsbgcolorDC_Outside.Add(c8);
                lsbdcolorDC_Outside.Add(c8);
                lsbgcolorHub.Add(c9);
                lsbdcolorHub.Add(c9);
                lsbgcolorTransfer.Add(c10);
                lsbdcolorTransfer.Add(c10);
            }

            //Mock the data
            BarChartDataSet datasetConsoTotal = new BarChartDataSet()
            {
                type            = "line",
                label           = "Conso Shipment",
                data            = lsConsoTotal.ToArray(),
                backgroundColor = lsbgcolorConsoTotal.ToArray(),
                borderColor     = lsbdcolorConsoTotal.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetDC_Inside = new BarChartDataSet()
            {
                type            = "bar",
                label           = "DC_Inside",
                data            = lsDC_Inside.ToArray(),
                backgroundColor = lsbgcolorDC_Inside.ToArray(),
                borderColor     = lsbdcolorDC_Inside.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetDC_Outside = new BarChartDataSet()
            {
                type            = "bar",
                label           = "DC_Outside",
                data            = lsDC_Outside.ToArray(),
                backgroundColor = lsbgcolorDC_Outside.ToArray(),
                borderColor     = lsbdcolorDC_Outside.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetTransfer = new BarChartDataSet()
            {
                type            = "bar",
                label           = "Transfer",
                data            = lsTransfer.ToArray(),
                backgroundColor = lsbgcolorTransfer.ToArray(),
                borderColor     = lsbdcolorTransfer.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetHub = new BarChartDataSet()
            {
                type            = "bar",
                label           = "Hub",
                data            = lsHub.ToArray(),
                backgroundColor = lsbgcolorHub.ToArray(),
                borderColor     = lsbdcolorHub.ToArray(),
                borderWidth     = 1
            };

            BarChartData data = new BarChartData()
            {
                labels   = lsLabel.ToArray(),
                datasets = new BarChartDataSet[] { datasetConsoTotal, datasetDC_Inside, datasetDC_Outside, datasetTransfer, datasetHub }
            };

            var jsonResult = Json(data);

            jsonResult.MaxJsonLength = int.MaxValue;

            return(jsonResult);
        }
        public JsonResult GetShipmentStatusChart_ByType(string selectmonth, string selectday, string reporttype)
        {
            var cs  = "Host=qa-datalake-pg.cluster-ctg0nvlybzpq.ap-southeast-1.rds.amazonaws.com; Username=datalakero; Password=d@t@SCGL; Database=pd_datalake";
            var con = new NpgsqlConnection(cs);

            con.Open();
            NpgsqlCommand command = new NpgsqlCommand();

            command = con.CreateCommand();
            var sql = " SELECT a.date_part, b.date, b.\"SMTotal\", b.\"SMComplete\", b.\"SMGI\", b.\"SMTenderAccept\" " +
                      " FROM ( SELECT date_part('day'::text, dates_this_month.dates_this_month) AS date_part" +
                      " FROM generate_series(date_trunc('month'::text, now()), date_trunc('month'::text, now()) + '1 mon'::interval - '1 day'::interval, '1 day'::interval) dates_this_month(dates_this_month)) a" +
                      " LEFT JOIN " +
                      " ( select stat.date " +
                      " , stat.day" +
                      " , count(distinct stat.load_id) as \"SMTotal\"" +
                      " , sum(stat.\"SMComplete\") as \"SMComplete\"" +
                      " , sum(\"SMGI\") as \"SMGI\"" +
                      " , sum(stat.\"SMTenderAccept\") as \"SMTenderAccept\"" +
                      " from (" +
                      " select distinct" +
                      " date(scvdnst.actual_open) as \"date\"" +
                      " , date_part('day', scvdnst.actual_open) AS \"day\"" +
                      " , scvdnst.load_id as \"load_id\"" +
                      " , case when scvdnst.actual_delivery_date is not null then 1 else 0 end as \"SMComplete\"" +
                      " , case when scvdnst.actual_delivery_date is not null then 0 " +
                      " when scvdnst.actual_gi_date is not null then 1 else 0 end as \"SMGI\"" +
                      " , case when scvdnst.actual_gi_date is not null then 0 " +
                      " when scvdnst.actual_tender_accept is not null then 1 else 0 end as \"SMTenderAccept\"" +
                      " from dom.scvcor_delivery_tracking_status scvdnst" +
                      " inner join dom.scvmvc_tms_load_leg tmssmh on scvdnst.load_id = tmssmh.load_id" +
                      " inner join dom.scvmvc_tms_delivery_header tmsdnh on 'A' || right('0000' || scvdnst.delivery_number , 10) = tmsdnh.delivery_number" +
                      " where extract('month' from tmssmh.user_create_date) = @month";

            if (!string.IsNullOrEmpty(selectday))
            {
                sql += " and extract('day' from tmssmh.user_create_date) = @day";
            }

            switch (reporttype)
            {
            case "Fly_Ash":
                sql += " and tmsdnh.commodity_code in ('BRFLY','BCFYA')" +
                       " and tmsdnh.shipping_point in ('3520000603','2210000897','6700000620','6710000500','2210000906','2250000410','6710000503','4400001149')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "All_Bulk_FLEET_SRB":
                sql += " and tmsdnh.commodity_code = 'BCBGR'" +
                       " and tmsdnh.shipping_point in ('2190000635','2190000637','2190000894','2190000968')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "All_Bulk_FLEET_LP":
                sql += " and tmsdnh.commodity_code in ('BCBGR','BCMTA','BRGYP')" +
                       " and tmsdnh.shipping_point in ('3520000594','3520000597','3520001431','3520000612')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Mortar_Bulk_FLEET_SRB":
                sql += " and tmsdnh.commodity_code = 'BCMTA'" +
                       " and tmsdnh.shipping_point in ('2190000642','2190000898','2200001644')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Mortar_Bulk_FLEET_KW":
                sql += " and tmsdnh.shipping_point in ('2190000938')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Mortar_Bulk_FLEET_TS":
                sql += " and tmsdnh.commodity_code in ('BCMTA' , 'BRCCN')" +
                       " and tmsdnh.shipping_point in ('5800000746')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "PFA_PPD":
                sql += " and tmsdnh.shipping_point in ('1110001558')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Cement_Bulk_PPD":
                sql += " and tmsdnh.commodity_code in ('BCBGR')" +
                       " and tmsdnh.shipping_point in ('1110001519')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Cement_Bulk_SRC":
                sql += " and tmsdnh.commodity_code in ('BCBGR')" +
                       " and tmsdnh.shipping_point in ('2200001646')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Cement_White_Bulk":
                sql += " and tmsdnh.commodity_code in ('BCBGR')" +
                       " and tmsdnh.shipping_point in ('2190000643')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Cement_Bulk_TS":
                sql += " and tmsdnh.commodity_code in ('BCBGR')" +
                       " and tmsdnh.shipping_point in ('5800000742')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "KCL":
                sql += " and tmsdnh.commodity_code in ('BCBGR')" +
                       " and tmsdnh.shipping_point in ('4480000395')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Cementh_Rajasri":
                sql += " and tmsdnh.commodity_code in ('BCRAC')" +
                       " and tmsdnh.shipping_point in ('2190000953')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            case "Barite":
                sql += " and tmsdnh.commodity_code in ('BMINE','BRCCN')" +
                       " and tmsdnh.shipping_point in ('2190000957','2190000642')" +
                       " and tmssmh.equipment_type in ('10CC','18CS','18CT','22CS','22CT')";
                break;

            default: break;
            }

            sql += " ) stat group by stat.date, stat.day) b ON a.date_part = b.day";


            command.CommandText = sql;
            command.Parameters.AddWithValue("@month", Convert.ToInt32(selectmonth));
            command.Parameters.AddWithValue("@day", Convert.ToInt32(selectday));
            NpgsqlDataReader dr = command.ExecuteReader();

            List <string> lsLabel          = new List <string>();
            List <double> lsSMTotal        = new List <double>();
            List <double> lsSMCompletet    = new List <double>();
            List <double> lsSMGI           = new List <double>();
            List <double> lsSMTenderAccept = new List <double>();

            List <string> lsbgcolorSMTotal        = new List <string>();
            List <string> lsbdcolorSMTotal        = new List <string>();
            List <string> lsbgcolorSMCompletet    = new List <string>();
            List <string> lsbdcolorSMCompletet    = new List <string>();
            List <string> lsbgcolorSMGI           = new List <string>();
            List <string> lsbdcolorSMGI           = new List <string>();
            List <string> lsbgcolorSMTenderAccept = new List <string>();
            List <string> lsbdcolorSMTenderAccept = new List <string>();

            string c1  = "rgba(255, 99, 132, 0.2)";
            string c2  = "rgba(54, 162, 235, 0.2)";
            string c3  = "rgba(255, 206, 86, 0.2)";
            string c4  = "rgba(75, 192, 192, 0.2)";
            string c5  = "rgba(153, 102, 255, 0.2)";
            string c6  = "rgba(255, 159, 64, 0.2)";
            string c7  = "rgb(12, 202, 142, 0.5)";
            string c8  = "rgb(255, 205, 86, 0.5)";
            string c9  = "rgb(255, 99, 132, 0.5)";
            string c10 = "rgb(54, 162, 235, 0.9)";
            string c11 = "rgb(51, 102, 0, 0.9)";

            while (dr.Read())
            {
                lsLabel.Add(dr[0].ToString());
                if (!string.IsNullOrEmpty(dr[2].ToString()))
                {
                    lsSMTotal.Add(Convert.ToInt32(dr[2].ToString()));
                }
                else
                {
                    lsSMTotal.Add(0);
                }
                if (!string.IsNullOrEmpty(dr[3].ToString()))
                {
                    lsSMCompletet.Add(Convert.ToInt32(dr[3]));
                }
                else
                {
                    lsSMCompletet.Add(0);
                }
                if (!string.IsNullOrEmpty(dr[4].ToString()))
                {
                    lsSMGI.Add(Convert.ToInt32(dr[4]));
                }
                else
                {
                    lsSMGI.Add(0);
                }
                if (!string.IsNullOrEmpty(dr[5].ToString()))
                {
                    lsSMTenderAccept.Add(Convert.ToInt32(dr[5]));
                }
                else
                {
                    lsSMTenderAccept.Add(0);
                }

                //set color
                lsbgcolorSMTotal.Add(c11);
                lsbdcolorSMTotal.Add(c11);
                lsbgcolorSMCompletet.Add(c7);
                lsbdcolorSMCompletet.Add(c7);
                lsbgcolorSMGI.Add(c8);
                lsbdcolorSMGI.Add(c8);
                lsbgcolorSMTenderAccept.Add(c9);
                lsbdcolorSMTenderAccept.Add(c9);
            }

            //Mock the data
            BarChartDataSet datasetSMTotal = new BarChartDataSet()
            {
                type            = "line",
                label           = "All Shipment",
                data            = lsSMTotal.ToArray(),
                backgroundColor = lsbgcolorSMTotal.ToArray(),
                borderColor     = lsbdcolorSMTotal.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetSMCompletet = new BarChartDataSet()
            {
                type            = "bar",
                label           = "Complete Delivery",
                data            = lsSMCompletet.ToArray(),
                backgroundColor = lsbgcolorSMCompletet.ToArray(),
                borderColor     = lsbdcolorSMCompletet.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetSMGI = new BarChartDataSet()
            {
                type            = "bar",
                label           = "GI",
                data            = lsSMGI.ToArray(),
                backgroundColor = lsbgcolorSMGI.ToArray(),
                borderColor     = lsbdcolorSMGI.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetSMTenderAccept = new BarChartDataSet()
            {
                type            = "bar",
                label           = "Accept",
                data            = lsSMTenderAccept.ToArray(),
                backgroundColor = lsbgcolorSMTenderAccept.ToArray(),
                borderColor     = lsbdcolorSMTenderAccept.ToArray(),
                borderWidth     = 1
            };

            BarChartData data = new BarChartData()
            {
                labels   = lsLabel.ToArray(),
                datasets = new BarChartDataSet[] { datasetSMTotal, datasetSMTenderAccept, datasetSMGI, datasetSMCompletet }
            };

            var jsonResult = Json(data);

            jsonResult.MaxJsonLength = int.MaxValue;

            return(jsonResult);
        }
        public JsonResult GetData()
        {
            #region old
            var cs  = "Host=qa-datalake-pg.cluster-ctg0nvlybzpq.ap-southeast-1.rds.amazonaws.com; Username =liluna_datalake; Password =Liluna@SCGL; Database =pd_datalake";
            var con = new NpgsqlConnection(cs);
            con.Open();
            var sql             = "select * from dom.\"Reporting_MonthlySummary2\"";
            var cmd             = new NpgsqlCommand(sql, con);
            NpgsqlDataReader dr = cmd.ExecuteReader();

            List <double> lsTotalSM            = new List <double>();
            List <double> lsTotalWeight        = new List <double>();
            List <string> lsLabel              = new List <string>();
            List <string> lsbgcolorTotalSM     = new List <string>();
            List <string> lsbdcolorTotalSM     = new List <string>();
            List <string> lsbgcolorTotalWeight = new List <string>();
            List <string> lsbdcolorTotalWeight = new List <string>();

            string c1 = "rgba(255, 99, 132, 0.2)";
            string c2 = "rgba(54, 162, 235, 0.2)";
            string c3 = "rgba(255, 206, 86, 0.2)";
            string c4 = "rgba(75, 192, 192, 0.2)";
            string c5 = "rgba(153, 102, 255, 0.2)";
            string c6 = "rgba(255, 159, 64, 0.2)";

            while (dr.Read())
            {
                lsLabel.Add(dr[0].ToString());

                if (!string.IsNullOrEmpty(dr[2].ToString()))
                {
                    lsTotalSM.Add(Convert.ToInt32(dr[2].ToString()));
                }
                if (!string.IsNullOrEmpty(dr[2].ToString()))
                {
                    lsTotalWeight.Add(Convert.ToDouble(dr[3]));
                }

                lsbgcolorTotalSM.Add(c1);
                lsbdcolorTotalSM.Add(c1);

                lsbgcolorTotalWeight.Add(c2);
                lsbdcolorTotalWeight.Add(c2);
            }


            //Mock the data
            BarChartDataSet datasetTotalSM = new BarChartDataSet()
            {
                type            = "bar",
                label           = "จำนวน Shipment",
                data            = lsTotalSM.ToArray(),
                backgroundColor = lsbgcolorTotalSM.ToArray(),
                borderColor     = lsbdcolorTotalSM.ToArray(),
                borderWidth     = 1
            };

            BarChartDataSet datasetTotalWeight = new BarChartDataSet()
            {
                type            = "bar",
                label           = "จำนวน Volumn (x 100 Ton.)",
                data            = lsTotalWeight.ToArray(),
                backgroundColor = lsbgcolorTotalWeight.ToArray(),
                borderColor     = lsbdcolorTotalWeight.ToArray(),
                borderWidth     = 1
            };

            BarChartData data = new BarChartData()
            {
                labels   = lsLabel.ToArray(),
                datasets = new BarChartDataSet[] { datasetTotalSM, datasetTotalWeight }
            };

            return(Json(data));

            #endregion
        }