Esempio n. 1
0
 private bool saveSemesterInfo()
 {
     //ensure a semester name was entered
     if (txtSemesterName.Text.Equals(""))
     {
         Util.displayRequiredFieldsError("Semester Name");
     }
     //ensure a semester with the same semester id does not already exist
     else if (Database.attributeExists("semesterID = '" + ctrSemester.Value + "'", "Semester"))
     {
         Util.displayError("The Entered Semester Number Already Exists", "Invalid Semester Number");
     }
     //ensure the end semester date occurs on or after the start semester date
     else if (dtSemesterEndDate.Value < dtSemesterStartDate.Value)
     {
         Util.displayError("The End Date Must Be Later Than The Start Date", "Invalid Semester Dates");
     }
     else
     {
         //update the semester fields in the database
         Database.modifyDatabase("INSERT INTO Semester VALUES('" + ctrSemester.Value + "',"
                                 + Util.quote(txtSemesterName.Text) + ","
                                 + "DATE('" + Database.getDate(dtSemesterStartDate.Value) + "'),"
                                 + "DATE('" + Database.getDate(dtSemesterEndDate.Value) + "'))");
         return(true);
     }
     return(false);
 }
        //a function that updates the list of all events based on the given criteria
        private void updateEventList()
        {
            //clear all events
            eventId.Clear();
            cbEvent.Items.Clear();

            StringBuilder query = new StringBuilder("SELECT e.EventID, Title FROM Event e");

            if (cbClassFilter.SelectedIndex == -1)
            {
                query.Append(" LEFT OUTER JOIN GradedAssignment g ON e.EventID = g.EventID");
            }
            else
            {
                query.Append(" NATURAL JOIN GradedAssignment");
            }

            //convert the date value in the datetimepicker into SQLite format
            string date = Database.getDate(dtFilterDate.Value);

            if (chkDateFilter.Checked == true)
            {
                query.Append(" WHERE DATETIME('" + date + " 00:00:00') < StartDateTime AND DATETIME('" + date + " 23:59:59') > EndDateTime");
            }

            //determine if a class has been selected
            if (cbClassFilter.SelectedIndex > 0)
            {
                if (query.ToString().Contains("WHERE"))
                {
                    query.Append(" AND");
                }
                else
                {
                    query.Append(" WHERE");
                }
                query.Append(" ClassID = '" + allClassId[cbClassFilter.SelectedIndex - 1] + "' ");
            }

            query.Append(" ORDER BY Title");

            //dynamically add list of possible events to edit
            SQLiteDataReader events = Database.executeQuery(query.ToString());

            while (events.Read() == true)
            {
                eventId.Add(events.GetInt32(0));
                cbEvent.Items.Add(events.GetString(1));
            }
            events.Close();

            //update the save and delete buttons (will disable since no event will be choosen)
            updateButtons();
        }
Esempio n. 3
0
        private bool saveSemester()
        {
            //ensure a semester name was entered
            if (txtSemesterName.Text.Equals(""))
            {
                Util.displayRequiredFieldsError("Semester Name");
            }
            //ensure a semester with the same semester id does not already exist
            else if (semesterId[cbEditSemester.SelectedIndex] != ctrSemesterNum.Value && Database.attributeExists("semesterID = '" + ctrSemesterNum.Value + "'", "Semester"))
            {
                Util.displayError("The Entered Semester Number Already Exists", "Invalid Semester Number");
            }
            //ensure the end semester date occurs on or after the start semester date
            else if (dtSemesterEndDate.Value < dtSemesterStartDate.Value)
            {
                Util.displayError("The End Date Must Be Later Than The Start Date", "Invalid Semester Dates");
            }
            else
            {
                //update the semester fields in the database
                Database.modifyDatabase("UPDATE Semester SET Name = " + Util.quote(txtSemesterName.Text)
                                        + ", StartDate = DATE('" + Database.getDate(dtSemesterStartDate.Value) + "')"
                                        + ", StartDate = DATE('" + Database.getDate(dtSemesterEndDate.Value) + "')"
                                        + " WHERE SemesterID = '" + semesterId[cbEditSemester.SelectedIndex] + "';");

                //update semester id if necessary
                if (semesterId[cbEditSemester.SelectedIndex] != ctrSemesterNum.Value)
                {
                    Database.modifyDatabase("UPDATE Semester SET SemesterID = '" + ctrSemesterNum.Value + "'"
                                            + " WHERE SemesterID = '" + semesterId[cbEditSemester.SelectedIndex] + "';");
                }

                //refresh values in semester combobox
                int previousIndex = cbEditSemester.SelectedIndex;
                Util.addSemesters(cbEditSemester, semesterId, false);
                cbEditSemester.SelectedIndex = previousIndex;

                return(true);
            }
            return(false);
        }
Esempio n. 4
0
        private bool saveEvent()
        {
            //ensure user entered a title since it is a required field
            if (txtEventTitle.Text.Equals("") == true)
            {
                Util.displayRequiredFieldsError("Event Title");
                return(false);
            }

            //ensure start time is not later than end time (note this does not apply if an all day event)
            if (chkAllDayEvent.Checked == false && dtEventStartTime.Value.TimeOfDay > dtEventEndTime.Value.TimeOfDay)
            {
                Util.displayError("Invalid Start and End Times", "Error");
                return(false);
            }

            //ensure start date is not later than end date (note this does not apply if an all day event)
            if (chkAllDayEvent.Checked == false && dtEventStartDate.Value > dtEventEndDate.Value)
            {
                Util.displayError("Invalid Start and End Dates", "Error");
                return(false);
            }

            //get date in SQLite format
            string startDate = Database.getDate(dtEventStartDate.Value);
            string endDate   = Database.getDate(dtEventEndDate.Value);

            //begin transaction
            Database.beginTransaction();

            //add basic event details database
            Database.modifyDatabase("INSERT INTO Event VALUES (null, " + Util.quote(txtEventTitle.Text) + ", " +
                                    Util.quote(txtEventDescription.Text) + ", " + Util.quote(txtLocation.Text) + ", DATETIME('" + startDate + " " + dtEventStartTime.Value.TimeOfDay + "'), DATETIME('" +
                                    endDate + " " + dtEventEndTime.Value.TimeOfDay + "'), '" + chkAllDayEvent.Checked + "', null);");

            //check if the event is a graded assignment
            if (chkGradedAssignment.Checked == true)
            {
                //get id of recently inserted event
                object eventID = Database.getInsertedID();

                double grade      = Double.MaxValue;
                double gradeTotal = Double.MaxValue;

                //ensure an assignment name was given
                if (txtAssignmentName.Text.Equals(""))
                {
                    Util.displayRequiredFieldsError("Assignment Name");
                    return(false);
                }

                //if a graded assignment, force user to select class and category
                if (cbEventClass.Text.Equals("") || cbEventType.Text.Equals(""))
                {
                    Util.displayError("Please select a value for both the class and assignment type", "Error");
                    return(false);
                }

                //check that grade and total points are valid number (note that the grade can be empty)
                if ((txtEventGrade.Text.Equals("") == false && double.TryParse(txtEventGrade.Text, out grade) == false) || (txtEventGradeTotalPoints.Text.Equals("") == false && double.TryParse(txtEventGradeTotalPoints.Text, out gradeTotal) == false))
                {
                    Util.displayError("Grade and Total Points must be valid decimal numbers", "Invalid Number");
                    return(false);
                }

                //ensure grade and total points are positive
                if (grade < 0 || gradeTotal < 0)
                {
                    Util.displayError("Grade and Total Points must be positive", "Error");
                    return(false);
                }

                //if the grade was an empty string, we need to insert null in the database; otherwise add
                //  user specified value
                string gradeVal = "null";
                if (txtEventGrade.Text.Equals("") == false)
                {
                    gradeVal = "'" + grade + "'";
                }

                //if the grade total was an empty string, we need to insert null into the database
                string gradeTotalVal = "null";
                if (txtEventGradeTotalPoints.Text.Equals("") == false)
                {
                    gradeTotalVal = "'" + gradeTotal + "'";
                }

                //add event details to database including all grade information
                Database.modifyDatabase("INSERT INTO GradedAssignment VALUES ('" + eventID + "', " + Util.quote(txtAssignmentName.Text) +
                                        ", " + gradeVal + ", " + gradeTotalVal + ", '" + classId[cbEventClass.SelectedIndex] + "', '" + cbEventType.Text + "');");
            }

            //add event to calendar view
            newAppt               = new Appointment();
            newAppt.StartDate     = new DateTime(dtEventStartDate.Value.Year, dtEventStartDate.Value.Month, dtEventStartDate.Value.Day, dtEventStartTime.Value.Hour, dtEventStartTime.Value.Minute, 0);
            newAppt.EndDate       = new DateTime(dtEventEndDate.Value.Year, dtEventEndDate.Value.Month, dtEventEndDate.Value.Day, dtEventEndTime.Value.Hour, dtEventEndTime.Value.Minute, 0);
            newAppt.Subject       = txtEventTitle.Text;
            newAppt.Note          = txtEventDescription.Text;
            newAppt.Location      = txtLocation.Text;
            newAppt.AppointmentId = int.Parse(Database.getInsertedID().ToString()); //store unique event id in calendar appointment note
            newAppt.Color         = Color.Honeydew;
            newAppt.BorderColor   = Color.DarkBlue;
            if (chkAllDayEvent.Checked == true)
            {
                newAppt.AllDayEvent = true;
                newAppt.EndDate     = newAppt.EndDate.AddDays(1);
                newAppt.Color       = Color.Coral;
            }

            else if (chkGradedAssignment.Checked == true)
            {
                newAppt.Color = AssignmentPlanner.classColors[classId[cbEventClass.SelectedIndex] % AssignmentPlanner.classColors.Length];
            }

            if (PlannerSettings.Default.SyncEvents == true)
            {
                GoogleCalendarSync.addEvent(newAppt);
            }

            return(true);
        }
        private bool saveEvent()
        {
            //current get event id
            int currentEventId = eventId[cbEvent.SelectedIndex];

            //ensure user entered a title since it is a required field
            if (txtEventTitle.Text.Equals("") == true)
            {
                Util.displayRequiredFieldsError("Event Title");
                return(false);
            }

            //ensure start time is not later than end time (note this does not apply if an all day event)
            if (chkAllDayEvent.Checked == false && dtEventStartTime.Value.TimeOfDay > dtEventEndTime.Value.TimeOfDay)
            {
                Util.displayError("Invalid Start and End Times", "Error");
                return(false);
            }

            //ensure start date is not later than end date (note this does not apply if an all day event)
            if (chkAllDayEvent.Checked == false && dtEventStartDate.Value > dtEventEndDate.Value)
            {
                Util.displayError("Invalid Start and End Dates", "Error");
                return(false);
            }

            //get date in SQLite format
            string startDate = Database.getDate(dtEventStartDate.Value);
            string endDate   = Database.getDate(dtEventEndDate.Value);

            //begin transaction
            Database.beginTransaction();

            //add basic event details database
            Database.modifyDatabase("UPDATE Event SET Title = " + Util.quote(txtEventTitle.Text) + ", Description = " +
                                    Util.quote(txtEventDescription.Text) + ", Location = " + Util.quote(txtLocation.Text) + ", StartDateTime = DATETIME('" + startDate + " " + dtEventStartTime.Value.TimeOfDay + "'), EndDateTime = DATETIME('" +
                                    endDate + " " + dtEventEndTime.Value.TimeOfDay + "'), IsAllDay = '" + chkAllDayEvent.Checked + "' "
                                    + " WHERE EventID = '" + currentEventId + "';");



            //check if the event is a graded assignment
            if (chkGradedAssignment.Checked == true)
            {
                //ensure a valid assignment name has been entered
                if (txtAssignmentName.Equals("") == true)
                {
                    Util.displayRequiredFieldsError("Assignment Name");
                    Database.abort();
                    return(false);
                }

                double grade      = Double.MaxValue;
                double gradeTotal = Double.MaxValue;

                //if a graded assignment, force user to select class and category
                if (cbEventClass.Text.Equals("") || cbEventType.Text.Equals(""))
                {
                    Util.displayError("Please select a value for both the class and assignment type", "Error");
                    Database.abort();
                    return(false);
                }

                //check that grade and total points are valid number (note that the grade can be empty)
                if ((txtEventGrade.Text.Equals("") == false && double.TryParse(txtEventGrade.Text, out grade) == false) || (txtEventGradeTotalPoints.Text.Equals("") == false && double.TryParse(txtEventGradeTotalPoints.Text, out gradeTotal) == false))
                {
                    Util.displayError("Grade and Total Points must be valid decimal numbers", "Invalid Number");
                    Database.abort();
                    return(false);
                }

                //ensure grade and total points are positive
                if (grade < 0 || gradeTotal < 0)
                {
                    Util.displayError("Grade and Total Points must be positive", "Error");
                    Database.abort();
                    return(false);
                }

                //if the graded assignment already exists, simply update database
                if (Database.attributeExists("EventID = '" + currentEventId + "'", "GradedAssignment") == true)
                {
                    //add event details to database including all grade information
                    Database.modifyDatabase("UPDATE GradedAssignment SET AssignmentName = " + Util.quote(txtAssignmentName.Text) +
                                            ", Grade = " + Util.quote(txtEventGrade.Text) + ", GradeTotalWorth = " + Util.quote(txtEventGradeTotalPoints.Text) + ", ClassId = '" + currentClassId[cbEventClass.SelectedIndex] + "', Type = '" + cbEventType.Text + "' " +
                                            "WHERE EventID = '" + currentEventId + "';");
                }
                //otherwise insert into database
                else
                {
                    //add event details to database including all grade information
                    Database.modifyDatabase("INSERT INTO GradedAssignment VALUES ('" + currentEventId + "', " + Util.quote(txtAssignmentName.Text) +
                                            ", " + Util.quote(txtEventGrade.Text) + ", " + Util.quote(txtEventGradeTotalPoints.Text) + ", '" + currentClassId[cbEventClass.SelectedIndex] + "', '" + cbEventType.Text + "');");
                }
            }
            else
            {
                //delete graded assignment portion of event
                Database.modifyDatabase("DELETE FROM GradedAssignment WHERE EventID = '" + currentEventId + "';");
            }

            //get event in calendar that has the specified event id
            bool        containsEvent = eventsHash.ContainsKey(currentEventId);
            Appointment appt;

            if (containsEvent == true)
            {
                appt = eventsHash[currentEventId];
            }
            else
            {
                appt = new Appointment();
            }

            //update appointment information
            appt.StartDate = new DateTime(dtEventStartDate.Value.Year, dtEventStartDate.Value.Month, dtEventStartDate.Value.Day, dtEventStartTime.Value.Hour, dtEventStartTime.Value.Minute, 0);
            appt.EndDate   = new DateTime(dtEventEndDate.Value.Year, dtEventEndDate.Value.Month, dtEventEndDate.Value.Day, dtEventEndTime.Value.Hour, dtEventEndTime.Value.Minute, 0);
            appt.Subject   = txtEventTitle.Text;
            appt.Note      = txtEventDescription.Text;
            appt.Location  = txtLocation.Text;
            appt.Color     = Color.Honeydew;

            //determine whether event is an all day event and update appointment
            if (chkAllDayEvent.Checked == true)
            {
                appt.AllDayEvent = true;
                appt.EndDate     = appt.EndDate.AddDays(1);
                appt.Color       = Color.Coral;
            }
            else if (chkGradedAssignment.Checked == true)
            {
                appt.AllDayEvent = false;
                appt.Color       = AssignmentPlanner.classColors[currentClassId[cbEventClass.SelectedIndex] % AssignmentPlanner.classColors.Length];
            }
            else
            {
                appt.AllDayEvent = false;
            }

            if (PlannerSettings.Default.SyncEvents == true)
            {
                GoogleCalendarSync.updateEvent(appt);
            }

            //commit changes to database (end transaction)
            Database.commit();

            return(true);
        }