/// <summary>
        /// Creates the database.
        /// </summary>
        public static void CreateDatabase()
        {
            List<string> usernames = new List<string>();
            for (int i = 1; i < 10; i++)
                usernames.Add("User" + i);

            List<MCSite> allsites = new List<MCSite>();
            List<MCRoom> allrooms = new List<MCRoom>();

            using (var ctx = new MainContext())
            {

                List<MCParticularity> allparts = new List<MCParticularity>();
                allparts.Add(new MCParticularity() { Name = "Videoconf" });
                allparts.Add(new MCParticularity() { Name = "Digilab" });
                allparts.Add(new MCParticularity() { Name = "Telephone" });
                allparts.Add(new MCParticularity() { Name = "Secure" });

                for (int i = 1; i < 10; i++)
                {
                    List<MCRoom> rooms = new List<MCRoom>();
                    for (int j = 1; j < 10; j++)
                    {
                        rooms.Add(CreateRoom("Site" + i + "Room" + j, allparts));
                    }
                    allrooms.AddRange(rooms);
                    MCSite site = CreateSite("Site" + i, rooms);
                    allsites.Add(site);
                }

                foreach (string username in usernames)
                {
                    ctx.UsersProfile.Add(CreateUserProfile(username, allsites));
                }
                ctx.SaveChanges();
                ctx.Particularities.AddRange(allparts);
                ctx.SaveChanges();
                ctx.Rooms.AddRange(allrooms);
                ctx.SaveChanges();
                ctx.Sites.AddRange(allsites);
                ctx.SaveChanges();
            }

            using (var ctx = new AuthenticationContext())
            {
                foreach (string username in usernames)
                {
                    ACUser user = new ACUser() { Username = username, Password = Tools.Security.Hash(username + "pass") };
                    ctx.Users.Add(user);
                }
                ctx.SaveChanges();
            }

            using (var ctx = new BookingContext())
            {
                for(int i = 1; i < 5000; i++)
                    ctx.Bookings.Add(CreateBooking(usernames, allrooms.Count, "Subject" + i));
                ctx.SaveChanges();
            }
        }
 /// <summary>
 /// Authenticate the User with specified username and password.
 /// </summary>
 /// <param name="username">Username.</param>
 /// <param name="password">Password.</param>
 public bool Authenticate(UserIdentifier username, string password)
 {
     bool isOk = false;
     password = Tools.Security.Hash(password);
     // sha1.ComputeHash();
     using (var ctx = new AuthenticationContext())
     {
         var query = from user in ctx.Users
                     where user.Username.Equals(username.Value) && user.Password.Equals(password)
                     select user.Username;
         isOk = query.Count() != 0;
     }
     return isOk;
 }