/// <summary> /// Shows profile edit form. Populates form with academician info /// </summary> /// <param name="id"></param> public void ShowProfileEditForm(Academician ac) { ShowLoading(); addForm = new ProfileEditForm(ac); ActivateChildForm(addForm, false); FadeOutLoading(); }
/// <summary> /// Create profile of academican with given id /// </summary> /// <param name="id">id number of academican</param> public ProfileForm(int id, bool isAdminLoggedIn) { InitializeComponent(); image.Image = AcademicIS.Properties.Resources.profile1; if (isAdminLoggedIn) { editButton.Visible = true; editButtonVisibility = true; deleteButton.Visible = true; deleteButtonVisibility = true; } db = new DbHelper(); ac = db.GetAcademician(id); nameLabel.Text = ac.Name; facultyLabel.Text = ac.Faculty; departmentLabel.Text = ac.Department; mailLabel.Text = ac.Mail; telLabel.Text = ac.Phone; webLabel.Text = ac.Website; if (ac.Detail_RTF.StartsWith(@"{\rtf")) { detailsRTB.Rtf = ac.Detail_RTF; } }
public Academician GetAcademician(int id) { DataTable table = new DataTable(); SqlCommand command = new SqlCommand( "SELECT A.*, F.Faculty_name, D.Department_name " + "FROM Academician as A, Faculty as F, Department as D " + "WHERE A.Id = @Id " + "AND A.Faculty_id = F.Id " + "AND A.Department_id = D.Id ", conn); command.Parameters.AddWithValue("@Id", id); SqlDataAdapter adp = new SqlDataAdapter(command); conn.Open(); adp.Fill(table); conn.Close(); DataRow row = table.Rows[0]; // we will have only one row // Academician details are in RTF in database. However, when retrieving data, // something escapes every \ char to \\ . So some string like "{\\rtf1\\ansi" // is becoming "{\\\\rtf1\\\\ansi". Below line hotfixes that problem by simply // replacing it back. Maybe better solution? string rtf = row["Detail_info"].ToString().Replace("\\\\", "\\"); int facId = int.Parse(row["Faculty_id"].ToString()); int depId = int.Parse(row["Department_id"].ToString()); Academician ac = new Academician(id, row["Name"].ToString(), facId, row["Faculty_name"].ToString(), depId, row["Department_name"].ToString(), row["Mail"].ToString(), row["Phone"].ToString(), row["Website"].ToString(), rtf); return(ac); }
public Task <List <Academician> > GetAcademiciansAsync() { return(Task.Run(() => { string query = "Select A.Id, Name, Faculty_name, Department_name " + "FROM Academician as A, Faculty as F, Department as D " + "WHERE A.Faculty_id = F.Id " + "AND A.Department_id = D.Id "; using (SqlDataAdapter adp = new SqlDataAdapter(query, conn)) { DataTable table = new DataTable(); conn.Open(); adp.Fill(table); conn.Close(); List <Academician> acList = new List <Academician>(); foreach (DataRow row in table.Rows) { int id = int.Parse(row[0].ToString()); Academician acTemp = new Academician(id, row[1].ToString(), row[2].ToString(), row[3].ToString()); acList.Add(acTemp); } return acList; } })); }
public bool UpdateAcademician(Academician ac) { try { string query = "UPDATE Academician " + "SET Name = @Name, Faculty_id = @FacId, Department_id = @DepId, " + "Mail = @Mail, Phone = @Phone, Website = @Website, " + "Detail_info = @DetailInfo " + "WHERE Id = @Id"; conn.Open(); SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@Name", ac.Name); cmd.Parameters.AddWithValue("@FacId", ac.Faculty_id); cmd.Parameters.AddWithValue("@DepId", ac.Deparment_id); cmd.Parameters.AddWithValue("@Mail", ac.Mail); cmd.Parameters.AddWithValue("@Phone", ac.Phone); cmd.Parameters.AddWithValue("@Website", ac.Website); cmd.Parameters.AddWithValue("@DetailInfo", ac.Detail_RTF); cmd.Parameters.AddWithValue("@Id", ac.Id); cmd.ExecuteNonQuery(); conn.Close(); return(true); } catch (Exception e) { Console.WriteLine("An error ocurred when inserting new row. Message: " + e.Message); return(false); } }
/// <summary> /// Inserts given academician to database and returns its ID. /// Returns -1 if insertion fails. /// </summary> /// <param name="ac">Academician to insert</param> /// <returns>Inserted academicians id</returns> public int InsertAcademician(Academician ac) { try { string query = "INSERT INTO Academician " + "OUTPUT INSERTED.ID " + "VALUES(@Name, @FacId, @DepId, @Mail, @Phone, @Website, " + "@DetailInfo )"; conn.Open(); SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@Name", ac.Name); cmd.Parameters.AddWithValue("@FacId", ac.Faculty_id); cmd.Parameters.AddWithValue("@DepId", ac.Deparment_id); cmd.Parameters.AddWithValue("@Mail", ac.Mail); cmd.Parameters.AddWithValue("@Phone", ac.Phone); cmd.Parameters.AddWithValue("@Website", ac.Website); cmd.Parameters.AddWithValue("@DetailInfo", ac.Detail_RTF); Int32 insertedId = (Int32)cmd.ExecuteScalar(); conn.Close(); return(insertedId); } catch (Exception e) { Console.WriteLine("An error ocurred when inserting new row. Message: " + e.Message); return(-1); } }
/// <summary> /// This constructor will populate form fields with given academician's /// data. Use empty constructor when adding new academician. /// </summary> /// <param name="id">Id of the academician to load</param> public ProfileEditForm(Academician _ac) { InitializeComponent(); rtfTools.Renderer = new CustomRenderer(); //for styling purposes alertBox.BringToFront(); db = new DbHelper(); list = db.GetFacultyAndDepartments(); foreach (FacDep fac in list.Keys) { facultyCB.Items.Add(fac); } this.ac = _ac; if (ac != null) { // we will populate form with given academician data deleteButton.Visible = true; nameTB.Text = ac.Name; mailTB.Text = ac.Mail; phoneTB.Text = ac.Phone; websiteTB.Text = ac.Website; //select faculty from faculty list with LINQ FacDep fac = list.Keys.Single(f => f.id == ac.Faculty_id); facultyCB.SelectedIndex = facultyCB.Items.IndexOf(fac); //select department from department list with LINQ FacDep dep = list[fac].Single(d => d.id == ac.Deparment_id); departmentCB.SelectedIndex = departmentCB.Items.IndexOf(dep); if (ac.Detail_RTF.StartsWith(@"{\rtf")) { detailRichTB.Rtf = ac.Detail_RTF; } } }
private void saveButton_Click(object sender, EventArgs e) { if (nameTB.Text.Length < 3) { ShowError("Ad soyad en az 3 karakter olmalı."); return; } if (!mailTB.Text.Contains("@") || !mailTB.Text.Contains(".") || mailTB.Text.Length < 5) { ShowError("Geçersiz eposta adresi"); return; } if (System.Text.RegularExpressions.Regex.IsMatch(phoneTB.Text, @"[a-zA-Z]") || System.Text.RegularExpressions.Regex.IsMatch(phoneTB.Text, @"[^\w+-]") || (phoneTB.Text.Length > 1 && phoneTB.Text.Length < 7)) { ShowError("Geçersiz telefon numarası"); return; } if (facultyCB.SelectedIndex == -1) { ShowError("Bir fakülte seçmediniz."); return; } if (departmentCB.SelectedIndex == -1) { ShowError("Bir bölüm seçmediniz."); return; } FacDep fac = (FacDep)facultyCB.SelectedItem; FacDep dep = (FacDep)departmentCB.SelectedItem; if (ac == null) { //Its new academician, lets create it and insert it to db ac = new Academician(-1, nameTB.Text, fac.id, fac.name, dep.id, dep.name, mailTB.Text, phoneTB.Text, websiteTB.Text, detailRichTB.Rtf); int insertedId = db.InsertAcademician(ac); if (insertedId != -1) { //inserted to db successfully, redirect to profile page ((MainForm)MdiParent).ShowProfileForm(insertedId); } else { ShowError("Yeni kayıt eklenirken bir hata oluştu."); } } else { //create new academician with updated fields Academician _ac = new Academician(ac.Id, nameTB.Text, fac.id, fac.name, dep.id, dep.name, mailTB.Text, phoneTB.Text, websiteTB.Text, detailRichTB.Rtf); bool successful = db.UpdateAcademician(_ac); if (successful) { ((MainForm)MdiParent).ShowProfileForm(_ac.Id); } else { ShowError("Kayıt güncellenirken bir hata oluştu."); } } }