コード例 #1
0
ファイル: ConfTopic.cs プロジェクト: dzakic/Sezam
 public ConfTopic(ConferenceVolume conference, int no)
 {
     conf    = conference;
     TopicNo = no;
 }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: ConfMessage.cs プロジェクト: dzakic/Sezam
        // HDRstr = 'DMSAFNPR';

        public ConfMessage(ConferenceVolume conference)
        {
            this.Conference = conference;
        }