public MainForm() { InitializeComponent(); MainPanel.Controls.Add(new Home()); BackHome.Visible = false; var adobePath = Registry.GetValue(@"HKEY_CLASSES_ROOT\Software\Adobe\Acrobat\Exe", string.Empty, string.Empty); if (adobePath == null) { MessageBox.Show("Please install adobe reader to fully utilize the system's functionality", "Adobe Reader Not Found", MessageBoxButtons.OK); } TempFileHandler.CleanTempFile(); if (Reviewer.IsAdmin) { ToolStripMenuItem AdminButton = new ToolStripMenuItem("Admin"); Menu.Items.Add(AdminButton); ToolStripMenuItem button = new ToolStripMenuItem("Users List"); button.Click += UserListBtn; AdminButton.DropDownItems.Add(button); } }
private void SaveFeedbackBtn_Click(object sender, EventArgs e) { if (PositionList.SelectedIndex == -1) { MessageBox.Show("Select a position", "Missing attributes!"); return; } if (ApplicantList.SelectedIndex == -1) { MessageBox.Show("Select an applicant", "Missing attributes!"); return; } if (_currentFeed.Header == null) { MessageBox.Show("Please select the header before proceeding", "Missing component!"); return; } if (_currentFeed.Sections.Count <= 0) { MessageBox.Show("Please select the sections before proceeding", "Missing component!"); return; } _currentFeed.ReviewerId = Reviewer.Id.ToString(); //check if there are null values in the header foreach (HeaderItem item in _currentFeed.Header.HeaderItems) { Control control = Controls.Find("header" + item.Id, true)[0]; try { switch (control.GetType().Name) { case "TextBox": case "Label": item.ValueChosen = ((TextBox)control).Text; break; case "ComboBox": item.ValueChosen = ((ComboBox)control).SelectedItem.ToString(); break; case "DateTimePicker": item.ValueChosen = ((DateTimePicker)control).Value.ToString("dd/MM/yyyy"); break; } if (item.ValueChosen.Length <= 0) { throw new NullReferenceException(); } } catch (NullReferenceException) { MessageBox.Show("Please complete the header before proceeding", "Missing attributes!"); return; } catch (Exception ex) { MessageBox.Show(ex.Message, "Error!"); return; } } bool sectionChecked = false; //check if there is null values in the sections foreach (Section s in _currentFeed.Sections) { RichTextBox text = (RichTextBox)Controls.Find("comment" + s.SectionId, true)[0]; ComboBox codes = (ComboBox)Controls.Find("codes" + s.SectionId, true)[0]; CheckBox checker = (CheckBox)Controls.Find("checker" + s.SectionId, true)[0]; if (codes.SelectedIndex == -1) { MessageBox.Show("Please complete the sections before proceeding -> Codes", "Missing attributes!"); return; } //Assign values to section object s.Comment = text.Text; s.CodeChosen = codes.SelectedItem.ToString(); s.IsChecked = checker.Checked; if (s.Comment.Length <= 0) { MessageBox.Show("Please complete the sections before proceeding -> Comment", "Missing attributes!"); return; } if (s.IsChecked) { sectionChecked = true; } } if (!sectionChecked) { MessageBox.Show("Please check at least one section!", "Missing attributes!"); return; } //end of field checkers MySql sql = new MySql(); sql.OpenConnection(); try { //update or insert the feedback if (String.IsNullOrEmpty(_currentFeed.FeedbackID)) { if (sql.SaveFeedback(_currentFeed)) { MessageBox.Show("Feedback successfully saved."); } } else { if (sql.UpdateFeedback(_currentFeed)) { MessageBox.Show("Feedback successfully updated."); } } //checks whether is all the applications for the position is completed if (CheckPositionIsCompleted()) //means all of the applications have generated the feedback { var result = MessageBox.Show("All the feedbacks for this current position: " + _currentFeed.Position._positionName + " is completed. \n Please choose the file name of the attachehment to be send to the applicants. \n Yes for Applicant name or No for Applicant code" , "Select file name", MessageBoxButtons.YesNo); //true for name false for code bool filename = (result == DialogResult.Yes ? true : false); try { int count = 0; SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); foreach (Applicant app in sql.GetEmailList(_currentFeed.Position._positionId)) { string currentFilename = (filename ? app.Name : app.Id); MailMessage mail = new MailMessage(new MailAddress("*****@*****.**"), new MailAddress(app.Email)); mail.Subject = "Application feedback for " + _currentFeed.Position._positionName + " in HappyTech."; mail.Body = "Hi " + app.Name + ",\nPlease find the attached file as the feedback from us regarding your application at HappyTech. \n\nRegards,\nHappy Tech HR"; System.Net.Mail.Attachment attachment; attachment = new System.Net.Mail.Attachment(TempFileHandler.MakeTempFilePdf(app.Pdf, currentFilename)); mail.Attachments.Add(attachment); SmtpServer.Port = 587; SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network; SmtpServer.UseDefaultCredentials = false; SmtpServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "happytech123"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail); count++; } MessageBox.Show("Total of " + count + " emails are sent."); } catch (Exception exc) { throw exc; } } } catch (Exception exc) { MessageBox.Show(exc.ToString(), "Ops! Error occured!"); } finally { sql.CloseConnection(); } }
private void ApplicantList_SelectedIndexChanged(object sender, EventArgs e) { SaveTemplateBtn.Enabled = false; ChangeHeader.Visible = false; AddSectionBtn.Visible = false; if (ApplicantList.SelectedIndex != -1) { PDFDisplay.DocumentText = "<HTML><CENTER>Loading...</CENTER></HTML>"; Applicant app = (Applicant)ApplicantList.SelectedItem; _currentFeed.Applicant = app; if (app.Pdf != null) { string tempFile = TempFileHandler.MakeTempFile(app.Pdf); PDFDisplay.Navigate(tempFile); } else { PDFDisplay.DocumentText = "<HTML><CENTER>No PDF found</CENTER></HTML>"; } MySql sql = new MySql(); sql.OpenConnection(); DataTable Dt = sql.GetDataSet("SELECT * FROM feedbacksystem.feedback WHERE feedback.PositionID = " + _currentFeed.Position._positionId + " AND feedback.AppID = " + _currentFeed.Applicant.Id); if (Dt != null && Dt.Rows.Count > 0) { Feedback tmpFeedback = sql.GetFeedback(Dt.Rows[0]["FeedbackID"].ToString()); _currentFeed.FeedbackID = Dt.Rows[0]["FeedbackID"].ToString(); _currentFeed.Header = tmpFeedback.Header; _currentFeed.Sections = tmpFeedback.Sections; FillHeader(); FillSection(); ChangeHeader.Visible = !CheckPositionIsCompleted(); AddSectionBtn.Visible = !CheckPositionIsCompleted(); SaveFeedbackBtn.Text = "Update Feedback"; } else { SaveFeedbackBtn.Text = "Save Feedback"; _currentFeed.FeedbackID = ""; if (_currentFeed.Header != null) { _currentFeed.Header.HeaderItems.Clear(); //in order to reset the header items value for the cascading _currentFeed.Header.HeaderItems = sql.GetHeaderItems(_currentFeed.Header.HeaderId); ChangeHeader.Visible = true; FillHeader(); } if (_currentFeed.Sections.Count > 0) { foreach (Section sec in _currentFeed.Sections) { sec.Comment = null; sec.CodeChosen = null; sec.IsChecked = false; } AddSectionBtn.Visible = true; FillSection(); } } sql.CloseConnection(); SetTemplateBtn.Enabled = !CheckPositionIsCompleted(); } }
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { TempFileHandler.CleanTempSession(); }