/// <summary> /// The main entry point of the application - initializes database drivers, checks access rights, detects the current page type and does more setting accordingly. /// </summary> protected void Page_Init(object sender, EventArgs e) { DbServer = (DbServer)Enum.Parse(typeof(DbServer), System.Configuration.ConfigurationManager.AppSettings["ServerType"] as string); bool isFirstRun = System.Configuration.ConfigurationManager.AppSettings["FirstRun"] as string == "True"; // detect the site type based on the beginning of the URL string lp = Request.Url.LocalPath; if (lp.StartsWith("/architect")){ Common.Environment.GlobalState = GlobalState.Architect; } else if (lp.StartsWith("/admin")) { Common.Environment.GlobalState = GlobalState.Administer; } else if(lp == "/sys/users"){ Common.Environment.GlobalState = GlobalState.UsersManagement; } else if(lp == "/sys/projects"){ Common.Environment.GlobalState = GlobalState.ProjectsManagement; } else if(lp.StartsWith("/account")){ Common.Environment.GlobalState = GlobalState.Account; } else if(lp.StartsWith("/FirstRun")){ Common.Environment.GlobalState = GlobalState.FirstRun; } else Common.Environment.GlobalState = GlobalState.Error; bool firstRunMono = System.Configuration.ConfigurationManager.AppSettings["FirstRunMono"] == "True"; if(isFirstRun && Common.Environment.GlobalState != GlobalState.FirstRun && !firstRunMono) { Response.Redirect("~/FirstRun/FirstRun.aspx"); } if(!isFirstRun && Common.Environment.GlobalState == GlobalState.FirstRun) { Response.RedirectToRoute("DefaultRoute"); } // set the warning only for logged in users System.Configuration.ConfigurationManager.AppSettings["SessionWarning"] = (user is MembershipUser) ? (Session.Timeout - 5).ToString() : "-1"; if (isFirstRun) { return; } user = Membership.GetUser(); // session expiry means logout, even if the provider would keep the user logged in if ((Session.IsNewSession || user == null) && CE.GlobalState != GlobalState.Account && CE.GlobalState != GlobalState.Error) { FormsAuthentication.SignOut(); Response.RedirectToRoute("LockoutRoute", new { message = 7 }); } IBaseDriver systemBaseDriver = null; // initialize the system driver based on the server type read from the configuration switch (DbServer) { case DbServer.MySql: systemBaseDriver = new BaseDriverMySql(ConfigurationManager.ConnectionStrings["MySqlServer"].ConnectionString); break; case DbServer.MsSql: systemBaseDriver = new BaseDriverMsSql(ConfigurationManager.ConnectionStrings["MsSqlServer"].ConnectionString); break; default: break; } SysDriver = new SystemDriver(systemBaseDriver); if (firstRunMono && CE.GlobalState != GlobalState.FirstRun) { Response.Redirect("~/FirstRun/FirstRunMono.aspx"); } if (!firstRunMono && CE.GlobalState == GlobalState.FirstRun) { Response.RedirectToRoute("DefaultRoute"); } if (firstRunMono) { return; } // global service // is there a need for a reload of the project architecture? bool NewProjectLoad = false; // get current project and init drivers and architect if (Page.RouteData.Values.ContainsKey("projectName")) { ProjectName = Page.RouteData.Values["projectName"] as string; CE.Project actProject = SysDriver.GetProject(ProjectName); if (CE.project == null || actProject.Id != CE.project.Id || actProject.Version != CE.project.Version) { Session.Clear(); // may not be neccessary in all cases, but better be safe NewProjectLoad = true; } CE.project = SysDriver.GetProject(ProjectName); IBaseDriver statsBaseDriver = null; IBaseDriver webBaseDriver = null; switch (CE.project.ServerType) { case DbServer.MySql: statsBaseDriver = new BaseDriverMySql(CE.project.ConnstringIS); Stats = new StatsMySql((BaseDriverMySql)statsBaseDriver, CE.project.WebDbName); webBaseDriver = new BaseDriverMySql(CE._project.ConnstringWeb); break; case DbServer.MsSql: statsBaseDriver = new BaseDriverMsSql(CE.project.ConnstringIS); Stats = new StatsMsSql((BaseDriverMsSql)statsBaseDriver); webBaseDriver = new BaseDriverMsSql(CE._project.ConnstringWeb); break; default: break; } WebDriver = new WebDriver(webBaseDriver); Architect = new _min.Models.Architect(SysDriver, Stats); if ((!Page.IsPostBack || NewProjectLoad) && CE.GlobalState != GlobalState.Error) // new version or differnet page ~ othervise access must have remained // at least "allowable", if not allowed { LockingAccess(); // just check } // check whether there is something to load at all if (Page.RouteData.Route != RouteTable.Routes["ArchitectInitRoute"]) { if (!SysDriver.ProposalExists()) { if (CE.GlobalState == GlobalState.Architect) { Response.RedirectToRoute("ArchitectInitRoute", new { projectName = Page.RouteData.Values["projectName"] }); Response.End(); } else { // change to some kind of "Not found" page Response.RedirectToRoute("DefaultRoute", new { projectName = Page.RouteData.Values["projectName"] }); Response.End(); } } // get the current architecture - either extract from Session or directry from the DB, if project version has changed int actVersion = CE.project.Version; if (Session[CC.SESSION_ARCHITECTURE] is _min.Models.Panel && Session[CC.SESSION_ARCHITECTURE_VERSION] is int && (int)Session[CC.SESSION_ARCHITECTURE_VERSION] == actVersion) { SysDriver.SetArchitecture((MPanel)Session[CC.SESSION_ARCHITECTURE]); } else { SysDriver.FullProjectLoad(); Session[CC.SESSION_ARCHITECTURE] = SysDriver.MainPanel; Session[CC.SESSION_ARCHITECTURE_VERSION] = CE.project.Version; } } } // local issues if (!Page.IsPostBack) { if (user != null) { List<string> adminOf; List<string> architectOf; List<CE.Project> allProjects = SysDriver.GetProjectObjects(); List<string> allNames = (from CE.Project p in allProjects select p.Name).ToList<string>(); object userId = user.ProviderUserKey; int globalRights = SysDriver.GetUserRights(userId, null); // by default, fetch only the sites to which the access rights are set explicitly, // if global rights are sufficient, replace them with the complete lists SysDriver.UserMenuOptions(userId, out adminOf, out architectOf); if (globalRights % 100 >= 10) adminOf = allNames; if (globalRights % 1000 >= 100) architectOf = allNames; // decide on the upper menu content MenuItem administerItem = new MenuItem("Administer", "admin"); foreach (string site in adminOf) { administerItem.ChildItems.Add(new MenuItem(site, site, null, "/admin/" + site)); } if (adminOf.Count > 0) NavigationMenu.Items.AddAt(0, administerItem); // architect menu MenuItem architectItem = new MenuItem("Architect", "architect"); foreach (string site in architectOf) { architectItem.ChildItems.Add(new MenuItem(site, site, null, "/architect/show/" + Server.UrlEncode(site))); } if (architectOf.Count > 0) NavigationMenu.Items.AddAt(1, architectItem); // user & projects management NavigationMenu.Items.Add(new MenuItem("Manage users", "users", null, "/sys/users")); if (globalRights >= 10000) // this is the one and only project manager for this application instance NavigationMenu.Items.Add(new MenuItem("Manage projects", "projects", null, "/sys/projects")); // account settings for logged in users MenuItem accountItem = new MenuItem("Account", "account"); accountItem.ChildItems.Add(new MenuItem("Change password", null, null, "/account/change-password")); accountItem.ChildItems.Add(new MenuItem("Logout", null, null, "/account/logout")); NavigationMenu.Items.Add(accountItem); } else { MenuItem accountItem = new MenuItem("Account", "account"); accountItem.ChildItems.Add(new MenuItem("Login", null, null, "/account/login")); accountItem.ChildItems.Add(new MenuItem("Register", null, null, "/account/register")); NavigationMenu.Items.Add(accountItem); } NavigationMenu.RenderingMode = MenuRenderingMode.Table; } }
private void button1_Click(object sender, RoutedEventArgs e) { /* string connstring = "Server=109.74.158.75;Uid=dotnet;Pwd=dotnet;Database=ks;pooling=false"; DataTable log = new DataTable(); log.Columns.Add(new DataColumn("query", typeof(string))); log.Columns.Add(new DataColumn("time", typeof(int))); BaseDriverMySql driver = new BaseDriverMySql(connstring, log); DateTime actDate = DateTime.Now; int[] inlist = { 18, 28, 38, 39 }; DataTable table = driver.fetchAll("SELECT DATEDIFF(DATE(", actDate, "), `date`)", " FROM `users` WHERE `id` IN ", inlist); label1.Content = table.Rows.Count.ToString(); Field f1 = new Field(1, "col", 1, "type", 1); //label1.Content += f1.column + " " + f1.typeName; //f1.typeName = "dddd"; DataTable tree = new DataTable("tree"); tree.Columns.Add("id", typeof(int)); tree.Columns.Add("parent", typeof(int)); tree.Rows.Add(1, null); tree.Rows.Add(2, 1); tree.Rows.Add(3, 1); tree.Rows.Add(4, 2); DataSet ds = new DataSet(); ds.Tables.Add(tree); ds.Relations.Add(new DataRelation("r", tree.Columns[0], tree.Columns[1])); DataRow[] children = ds.Tables["tree"].Rows[0].GetChildRows("r"); foreach (DataRow r in children) { label1.Content += " ch " + r[0]; } */ MySqlConnection conn = new MySqlConnection("Server=109.74.158.75;Uid=django;Pwd=heslo;Database=django;pooling=false"); //MySqlCommand cmd = new MySqlCommand("SELECT * FROM users LIMIT 1", conn); conn.Open(); //MySqlDataAdapter adap = new MySqlDataAdapter("SELECT * FROM users LIMIT 1", conn); label1.Content = conn.State.ToString(); DataTable tab = new DataTable(); conn.Close(); /* adap.Fill(tab); textBox2.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; foreach (DataColumn col in tab.Columns) { textBox2.Text += col.ColumnName + Environment.NewLine; foreach (var prop in col.GetType().GetProperties()) { textBox2.Text += prop.Name + " = " + prop.GetValue(col, null) + Environment.NewLine; } } */ textBox2.Text += "Creating basic objects" + Environment.NewLine; string dbName = "naborycz"; stats = new StatsMySql( dbName, "Server=109.74.158.75;Uid=dotnet;Pwd=dotnet;Database=information_schema;pooling=true"); sysDriver = new SystemDriverMySql( "Server=109.74.158.75;Uid=dotnet;Pwd=dotnet;Database=deskmin;pooling=true"); CE.project = sysDriver.getProject(1); webDriver = new WebDriverMySql( "Server=109.74.158.75;Uid=dotnet;Pwd=dotnet;Database=" + dbName + ";pooling=false"); architect = new Architect(sysDriver, stats); architect.Notice += new ArchitectNotice(Architect_Notice); this.AdditionalArchitectNotice += new ArchitectNotice(Architect_Notice); architect.Question += new ArchitectQuestion(Architect_Question); architect.Error += new ArchitectureError(Architect_Error); architect.Warning += new ArchitectWarning(Architect_Warning); //AsyncProposeCaller caller = new AsyncProposeCaller(architect.propose); //AsyncCallback callback = new AsyncCallback(ProposalReady); Task<IPanel> proposalTask = new Task<IPanel>(()=> { return architect.propose(); } ); proposalTask.ContinueWith((taskResult) => ProposalReady(taskResult)); proposalTask.Start(); /* Task<string> task = new Task<string>((obj) => { return Work(data); }, state); if (callBack != null) { task.ContinueWith((tsk) => callBack(tsk)); } */ //IAsyncResult asyncResult = caller.BeginInvoke(callback, proposal); //IPanel proposal = architect.propose(); //IPanel proposal = caller.EndInvoke(asyncResult); /* DataRow row = tab.Rows[0]; foreach(DataColumn col in row.Table.Columns){ label1.Content += Environment.NewLine + col.ColumnName + " " + row[col.ColumnName]; } conn.Close(); */ }