using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; using System.Xml; using System.Net; public partial class ProjectDetails : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { //currTimeStampLabel.Text = "Today is " + Utilities.GetFormattedDateTime(); // TEMPORARY //coeRefNumTextBox.Text = "10000"; //Add client side Javascript to refresh tree control when page is submitted Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "RefreshTree", "top.fraTree.document.location.reload();"); if (!Page.IsPostBack) { // Get Windows ID of user string logonUserName = Utilities.GetLoggedInUserID(User.Identity.Name); //lblHeader.Text = "You are logged in as " + logonUserName; // Check if user is an authorized user of the system MembershipUser user = Membership.GetUser(logonUserName); if (user != null) { if (Roles.IsUserInRole(logonUserName, "AdminFinance") || Roles.IsUserInRole(logonUserName, "ReadOnlyFull") || Roles.IsUserInRole(logonUserName, "WaitingRoleAssignment")) { // Their account exists but not in role "AdminPlanning" or a Board/Portfolio, so redirect to homepage //Response.Redirect("Default.html", true); Server.Transfer("accessdenied.html", true); } else { #region Populate Combos //ASP.NET 2.0 SqlDataSource ds = new SqlDataSource(); ds.ConnectionString = ConfigurationManager.ConnectionStrings["cnPPDB"].ToString(); ds.DataSourceMode = SqlDataSourceMode.DataSet; // Populate drop-downs Utilities.populateCombo(ds, proposalStatusDropDown, "mspPPStatusGetAll", "PPStatusID", "PPStatus"); // Select the second item, which is "Pre-event Details", since "New" is not used proposalStatusDropDown.SelectedIndex = 2; Utilities.populateCombo(ds, categoryDropDown, "mspEventCategoryGetAll", "EventCategoryID", "EventCategory"); Utilities.populateCombo(ds, startHourDropDown, "mspHourGetAll", "HourID", "HourValue"); Utilities.populateCombo(ds, startMinuteDropDown, "mspMinuteGetAll", "MinuteID", "MinuteValue"); Utilities.populateCombo(ds, endHourDropDown, "mspHourGetAll", "HourID", "HourValue"); Utilities.populateCombo(ds, endMinuteDropDown, "mspMinuteGetAll", "MinuteID", "MinuteValue"); Utilities.populateCombo(ds, jkNameDropDown, "mspJKGetAll", "JKID", "JKName"); Utilities.populateCombo(ds, boardPortfolioDropDown, "mspBoardPortfolio", "BoardPortfolioID", "BoardPortfolioName"); Utilities.populateList(ds, keyPartnerListBox, "mspBoardPortfolio", "BoardPortfolioID", "BoardPortfolioName"); Utilities.populateCombo(ds, PrimaryTargetDropDown, "mspTargetSegmentGetAll", "TargetSegmentID", "TargetSegmentName"); Utilities.populateList(ds, SecondaryTargetListBox, "mspTargetSegmentGetAll", "TargetSegmentID", "TargetSegmentName"); startHourDropDown.Items.Remove("Select One"); startMinuteDropDown.Items.Remove("Select One"); endHourDropDown.Items.Remove("Select One"); endMinuteDropDown.Items.Remove("Select One"); jkNameDropDown.Items.Remove("Select One"); jkNameDropDown.Items.Insert(0, "Venue is not a JK"); #endregion #region Set up calendar control // Set up special dates eventDateCalendar.AddSpecialDate(-1, 7, 11, "Immamat Day"); eventDateCalendar.AddSpecialDate(-1, 3, 21, "Navroz"); eventDateCalendar.AddSpecialDate(-1, 12, 13, "Shah Karim's B'day"); //To add dates programatically, do so in a loop //eventDateCalendar.AddSpecialDate(Convert.ToDateTime(dateVenueRow.ProposedProjectDate.ToString()), projectRow.ProjectTitle); // Set up calendar behavior eventDateCalendar.DatePickerMode = true; //These are set by ReadWriteManager.cs //eventDateCalendar.AllowDeselect = true; //eventDateCalendar.OnClientDateChanged = "onDateChange"; //eventDateCalendar.TextBoxId = proposedDateTextBox.ID; eventDateCalendar.DateFormat = "MMM dd yyyy"; // Set Min date to today's date. GetFormattedDate() returns today's date in format MMM DD, YYYY //eventDateCalendar.DateMin = Convert.ToDateTime(Utilities.GetFormattedDate()); // Set Min date to date specified in Web.config variable "MinCalendarDate" eventDateCalendar.DateMin = Convert.ToDateTime(ConfigurationManager.AppSettings["MinCalendarDate"]); // Set Max date to date specified in Web.config variable "MaxCalendarDate" eventDateCalendar.DateMax = Convert.ToDateTime(ConfigurationManager.AppSettings["MaxCalendarDate"]); eventDateCalendar.TitleText = "Today is " + DateTime.Now.ToString("dddd MMMM dd, yyyy") + " "; eventDateCalendar.ShowYearSelector = false; #endregion #region Set up other controls if (Roles.IsUserInRole(logonUserName, "AdminPlanning")) { sendEmailNotifCheckBox.Enabled = true; // Remove statuses that don't make sense during PP creation RemovePPStatus(); RemovePPStatus("Pre-event Review"); } else //if (Roles.IsUserInRole(logonUserName, "ChairBoardPortfolio")) { // Remove statuses that don't make sense during PP creation RemovePPStatus(); RemovePPStatus("Pre-event Review"); // Remove statuses that this role is not allowed to select RemovePPStatus("New"); RemovePPStatus("Event Implementation"); // Set up board/portfolio of logged on user SetBPDropDown(logonUserName); } // Finish setting proposalStatusDropDown proposalStatusDropDown.Items.Remove("Select One"); // Set "Created By" label CreatedByValueLabel.Text = logonUserName; // Set the focus on the Project Title textbox projectTitleTextBox.Focus(); #endregion } } else { // Their account doesn't exists, so redirect to homepage, which will redirect to "request access" page Response.Redirect("Default.html", true); } } } protected void RemovePPStatus() { for (int x = proposalStatusDropDown.Items.Count - 1; x > 4; x--) { proposalStatusDropDown.Items.RemoveAt(x); } } protected void RemovePPStatus(string PPStatus) { string ppItemStr; for (int x = proposalStatusDropDown.Items.Count - 1; x > 0; x--) { ListItem ppItem = proposalStatusDropDown.Items[x]; ppItemStr = ppItem.ToString(); if (ppItemStr == PPStatus) { proposalStatusDropDown.Items.RemoveAt(x); } } } protected void SetBPDropDown(string logonUserName) { string boardPortfolioName = ""; string[] rolesArray; rolesArray = Roles.GetRolesForUser(logonUserName); if (rolesArray.Length >= 1) { ArrayList boardPortfolioNameArrayList = new ArrayList(); foreach (string str in rolesArray) { if (str != "ChairBoardPortfolio") { boardPortfolioName = ReadWriteManager.GetUserBoardPortfolio(str); //Response.Write("<br>User in role: " + boardPortfolioName); boardPortfolioNameArrayList.Add(boardPortfolioName); } } bool keepItem; bool matchFound = false; string bpItemStr; for (int x = boardPortfolioDropDown.Items.Count - 1; x > 0; x--) { ListItem bpItem = boardPortfolioDropDown.Items[x]; //Response.Write("<br>" + bpItem.ToString()); bpItemStr = bpItem.ToString(); keepItem = false; foreach (string bpName in boardPortfolioNameArrayList) { //Response.Write("<br>" + bpName); if ((bpItemStr == bpName) && (keepItem == false)) //if ((String.Compare(@bpItemStr, @bpName, true) == 0) && (keepItem == false)) { keepItem = true; matchFound = true; } } if (keepItem == false) { //Response.Write("<br>" + bpItemStr); // Method "Remove" does NOT work for items bounded from DB. Use method "RemoveAt" instead //boardPortfolioDropDown.Items.Remove(bpItemStr); boardPortfolioDropDown.Items.RemoveAt(x); } } //if (matchFound == true) //{ // Response.Write("<br><br>Match found."); //} //else //{ // Response.Write("<br><br>Match NOT found."); //} // If they belong to only one board, set it for them // Need to check for 2 items b/c first item is "Select One" if (boardPortfolioDropDown.Items.Count == 2) { boardPortfolioDropDown.Items.Remove("Select One"); boardPortfolioDropDown.Items.FindByText(boardPortfolioName.ToString()).Selected = true; } } } protected void createProjectButton_Click(object sender, EventArgs e) { Page.Validate("eventDetails"); bool result; string successFailureMsg; // Get project details from form string coeRefNum = ""; int ppStatusID; result = Int32.TryParse(proposalStatusDropDown.SelectedValue, out ppStatusID); string ppStatus = proposalStatusDropDown.SelectedItem.ToString(); string projectTitle = projectTitleTextBox.Text; string projectDescription = descriptionTextBox.Text; int eventCategoryID; result = Int32.TryParse(categoryDropDown.SelectedValue, out eventCategoryID); DateTime proposedProjectDate; result = DateTime.TryParse(proposedDateTextBox.Text, out proposedProjectDate); DateTime proposedStartTime; result = DateTime.TryParse(startHourDropDown.SelectedItem + ":" + startMinuteDropDown.SelectedItem, out proposedStartTime); DateTime proposedEndTime; result = DateTime.TryParse(endHourDropDown.SelectedItem + ":" + endMinuteDropDown.SelectedItem, out proposedEndTime); int jkID = -1; result = Int32.TryParse(jkNameDropDown.SelectedValue, out jkID); Int16 expectedParticipants; result = Int16.TryParse(expectedParticipantsTextBox.Text, out expectedParticipants); int boardPortfolioID; result = Int32.TryParse(boardPortfolioDropDown.SelectedValue, out boardPortfolioID); string boardPortfolioName = boardPortfolioDropDown.SelectedItem.Text; //key partners string keyPartners = ""; for (int i = 1; i <= keyPartnerListBox.Items.Count - 1; i++ ) { if (keyPartnerListBox.Items[i].Selected == true) { keyPartners += keyPartnerListBox.Items[i].Value + ";"; } } int primaryTargetSegmentID; // = Convert.ToInt32(PrimaryTargetDropDown.SelectedValue); result = Int32.TryParse(PrimaryTargetDropDown.SelectedValue, out primaryTargetSegmentID); //secondary target segments string secondaryTargetSegments = ""; for (int i = 1; i <= SecondaryTargetListBox.Items.Count - 1; i++) { if (SecondaryTargetListBox.Items[i].Selected == true) { secondaryTargetSegments += SecondaryTargetListBox.Items[i].Value + ";"; } } string projectNotes = projectNotesTextBox.Text; string createdBy = CreatedByValueLabel.Text; string modifiedBy = CreatedByValueLabel.Text; //create vars needed for email notification string startDateForEmail = proposedDateTextBox.Text; string startTimeForEmail = startHourDropDown.SelectedItem + ":" + startMinuteDropDown.SelectedItem; string endTimeForEmail = endHourDropDown.SelectedItem + ":" + endMinuteDropDown.SelectedItem; bool sendEmailNotif = sendEmailNotifCheckBox.Checked; //call method that will handle the creation of the new PP successFailureMsg = Project.CreateNewPP(projectTitle, coeRefNum, eventCategoryID, projectDescription, projectNotes, createdBy, modifiedBy, boardPortfolioID, boardPortfolioName, keyPartners, primaryTargetSegmentID, secondaryTargetSegments, expectedParticipants, proposedProjectDate, startDateForEmail, proposedStartTime, startTimeForEmail, proposedProjectDate, proposedEndTime, endTimeForEmail, jkID, ppStatusID, ppStatus, sendEmailNotif); // Display message for user saveResultLabel.Text = saveResultLabel2.Text = successFailureMsg + "<br>"; // top and bottom of page // Clear all fields ClearForm(); // set the focus in the project title field projectTitleTextBox.Focus(); } protected void clearFormButton_Click(object sender, EventArgs e) { ClearForm(); } protected void ClearForm() { // clear all the fields projectTitleTextBox.Text = ""; descriptionTextBox.Text = ""; categoryDropDown.SelectedIndex = 0; // NOTE: Both steps below required to clear the textbox // clear the date textbox proposedDateTextBox.Text = ""; // blank the selected date in the calendar DateTime proposedProjectDate; bool result = DateTime.TryParse("", out proposedProjectDate); eventDateCalendar.SelectedDate = proposedProjectDate; startHourDropDown.SelectedIndex = 0; startMinuteDropDown.SelectedIndex = 0; endHourDropDown.SelectedIndex = 0; endMinuteDropDown.SelectedIndex = 0; jkNameDropDown.SelectedIndex = 0; expectedParticipantsTextBox.Text = ""; boardPortfolioDropDown.SelectedIndex = 0; keyPartnerListBox.SelectedIndex = 0; PrimaryTargetDropDown.SelectedIndex = 0; SecondaryTargetListBox.SelectedIndex = 0; projectNotesTextBox.Text = ""; CreatedByValueLabel.Text = ""; // set the focus in the project title field projectTitleTextBox.Focus(); } }