private async void btnGenerateDiagram_Click(object sender, EventArgs e)
        {
            labelErrorDiagram.Visible = false;
            chartMovement.Series.Clear();
            int diagram;
            int temp1;

            if (DataHolder.UserCulture.TwoLetterISOLanguageName == "bg")
            {
                Enums.DiagramTypeBg diagramType;
                Enum.TryParse(cbDiagramType.SelectedValue.ToString(), out diagramType);
                diagram = (int)diagramType;
                Enums.ItemTypesBg temp;
                Enum.TryParse(cbItemTypesDiagram.SelectedValue.ToString(), out temp);
                temp1 = (int)temp;
            }
            else
            {
                Enums.DiagramType diagramType;
                Enum.TryParse(cbDiagramType.SelectedValue.ToString(), out diagramType);
                diagram = (int)diagramType;
                Enums.ItemTypes temp;
                Enum.TryParse(cbItemTypesDiagram.SelectedValue.ToString(), out temp);
                temp1 = (int)temp;
            }
            DiagramDTO dto = new DiagramDTO
            {
                ReportType = diagram,
                FromDate   = dtFromDiagram.Value,
                ToDate     = dtToDiagram.Value,
                IsType     = cbItemTypeDiagram.Checked,
                ItemType   = temp1
            };
            List <ReportMovement> result = await SAReports.PostGenerateDiagramMovement(dto);

            var counter = result.SelectMany(row => row.QuantityesList).Aggregate(0, (current, n) => current + n.Value);

            // check if everywhere is 0(empty result)
            if (counter == 0)
            {
                labelErrorDiagram.Visible = true;
                labelErrorDiagram.Text    = DataHolder.GetString("no_results_found");
            }
            else
            {
                List <ReportMovement> parsedResults = new List <ReportMovement>();
                if (!cbItemTypeDiagram.Checked)
                {
                    foreach (ReportMovement row in result)
                    {
                        if (DataHolder.UserCulture.TwoLetterISOLanguageName == "bg")
                        {
                            int value;
                            int.TryParse(row.Name, out value);
                            Enums.ItemTypesBg types   = (Enums.ItemTypesBg)value;
                            ReportMovement    element = new ReportMovement();
                            element.Name           = types.ToString();
                            element.QuantityesList = row.QuantityesList;
                            parsedResults.Add(element);
                        }
                        else
                        {
                            int value;
                            int.TryParse(row.Name, out value);
                            Enums.ItemTypes types   = (Enums.ItemTypes)value;
                            ReportMovement  element = new ReportMovement();
                            element.Name           = types.ToString();
                            element.QuantityesList = row.QuantityesList;
                            parsedResults.Add(element);
                        }
                    }
                    foreach (var row in parsedResults)
                    {
                        chartMovement.Series.Add(row.Name);
                        foreach (var rowvalue in row.QuantityesList)
                        {
                            chartMovement.Series[row.Name].Points.AddXY(rowvalue.Key, rowvalue.Value);
                        }
                    }
                }
                else
                {
                    foreach (var row in result)
                    {
                        chartMovement.Series.Add(row.Name);
                        foreach (var rowvalue in row.QuantityesList)
                        {
                            chartMovement.Series[row.Name].Points.AddXY(rowvalue.Key, rowvalue.Value);
                        }
                    }
                }
            }
        }
        private async void btnGenerateDiagram_Click(object sender, EventArgs e)
        {
            labelErrorDiagram.Visible = false;
            chartSales.Series["Items"].Points.Clear();
            int diagram;
            int temp1;

            if (DataHolder.UserCulture.TwoLetterISOLanguageName == "bg")
            {
                Enums.DiagramTypeBg diagramType;
                Enum.TryParse(cbDiagramType.SelectedValue.ToString(), out diagramType);
                diagram = (int)diagramType;
                Enums.ItemTypesBg temp;
                Enum.TryParse(cbItemTypesDiagram.SelectedValue.ToString(), out temp);
                temp1 = (int)temp;
            }
            else
            {
                Enums.DiagramType diagramType;
                Enum.TryParse(cbDiagramType.SelectedValue.ToString(), out diagramType);
                diagram = (int)diagramType;
                Enums.ItemTypes temp;
                Enum.TryParse(cbItemTypesDiagram.SelectedValue.ToString(), out temp);
                temp1 = (int)temp;
            }
            DiagramDTO dto = new DiagramDTO
            {
                ReportType = diagram,
                FromDate   = dtFromDiagram.Value,
                ToDate     = dtToDiagram.Value,
                IsType     = cbItemTypeDiagram.Checked,
                ItemType   = temp1
            };
            Dictionary <string, int> result = await SAReports.PostGenerateDiagram(dto);

            if (result == null || result.Count == 0)
            {
                labelErrorDiagram.Visible = true;
                labelErrorDiagram.Text    = DataHolder.GetString("no_results_found");
            }
            else
            {
                List <KeyValuePair <string, int> > parsedResults = new List <KeyValuePair <string, int> >();
                if (!cbItemTypeDiagram.Checked)
                {
                    foreach (KeyValuePair <string, int> row in result)
                    {
                        if (DataHolder.UserCulture.TwoLetterISOLanguageName == "bg")
                        {
                            int value;
                            int.TryParse(row.Key, out value);
                            Enums.ItemTypesBg types = (Enums.ItemTypesBg)value;
                            parsedResults.Add(new KeyValuePair <string, int>(types.ToString(), row.Value));
                        }
                        else
                        {
                            int value;
                            int.TryParse(row.Key, out value);
                            Enums.ItemTypes types = (Enums.ItemTypes)value;
                            parsedResults.Add(new KeyValuePair <string, int>(types.ToString(), row.Value));
                        }
                    }
                }
                else
                {
                    parsedResults.AddRange(result.Select(row => new KeyValuePair <string, int>(row.Key, row.Value)));
                }

                foreach (var row in parsedResults)
                {
                    chartSales.Series["Items"].Points.AddXY(row.Key, row.Value);
                }
            }
        }