public ConfTopic(ConferenceVolume conference, int no) { conf = conference; TopicNo = no; }
private void ImportConference(string confName) { using var Dbx = Sezam.Data.Store.GetNewContext(); using ConferenceVolume zbbConf = new ConferenceVolume(confName); try { if (Dbx .Conferences .Where(c => c.Name == zbbConf.NameOnly && c.VolumeNo == zbbConf.VolumeNumber) .Any()) { Console.WriteLine("Conf {0} is already imported.", confName); return; } Console.WriteLine("Importing {0}.{1}", ConfPath, confName); string confDir = Path.Combine(ConfPath, confName); zbbConf.Import(confDir); // Any missing users? var msgAuthors = zbbConf.Messages .Select(m => m.author) .Where(u => !string.IsNullOrWhiteSpace(u)) .Distinct(); var existingUsers = Dbx.Users.Select(u => u.Username); var usersToAdd = msgAuthors.Except(existingUsers) .Select(u => new Sezam.Data.EF.User() { Username = u }); if (usersToAdd.Any()) { Console.WriteLine("Adding users: {0}", string.Join(", ", usersToAdd.Select(u => u.Username))); Dbx.Users.AddRange(usersToAdd); Dbx.SaveChanges(); } var conf = new Sezam.Data.EF.Conference(); Dbx.Conferences.Add(conf); zbbConf.ToEFConf(conf); var userDict = Dbx.Users.Select(u => new { u.Username, u.Id }) .ToDictionary(u => u.Username, u => u.Id); foreach (var zbbMsg in zbbConf.Messages) { var efMsg = zbbMsg.EFConfMessage; if (userDict.ContainsKey(zbbMsg.author)) { efMsg.AuthorId = userDict[zbbMsg.author]; } else { Console.WriteLine("Unknown ConfMsg Author: {0}", zbbMsg.author); } } Console.Write("Saving..."); Dbx.SaveChanges(); Console.WriteLine("Finished importing {0}", confName); } catch (Exception e) { Console.WriteLine("Error importing conf"); Sezam.ErrorHandling.PrintException(e); } }
// HDRstr = 'DMSAFNPR'; public ConfMessage(ConferenceVolume conference) { this.Conference = conference; }