Пример #1
0
 /// <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();
 }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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;
                }
            }));
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        /// <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);
            }
        }
Пример #7
0
        /// <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;
                }
            }
        }
Пример #8
0
        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.");
                }
            }
        }