예제 #1
0
        private void btnSave_Click(object sender, System.EventArgs e)
        {
            string sConflictingEvent="";
            if(!IsValid()) return;

            //check real teacher first
            string strOverLapMess="";

            strOverLapMess = strOverLapMess.Trim();

            //AutoSave=false;
            //GenerateEvent(IsRecurrenceFlag);
            //AutoSave=true;

            if(cmbTeacher2.Text.Trim()!="")
            {
                bool Ok=false;
                if(dtblDates==null)
                {
                    Ok = IsCheckOverlapTime(ref sConflictingEvent, "Real", ref strOverLapMess);
                }
                else
                {
                    foreach(DataRow dr in dtblDates.Rows)
                    {
                        Ok = IsCheckOverlapTime(ref sConflictingEvent, "Real", dr[0].ToString(), dr[1].ToString(), ref strOverLapMess);
                        if(Ok) break;
                    }
                }
                if(Ok)
                {
                    DialogResult dlg =
                        BusinessLayer.Message.MsgConfirmation(
                        "<" + cmbTeacher2.Text + "> is already scheduled in <" +
                        sConflictingEvent + ">" + strOverLapMess +
                        "\nDo you still wish to save this event?");
                    if(dlg==DialogResult.No)
                    {
                        return;
                    }
                }
            }
            else
            {
                //if real instructor is blank then check scheduled teacher
                bool Ok=false;
                if(dtblDates==null)
                    Ok = IsCheckOverlapTime(ref sConflictingEvent, "Scheduled", ref strOverLapMess);
                else
                    foreach(DataRow dr in dtblDates.Rows)
                    {
                        Ok = IsCheckOverlapTime(ref sConflictingEvent, "Scheduled", dr[0].ToString(), dr[1].ToString(), ref strOverLapMess);
                        if(Ok) break;
                    }

                if(Ok)
                {
                    DialogResult dlg =
                        BusinessLayer.Message.MsgConfirmation(
                        "<" + cmbTeacher1.Text + "> is already scheduled in <" +
                        sConflictingEvent + ">" + strOverLapMess +
                        "\nDo you still wish to save this event?");
                    if(dlg==DialogResult.No)
                        return;
                }
            }

            // Saving Logic
            /* Differentiate on the basis of current mode. For Edit mode, the event will
             * be updated after ensuring no conflicts arise as a result of the changes.
             * For Add, the event will be added after ensuring no conflicts arise.
             */
            Boolean boolSuccess = false;
            if (_mode == "Edit")
            {
                //TODO:Differentiate between Class and Program
                if(objEvent.CalendarEventID > 0)
                    if (!objEvent.IsConflicting(dtStart.Value, dtEnd.Value))
                    {
                        SaveCalendarData(dtStart.Value, dtEnd.Value);

                        if (_eventtype == EventType.Initial || _eventtype == EventType.MidTerm || _eventtype == EventType.Final)
                        {
                            objEvent.RepeatRule = "";
                            objEvent.NegativeException = "";
                            objEvent.RecurrenceText = "";
                            objEvent.Description = txtDescription.Text;
                            objEvent.EventStatus = cmbEventStatus.SelectedIndex;

                            boolSuccess = objEvent.UpdateData();

                            if (!boolSuccess)
                            {
                                Scheduler.BusinessLayer.Message.ShowException("Updating Event record.", objEvent.Message);
                                return;
                            }
                        }
                    }
            }
            else if (_mode == "Add")
            {
                //Create a new 'Event' object
                objEvent = new Events();

                if (_eventtype == EventType.Extra)
                {
                    //Add Extra Class - add record to 'CalendarEvent' table ONLY
                    SaveCalendarEvent(dtStart.Value, dtEnd.Value);
                }
                else if (_eventtype == EventType.Final || _eventtype == EventType.Initial || _eventtype == EventType.MidTerm)
                {
                    //Add Test Event - add record to 'Event' AND 'CalendarEvent' tables AND update 'Course' table
                    string strField = "";
                    if (intClassID != 0 || intProgramID != 0)
                    {
                        switch (_eventtype)
                        {
                            default: case EventType.Initial: strField = "TestInitialEventID"; break;
                            case EventType.MidTerm: strField = "TestMidtermEventID"; break;
                            case EventType.Final: strField = "TestFinalEventID"; break;
                        }

                        SaveData();
                        SaveCalendarEvent(dtStart.Value, dtEnd.Value);
                        if (intClassID != 0)
                            objEvent.UpdateClassEvent(intClassID, strField);
                        else if (intProgramID != 0)
                            objEvent.UpdateProgramEvent(intProgramID, strField);
                    }
                }
            }

            /*
            if(boolSaveSeries)
            {
                SaveData();
                if(_mode=="Edit") objEvent.DeleteCalendarEvent();
                //GenerateEvent(IsRecurrenceFlag);
            }
            else
                SaveCalendarData(dtStart.Value, dtEnd.Value);

            if(!OpenFromClsProg)
            {
                //Updating the Test Event
                string strField="";
                if(intClassID!=0)
                {
                    if(cmbEvent.SelectedIndex==0) strField="EventID";
                    else if(cmbEvent.SelectedIndex==1) strField="TestInitialEventID";
                    else if(cmbEvent.SelectedIndex==2) strField="TestMidtermEventID";
                    else if(cmbEvent.SelectedIndex==3) strField="TestFinalEventID";

                    objEvent.UpdateTestEvent("Class", strField, objEvent.EventID, intClassID);
                }
                else if(intProgramID!=0)
                {
                    if(cmbEvent.SelectedIndex==0) strField="TestInitialEventID";
                    else if(cmbEvent.SelectedIndex==1) strField="TestMidtermEventID";
                    else if(cmbEvent.SelectedIndex==2) strField="TestFinalEventID";

                    objEvent.UpdateTestEvent("Program", strField, objEvent.EventID, intProgramID);
                }
                else
                {
                    objEvent.RemoveTestEvent(objEvent.EventID, intClassID);
                }
            }
            */
            this.DialogResult = DialogResult.OK;
        }