private void ExportUpdateScheduleForAllProjectsToolStripMenuItem_Click()

in 2LCS/Forms/MainForm.cs [2269:2326]


        private void ExportUpdateScheduleForAllProjectsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            notifyIcon.BalloonTipText = $"Exporting updates schedule for all LCS projects. Please wait...";
            notifyIcon.BalloonTipTitle = "Exporting updates schedule list";

            notifyIcon.ShowBalloonTip(2000); //This setting might be overruled by the OS

            Cursor = Cursors.WaitCursor;
            var previousProject = _selectedProject;
            var exportedUpdates = new List<UpcomingCalendarViewModels>();

            Projects = _httpClientHelper.GetAllProjects();
            Projects = ExcludeProjectsForOrganization(Projects); //remove all internal projects for export.

            foreach (var _project in Projects)
            {
                if (_project.RequestPending == true) continue;
                _selectedProject = _project;
                _httpClientHelper.ChangeLcsProjectId(_project.Id.ToString());
                SetLcsProjectText();

                List<UpcomingCalendarViewModels> calendar = _httpClientHelper.GetUpcomingCalendars();
                if (calendar != null && calendar.Any())
                {
                    foreach (var _updateRow in calendar)
                    {
                        exportedUpdates.Add(_updateRow);
                    }
                }
            }

            Cursor = Cursors.Default;

            SaveFileDialog savefile = new SaveFileDialog
            {
                FileName = "D365FO updates - 2LCS generated.csv",
                Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*"
            };

            if (savefile.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    using StreamWriter sw = new StreamWriter(savefile.FileName, false, Encoding.Unicode);
                    var csv = new CsvWriter(sw, CultureInfo.CurrentCulture);
                    csv.WriteRecords(exportedUpdates);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            _selectedProject = previousProject;
            _httpClientHelper.ChangeLcsProjectId(_selectedProject.Id.ToString());
            SetLcsProjectText();
            RefreshChe(false);
            RefreshSaas(false);
        }