public static void Update() { Log.Info(nameof(Update)); if (DataContainer.Version < 3) { TalkList.Add(56, "Wessen Führung kannst du vertrauen?"); TalkList.Add(-1, "Unbekannt", false); } if (DataContainer.Version < 11) { // => IoSqlite.UpdateDatabase(); -- Bestehender Vortrag 24 auf -24 geändert TalkList.Add(24, "„Eine besonders kostbare Perle“ – habe ich sie gefunden?"); } if (DataContainer.Version < 15) { DataContainer.AufgabenPersonZuordnung.Add(new AufgabenZuordnung(-1) { PersonName = "Nicht Vorgesehen", IsVorsitz = true, IsLeser = true, Häufigkeit = 1 }); } if (DataContainer.Version < 16) { TalkList.Reset(); } //auf aktuellste Version setzen = 17 //siehe auch IoSqlite.UpdateDatabase DataContainer.Version = Helper.CurrentVersion; }
public DropDownVortrag() { ListeAlle = TalkList.Get().ToList(); foreach (var item in ListeAlle) { ListeFilteredItems.Add(item); } InitializeComponent(); }
public static void LoadTalks() { var myTalks = LoadDefaultTalks(); TalkList.Clear(); foreach (var t in myTalks) { TalkList.Add(t); } }
internal static void OverviewTalkCount(bool openReport) { Log.Info(nameof(OverviewTalkCount), ""); var tempFile = Path.GetTempFileName(); var excel = new FileInfo(tempFile); var vers = DataContainer.MeineVersammlung; var kreis = vers.Kreis; using (ExcelPackage package = new ExcelPackage()) { ExcelWorksheet sheet = package.Workbook.Worksheets.Add($"Vorträge"); sheet.Column(1).Width = 10; sheet.Column(2).Width = 50; sheet.Column(3).Width = 10; sheet.Column(5).Width = 15; sheet.Cells[1, 1].Value = "Anzahl der Ausarbeitungen der Vorträge"; sheet.Cells[2, 1, 2, 4].Style.Font.Bold = true; sheet.Cells[2, 1].Value = "Nr"; sheet.Cells[2, 2].Value = "Thema"; sheet.Cells[2, 3].Value = "Versammlung"; sheet.Cells[2, 4].Value = "Kreis"; sheet.Cells[2, 5].Value = "zuletzt gehört"; var row = 3; foreach (var v in TalkList.Get()) { sheet.Cells[row, 1].Value = v.Nummer; sheet.Cells[row, 2].Value = v.Thema; sheet.Cells[row, 3].Value = DataContainer.Redner.Where(x => x.Versammlung == vers && x.Vorträge.Select(y => y.Vortrag).Contains(v)).Count(); sheet.Cells[row, 4].Value = DataContainer.Redner.Where(x => x.Versammlung.Kreis == kreis && x.Vorträge.Select(y => y.Vortrag).Contains(v)).Count(); var wochen = DataContainer.MeinPlan.Where(x => x.Vortrag?.Vortrag?.Nummer == v.Nummer); if (wochen.Any()) { var zuletzt = wochen.Select(x => x.Kw).Max(); sheet.Cells[row, 5].Value = Core.Helper.CalculateWeek(zuletzt); } row++; } //create a range for the table ExcelRange range = sheet.Cells[2, 1, row - 1, 5]; ExcelTable tab = sheet.Tables.Add(range, "Table1"); tab.TableStyle = TableStyles.Medium2; range = sheet.Cells[2, 5, row - 1, 5]; range.Style.Numberformat.Format = "dd.mm.yyyy"; package.SaveAs(excel); } File.Save(tempFile, "Vortragsthemen.xlsx", openReport); }
public static void Reset() { DataContainer.Version = Helper.CurrentVersion; DataContainer.IsInitialized = false; DataContainer.MeineVersammlung = null; DataContainer.ExternerPlan.Clear(); DataContainer.MeinPlan.Clear(); DataContainer.OffeneAnfragen.Clear(); DataContainer.Redner.Clear(); DataContainer.Versammlungen.Clear(); TalkList.Clear(); }
public static void UpdateSpeakers(string File) { Log.Info(nameof(UpdateSpeakers), File); var fi = new FileInfo(File); using (ExcelPackage package = new ExcelPackage(fi)) { ExcelWorksheet worksheet = package.Workbook.Worksheets["Redner"]; var row = 2; var id = DataContainer.Redner.Count > 0 ? DataContainer.Redner.Select(x => x.Id).Max() + 1 : 1; while (true) { var vers = worksheet.Cells[row, 1].Value; var name = worksheet.Cells[row, 2].Value; var vort = worksheet.Cells[row, 3].Value; if (vers == null) { break; } //Versammlung var rednerVersammlung = DataContainer.ConregationFindOrAdd(vers.ToString()); var s = DataContainer.SpeakerFind(name.ToString(), rednerVersammlung); if (s == null) { s = new Speaker { Name = name.ToString(), Id = id, Versammlung = rednerVersammlung, }; DataContainer.Redner.Add(s); id++; } //Vorträge var meineVotrgäge = vort.ToString().Split(new[] { ';', ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); foreach (var v in meineVotrgäge) { var nr = int.Parse(v, Helper.German); var t = TalkList.Find(nr); if (!(t is null) && !s.Vorträge.Select(y => y.Vortrag).Contains(t)) { s.Vorträge.Add(new TalkSong(t)); } } row++; } } // the using statement automatically calls Dispose() which closes the package. }
/// <summary> /// Talk、Whisperを追加登録する /// </summary> /// <param name="gameInfo"></param> private void ApendTalkList(GameInfo gameInfo) { LatestTalkList.Clear(); for (int i = TalkList.Count; i < gameInfo.TalkList.Count; i++) { ExtTalk newTalk = new ExtTalk(gameInfo.TalkList[i]); TalkList.Add(newTalk); LatestTalkList.Add(newTalk); } for (int i = WhisperList.Count; i < gameInfo.WhisperList.Count; i++) { WhisperList.Add(new ExtTalk(gameInfo.WhisperList[i])); } // 発言で宣言した投票先を取得 SaidVote = new VoteAnalyzer(DayTimeAliveAgent, TalkList, Topic.VOTE); }
/// <summary> /// This is the inner method which would be called by the outer layer to schedule the talks using engine /// </summary> /// <param name="sessionDuration">This is the session duration for the particular session, this is the capacity for the knapsack</param> /// <param name="talks">These are the items wih duration as values. The engine will return the best matching items using engine</param> /// <returns></returns> public ITalkList ScheduleTalksForEachTrack(int sessionDuration, IList <ITalk> talks) { try { ITalkList talkList = new TalkList(); List <ITalk> talksFromEngine = engine.GetTheBestSuitableItem(sessionDuration, talks); foreach (var item in talksFromEngine) { talkList.Add(item); } ChangeTheTalkStatusToSchedule(talkList, talks); return(talkList); } catch (Exception ex) { Log.LogInfo(ex.StackTrace); throw; } }
public void AddTalk(Agent agent, Talk talk) { TalkList.Add(talk); }
public static bool ExternePlanungen(string filename) { Log.Info(nameof(ExternePlanungen), filename); try { var file = new FileInfo(filename); using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (ExcelPackage package = new ExcelPackage(fs)) { ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; var row = 2; while (true) { var datum = Helper.ConvertToString(worksheet.Cells[row, 1].Value); var redner = Helper.ConvertToString(worksheet.Cells[row, 2].Value); var vortrag = Helper.ConvertToString(worksheet.Cells[row, 3].Value); var vers = Helper.ConvertToString(worksheet.Cells[row, 4].Value); var versAdresse = Helper.ConvertToString(worksheet.Cells[row, 5].Value); row++; if (string.IsNullOrWhiteSpace(datum)) { break; } if (datum.StartsWith("Datum", true, Helper.German)) { continue; } if (string.IsNullOrWhiteSpace(redner)) { continue; } if (string.IsNullOrWhiteSpace(vers)) { vers = "Unbekannt"; } var kw = Helper.CalculateWeek(DateTime.Parse(datum, Helper.German)); var i = new Outside { Kw = kw }; //Redner var r = DataContainer.SpeakerFindOrAdd(redner.ToString(), DataContainer.MeineVersammlung); if (r == null) { continue; } i.Ältester = r; //Gast-Versammlung if (vers == "Urlaub") { DataContainer.Abwesenheiten.Add(new Busy(r, kw)); continue; } var v = DataContainer.ConregationFindOrAdd(vers); i.Versammlung = v; if (string.IsNullOrEmpty(i.Ältester.Versammlung.Anschrift1) && !string.IsNullOrEmpty(versAdresse)) { i.Ältester.Versammlung.Anschrift1 = versAdresse; } var vn = int.Parse(vortrag.ToString(), Helper.German); //Vortrag var t = TalkList.Find(vn); i.Vortrag = new TalkSong(t); if (!i.Ältester.Vorträge.Select(y => y.Vortrag).Contains(t)) { i.Ältester.Vorträge.Add(i.Vortrag); } if (!DataContainer.ExternerPlan.Any(x => x.Kw == i.Kw && x.Ältester == i.Ältester)) { DataContainer.ExternerPlan.Add(i); } } } } catch (Exception e) { Log.Error(nameof(ExternePlanungen), e.Message); ThemedMessageBox.Show("Fehler", $"Beim Einlesen der Excel-Datei ist es zu folgendem Fehler gekommen\n:{e.Message}", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error); DataContainer.ExternerPlan.Clear(); return(false); } return(true); }
public static bool EigenePlanungen(string filename) { Log.Info(nameof(EigenePlanungen), filename); try { var file = new FileInfo(filename); using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (ExcelPackage package = new ExcelPackage(fs)) { ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; var row = 2; while (true) { var datum = Helper.ConvertToString(worksheet.Cells[row, 1].Value); var redner = Helper.ConvertToString(worksheet.Cells[row, 2].Value); var vortrag = Helper.ConvertToString(worksheet.Cells[row, 3].Value); var thema = Helper.ConvertToString(worksheet.Cells[row, 4].Value); var vers = Helper.ConvertToString(worksheet.Cells[row, 5].Value); var versAdresse = Helper.ConvertToString(worksheet.Cells[row, 6].Value); var rednerMail = Helper.ConvertToString(worksheet.Cells[row, 7].Value); var rednerJwpub = Helper.ConvertToString(worksheet.Cells[row, 8].Value); var rednerTelefon = Helper.ConvertToString(worksheet.Cells[row, 9].Value); row++; if (string.IsNullOrWhiteSpace(datum) || datum.StartsWith("Datum", true, Helper.German)) { break; } if (string.IsNullOrWhiteSpace(redner) && string.IsNullOrWhiteSpace(thema)) //Keine Planung eingetragen { continue; } var kw = Helper.CalculateWeek(DateTime.Parse(datum.ToString(), Helper.German)); if (string.IsNullOrWhiteSpace(redner)) //Special Event eintragen { var se = new SpecialEvent { Kw = kw, Typ = SpecialEventTyp.Sonstiges, }; if (thema.Contains("Weltzentrale")) { se.Typ = SpecialEventTyp.Streaming; se.Name = thema; } else if (thema.Contains("Kreiskongress")) { se.Typ = SpecialEventTyp.Kreiskongress; } else if (thema.Contains("Sondervortrag") || thema.Contains("Streaming")) { se.Typ = SpecialEventTyp.Streaming; se.Name = thema; } else if (thema.Contains("Regionaler Kongress")) { se.Typ = SpecialEventTyp.RegionalerKongress; } else if (thema.Contains("Dienstwoche")) { se.Typ = SpecialEventTyp.Dienstwoche; } else if (thema.Contains("Dienstwoche")) { se.Typ = SpecialEventTyp.Dienstwoche; } DataContainer.MeinPlanAdd(se); continue; } var i = new Invitation { Kw = kw }; //Versammlung if (string.IsNullOrWhiteSpace(vers)) { vers = "Unbekannt"; } if (string.IsNullOrWhiteSpace(redner)) { redner = "Unbekannt"; } var v = DataContainer.ConregationFindOrAdd(vers); var r = DataContainer.SpeakerFindOrAdd(redner, v); i.Ältester = r; if (string.IsNullOrEmpty(i.Ältester.Versammlung.Anschrift1) && !string.IsNullOrEmpty(versAdresse)) { i.Ältester.Versammlung.Anschrift1 = versAdresse; } if (string.IsNullOrEmpty(i.Ältester.Telefon) && !string.IsNullOrEmpty(rednerTelefon)) { i.Ältester.Telefon = rednerTelefon; } if (string.IsNullOrEmpty(i.Ältester.Mail) && !string.IsNullOrEmpty(rednerMail)) { i.Ältester.Mail = rednerMail; } if (string.IsNullOrEmpty(i.Ältester.JwMail) && !string.IsNullOrEmpty(rednerJwpub)) { i.Ältester.JwMail = rednerJwpub; } //Vortrag var vn = int.Parse(vortrag.ToString(), Helper.German); var t = TalkList.Find(vn); i.Vortrag = new TalkSong(t); if (!i.Ältester.Vorträge.Select(y => y.Vortrag).Contains(t)) { i.Ältester.Vorträge.Add(i.Vortrag); } DataContainer.MeinPlanAdd(i); } } } catch (Exception e) { Log.Error(nameof(EigenePlanungen), e.Message); ThemedMessageBox.Show("Fehler", $"Beim Einlesen der Excel-Datei ist es zu folgendem Fehler gekommen\n:{e.Message}", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error); DataContainer.MeinPlan.Clear(); return(false); } return(true); }
public EreignisEintragenCommandDialogView() { CloseCommand = new DelegateCommand <ICloseable>(Schließen); SaveCommand = new DelegateCommand <ICloseable>(Save); Vortragsliste = new ObservableCollection <Talk>(TalkList.Get()); }