private void Follow(object sender, EventArgs e, string project) { // need a timestamp for the notification, also needs some leeway as sending to the server may take a second // or more depending on connection. DateTime timestamp = DateTime.Now; string stringTime = timestamp.ToString("yyyy-MM-dd HH:mm:ss");; string toStringTime = timestamp.AddSeconds(5).ToString("yyyy-MM-dd HH:mm:ss"); // create a follow project object which will notify the project poster that a user wants access SqlFollow sq = new SqlFollow(); Connection.GetDbConn().CreateCommand(SqlFollow.FollowProject(UserObject.loggedUser.iduser, currentProject)); // has to create a notification with relevant deatils SqlNotifications notif = new SqlNotifications(); notif.InsertNotification(UserObject.loggedUser.iduser, project, "", "", "follow", "", timestamp); // have to get the new notif's id to make a toNotif object, have to use time here as its possible // that a user might make multiple requests or might follow, unfollow, then want back in DataSet getNotifId = Connection.GetDbConn().GetDataSet($"SELECT idnotification FROM notification" + $" WHERE usernotif = {UserObject.loggedUser.iduser} AND project = {project} AND timestamp BETWEEN '{stringTime}' AND '{toStringTime}' "); string newNotifId = getNotifId.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); // need to get the project owner's id DataSet projectOwner = Connection.GetDbConn().GetDataSet($"SELECT user FROM project WHERE idproject = {project}"); string ownerId = projectOwner.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); notif.InsertToNotify(newNotifId, ownerId, "0"); MessageBox.Show("Followed"); //catch (Exception) //{ // MessageBox.Show("Request already sent"); //} }
private void Follow(object sender, EventArgs e) { // add a folow object to link the logged in user and this bug // need a timestamp for the notification, also needs some leeway as sending to the server may take a second // or more depending on connection. DateTime timestamp = DateTime.Now; string stringTime = timestamp.ToString("yyyy-MM-dd HH:mm:ss");; string toStringTime = timestamp.AddSeconds(5).ToString("yyyy-MM-dd HH:mm:ss"); // create a follow project object which will notify the project poster that a user wants access SqlFollow sq = new SqlFollow(); Connection.GetDbConn().CreateCommand(SqlFollow.FollowBug(UserObject.loggedUser.iduser, currentBug.idbug)); // has to create a notification with relevant deatils SqlNotifications notif = new SqlNotifications(); notif.InsertNotification(UserObject.loggedUser.iduser, currentBug.project, currentBug.idbug, "", "bugfollow", "", timestamp); // have to get the new notif's id to make a toNotif object, have to use time here as its possible // that a user might make multiple requests or might follow, unfollow, then want back in // copied logic from following a project here as unlikely user will have multiple notifications on the same project // with the same timestamp DataSet getNotifId = Connection.GetDbConn().GetDataSet($"SELECT idnotification FROM notification" + $" WHERE usernotif = {UserObject.loggedUser.iduser} AND project = {currentBug.project} AND timestamp BETWEEN '{stringTime}' AND '{toStringTime}' "); string newNotifId = getNotifId.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); // need to notify the bug's poster DataSet bugPoster = Connection.GetDbConn().GetDataSet($"SELECT poster FROM bug WHERE idbug = {currentBug.idbug}"); string posterId = bugPoster.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); notif.InsertToNotify(newNotifId, posterId, "0"); MessageBox.Show("Followed"); }
private void RequestAccess(object sender, EventArgs e, ProjectObject project) { // create a follow project object which will notify the project poster that a user wants access try { // creates follow table row, as this is a private project (public projects are followed on bugsform) // sends a notification to the poster of the project to advise the user wants access. DateTime now = DateTime.Now; string timestamp = now.ToString("yyyy-MM-dd HH:mm:ss"); string timestampTo = now.AddSeconds(5).ToString("yyyy-MM-dd HH:mm:ss"); SqlProject sq = new SqlProject(); SqlNotifications notif = new SqlNotifications(); Connection.GetDbConn().CreateCommand(SqlFollow.FollowProject(UserObject.loggedUser.iduser, project.idproject)); notif.InsertNotification(UserObject.loggedUser.iduser, project.idproject, "", "", "request access", "", now); DataSet getNotifId = Connection.GetDbConn().GetDataSet($"SELECT idnotification FROM notification" + $" WHERE usernotif = {UserObject.loggedUser.iduser} AND project = {project.idproject} AND timestamp BETWEEN '{timestamp}' AND '{timestampTo}'"); string notifId = getNotifId.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); DataSet getProjectOwner = Connection.GetDbConn().GetDataSet($"SELECT user FROM project WHERE idproject = { project.idproject}"); string projOwner = getProjectOwner.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); notif.InsertToNotify(notifId, projOwner, "0"); MessageBox.Show("Request sent to project creator"); } catch (Exception) { MessageBox.Show("Request already sent"); } }
private void Button_PostUpdate_Click(object sender, EventArgs e) { string comment, status, postedBy, bug, timeString, timeStringTo; DateTime now = DateTime.Now; timeString = now.ToString("yyyy-MM-dd HH:mm:ss"); timeStringTo = now.AddSeconds(5).ToString("yyyy-MM-dd HH:mm:ss"); comment = RichText_Update.Text; status = ComboBox_Status.Text; postedBy = UserObject.loggedUser.username; //comment bug = currentBug.idbug; SqlBug updateStatus = new SqlBug(); updateStatus.UpdateStatus(bug, status); SqlUpdate newUpdate = new SqlUpdate(); newUpdate.InsertUpdate(postedBy, comment, bug, status, timeString); Thread.Sleep(1000); // to try and allow status update to reflect when form reloaded DataSet toGetUpdateId = Connection.GetDbConn().GetDataSet($"SELECT idupdate FROM `update`" + $" WHERE postedBy = '{postedBy}' AND timestamp BETWEEN '{timeString}' AND '{timeStringTo}'"); //DataSet ds = Connection.GetDbConn().GetDataSet($"SELECT @@identity"); string newUpdateId = toGetUpdateId.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); //i dont there's there's enough time inbetween this update and the form displaying for the // status change to register on the db, changed so that bug's status is changed first to see if this helps. SqlNotifications notif = new SqlNotifications(); notif.InsertNotification(UserObject.loggedUser.iduser, currentBug.project, currentBug.idbug, newUpdateId, "new update", status, now); DataSet getNotifId = Connection.GetDbConn().GetDataSet($"SELECT idnotification FROM notification" + $" WHERE usernotif = {UserObject.loggedUser.iduser} AND project = {currentBug.project} AND timestamp BETWEEN '{timeString}' AND '{timeStringTo}'"); string notifId = getNotifId.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); DataTable getBugFollowers = Connection.GetDbConn().GetDataTable($"SELECT user FROM followbug WHERE bug = { currentBug.idbug}"); foreach (DataRow follower in getBugFollowers.Rows) { notif.InsertToNotify(notifId, follower["user"].ToString(), "0"); } //string projOwner = getProjectOwner.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); display.DisplayBugInfoForm(currentBug); }
/// <summary> /// Save button clicked, makes a new bug in the database with entered information /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_Save_Click(object sender, EventArgs e) { string title, description, location, status, poster, project, referencedBug, priority; DateTime timePosted; //var referencedBug = ""; title = TextBox_Title.Text; description = RichText_Description.Text; location = TextBox_Location.Text; timePosted = System.DateTime.Now; status = "In Progress"; //maybe on log in have a class (loggedUser) which stores the logged in user's ID, then go to that class //for this info, for now we're using 41 as test user in DB poster = UserObject.loggedUser.iduser; project = currentProject; var prior = (Item)ComboBox_Priority.SelectedItem; priority = prior.Value; if (Combo_RefExistBug.SelectedItem == null) { referencedBug = "0"; } else { referencedBug = Combo_RefExistBug.SelectedValue.ToString(); } SqlBug newBug = new SqlBug(); newBug.InsertBug(title, description, location, timePosted, status, poster, project, priority, referencedBug); // now we need to get the bug's id Thread.Sleep(2000); //string time = timePosted.ToString("yyyy-MM-dd HH:mm:ss"); DataSet ds = Connection.GetDbConn().GetDataSet($"SELECT idbug FROM bug WHERE poster = {poster} AND " + $"title = '{title}' AND project = {project}"); //DataSet ds = Connection.GetDbConn().GetDataSet($"SELECT @@identity"); string newBugId = ds.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); // not we make a notification for the new bug SqlNotifications notif = new SqlNotifications(); notif.InsertNotification(poster, project, newBugId, "", "new bug", status, timePosted); Thread.Sleep(2000); // get the notification's id DataSet getNotifId = Connection.GetDbConn().GetDataSet($"SELECT idnotification FROM notification" + $" WHERE usernotif = {poster} AND project = {project} AND bug = {newBugId} AND `update` = '{"new bug"}'"); string newNotifId = getNotifId.Tables[0].Rows[0].ItemArray.GetValue(0).ToString(); // now we can make a line to notify each user of this new bug // creates a line for each user where the user is following this project DataTable toNotify = Connection.GetDbConn().GetDataTable($"SELECT user FROM followproject " + $"WHERE project = {project}"); Connection.connToDb.Close(); // advising conn already open for query below foreach (DataRow follower in toNotify.Rows) { notif.InsertToNotify(newNotifId, follower["user"].ToString(), "0"); } //InsertBug(string title, int description, string location, DateTime timePosted, string status, //string poster, string project, string priority) display.DisplayBugsForm(currentProject); }