private void SaveLayerStatisticsFiles()
        {
            var dlg = new FolderPickerDialog();

            if (dlg.ShowDialog() == true)
            {
                //remove wells without xy, remove intakes with missing values and then apply ObsInperiodfilter again because there can be wells with multiple intakes where only is acceptable
                var intakes = SortedAndFilteredWells.Where(w => w.X != 0 & w.Y != 0).SelectMany(var => var.Intakes.Where(var2 => !var2.HasMissingdData())).Where(ObsInPeriodFilter);
                AsyncWithWait(() => MsheInputFileWriters.WriteToLSInput(dlg.SelectedPath, intakes, Mshe, _periodFilter, _onlyRoFilter));
            }
        }
        private void SaveDetailedTimeSeries()
        {
            var dlg = new FolderPickerDialog();

            if (dlg.ShowDialog() == true)
            {
                var intakes = SortedAndFilteredWells.SelectMany(var => var.Intakes);
                MsheInputFileWriters.WriteDetailedTimeSeriesText(dlg.SelectedPath, intakes, SelectionStartTime, SelectionEndTime);
                MsheInputFileWriters.WriteToDatFile(System.IO.Path.Combine(dlg.SelectedPath, "Timeseries.dat"), intakes, _periodFilter, _onlyRoFilter);
                AsyncWithWait(() => MsheInputFileWriters.WriteDetailedTimeSeriesDfs0(dlg.SelectedPath, intakes, _periodFilter, _onlyRoFilter));
            }
        }
        private void SaveObservationsToShape()
        {
            Microsoft.Win32.SaveFileDialog openFileDialog2 = new Microsoft.Win32.SaveFileDialog();
            openFileDialog2.Filter = "Known file types (*.shp)|*.sh";
            openFileDialog2.Title  = "Save observations to a shape file";


            if (openFileDialog2.ShowDialog().Value)
            {
                var Jints = SortedAndFilteredWells.SelectMany(var => var.Intakes).Where(ObsInPeriodFilter).Cast <JupiterIntake>();
                MsheInputFileWriters.AddDataForNovanaPejl(Jints, SelectionStartTime, SelectionEndTime);

                foreach (var v in SortedAndFilteredWells)
                {
                    foreach (JupiterIntake JI in v.Intakes.Where(var => ((JupiterIntake)var).Data != null))
                    {
                        JI.Data["AUTOCORRECT"] = v.WasFixed;
                        var sc = v.Screens.Where(var => var.Intake.IDNumber == JI.IDNumber);
                        if (sc.Count() > 0)
                        {
                            if (Mshe != null)
                            {
                                JI.Data["ORG_LAYTOP"] = sc.Max(var2 => var2.MsheTopLayer);
                                JI.Data["ORG_LAYBOT"] = sc.Min(var2 => var2.MsheBottomLayer);
                                var newl = sc.FirstOrDefault(var => var.NewMsheLayer.HasValue);
                                if (newl != null)
                                {
                                    JI.Data["ADJUST_LAY"] = newl.NewMsheLayer.Value;
                                }
                            }
                        }
                    }
                }
                WriteShapeFromDataRow(openFileDialog2.FileName, Jints);
            }
        }