Example #1
0
        /// <summary>
        /// 削除ボタンクリックイベント
        /// 予定フォームで選択した予定を削除する
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            //予定登録情報に、削除する予定の予定IDを設定
            var scheduleRegistrationInfo = new ScheduleRegistrationInfo()
            {
                ScheduleID = this.ScheduleID
            };

            var result = MessageBox.Show("予定を削除します。よろしいですか?", "質問", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.No)
            {
                return;
            }

            try
            {
                new ScheduleLogic().UpdateSchedule(scheduleRegistrationInfo, ScheduleUpdateType.Delete);
            }
            catch (NpgsqlException)
            {
                MessageBox.Show("予定の削除に失敗しました。", "お知らせ");
                return;
            }

            MessageBox.Show("予定の削除に成功しました。", "お知らせ");

            //予定フォームに戻る
            this.Hide();
            new ScheduleForm(this.UserInfo, this.Location).Show();
            this.Close();
        }
Example #2
0
 /// <summary>
 /// 予定更新
 /// </summary>
 /// <param name="scheduleRegistrationInfo">予定登録情報</param>
 /// <param name="scheduleUpdateType">更新種別</param>
 public void UpdateSchedule(ScheduleRegistrationInfo scheduleRegistrationInfo, ScheduleUpdateType scheduleUpdateType)
 {
     new ScheduleDBAccess().UpdateSchedule(scheduleRegistrationInfo, scheduleUpdateType);
 }
Example #3
0
        /// <summary>
        /// 予定更新
        /// </summary>
        /// <param name="scheduleRegistrationInfo">予定登録情報</param>
        /// <param name="scheduleUpdateType">更新種別</param>
        public void UpdateSchedule(ScheduleRegistrationInfo scheduleRegistrationInfo, ScheduleUpdateType scheduleUpdateType)
        {
            string sql; //実行するsql文

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                //トランザクション開始
                using (var transaction = conn.BeginTransaction())
                {
                    try
                    {
                        switch (scheduleUpdateType)
                        {
                        //新規予定追加の場合
                        case ScheduleUpdateType.Add:

                            //予定情報を予定テーブルに追加
                            sql = @"insert into 予定テーブル(ユーザーid, 予定内容, 開始日時, 終了日時)
                                values(:UserID, :ScheduleContents, :StartTime, :EndTime)";

                            var cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleContents", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["ScheduleContents"].Value = scheduleRegistrationInfo.ScheduleContents;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();


                            //施設利用情報を施設利用状況テーブルに追加
                            sql = @"insert into 施設利用状況テーブル select 
                                    :UserID, 
                                    :FacilityID,    
                                    予定id from 予定テーブル where 
                                        ユーザーid = :UserID and
                                        開始日時 = :StartTime and
                                        終了日時 = :EndTime";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("FacilityID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["FacilityID"].Value = scheduleRegistrationInfo.FacilityID;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();

                            break;


                        //予定編集の場合
                        case ScheduleUpdateType.Edit:

                            //編集前のデータを予定テーブルから削除
                            sql = @"delete from 予定テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();


                            //編集前のデータを施設利用状況テーブルテーブルから削除
                            sql = @"delete from 施設利用状況テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();


                            //編集後のデータを予定テーブルに追加
                            sql = @"insert into 予定テーブル(ユーザーid, 予定内容, 開始日時, 終了日時)
                                values(:UserID, :ScheduleContents, :StartTime, :EndTime)";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleContents", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["ScheduleContents"].Value = scheduleRegistrationInfo.ScheduleContents;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();


                            //編集後のデータを施設利用状況テーブルに追加
                            sql = @"insert into 施設利用状況テーブル select 
                                    :UserID, 
                                    :FacilityID,    
                                    予定id from 予定テーブル where 
                                        ユーザーid = :UserID and
                                        開始日時 = :StartTime and
                                        終了日時 = :EndTime";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("FacilityID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["FacilityID"].Value = scheduleRegistrationInfo.FacilityID;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();

                            break;


                        //予定削除の場合
                        case ScheduleUpdateType.Delete:
                            //データを予定テーブルから削除
                            sql = @"delete from 予定テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();


                            //データを施設利用状況テーブルテーブルから削除
                            sql = @"delete from 施設利用状況テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();
                            break;
                        }

                        transaction.Commit();
                    }
                    catch (NpgsqlException)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
Example #4
0
        /// <summary>
        /// 押したボタン(保存、編集)に応じて、予定を保存、編集する
        /// </summary>
        /// <param name="scheduleUpdateType">更新種別</param>
        private void SettingSchedule(ScheduleUpdateType scheduleUpdateType)
        {
            string scheduleContens;                                           //予定内容
            var    scheduleRegistrationInfo = new ScheduleRegistrationInfo(); //予定登録情報


            if (CheckInput(scheduleUpdateType)) //情報が入力されており、入力された時間が適切かを確認
            {
                if (checkBox1.Checked)
                {
                    scheduleContens = textBox1.Text;                    //予定内容を新規で追加する場合
                }
                else
                {
                    scheduleContens = (string)comboBox1.SelectedItem;  //予定内容をコンボボックスから選択する場合
                }
                //画面に入力した情報をもとに、登録する情報のインスタンスを作成
                try
                {
                    //追加の場合
                    if (scheduleUpdateType == ScheduleUpdateType.Add)
                    {
                        scheduleRegistrationInfo = new ScheduleRegistrationInfo()
                        {
                            FacilityID       = this.FacilityInfoList[comboBox2.SelectedIndex].FacilityID,
                            UserID           = this.UserInfo.UserID,
                            ScheduleContents = scheduleContens,
                            StartTime        = new DateTime(
                                int.Parse((string)comboBox3.SelectedItem),
                                int.Parse(textBox2.Text),
                                int.Parse(textBox3.Text),
                                int.Parse((string)comboBox4.SelectedItem),
                                int.Parse((string)comboBox5.SelectedItem),
                                0),
                            EndTime = new DateTime(
                                int.Parse((string)comboBox3.SelectedItem),
                                int.Parse(textBox2.Text),
                                int.Parse(textBox3.Text),
                                int.Parse((string)comboBox6.SelectedItem),
                                int.Parse((string)comboBox7.SelectedItem),
                                0)
                        };
                    }

                    //編集の場合
                    if (scheduleUpdateType == ScheduleUpdateType.Edit)
                    {
                        scheduleRegistrationInfo = new ScheduleRegistrationInfo()
                        {
                            ScheduleID       = this.ScheduleID,
                            FacilityID       = this.FacilityInfoList[comboBox2.SelectedIndex].FacilityID,
                            UserID           = this.UserInfo.UserID,
                            ScheduleContents = scheduleContens,
                            StartTime        = new DateTime(
                                int.Parse((string)comboBox3.SelectedItem),
                                int.Parse(textBox2.Text),
                                int.Parse(textBox3.Text),
                                int.Parse((string)comboBox4.SelectedItem),
                                int.Parse((string)comboBox5.SelectedItem),
                                0),
                            EndTime = new DateTime(
                                int.Parse((string)comboBox3.SelectedItem),
                                int.Parse(textBox2.Text),
                                int.Parse(textBox3.Text),
                                int.Parse((string)comboBox6.SelectedItem),
                                int.Parse((string)comboBox7.SelectedItem),
                                0)
                        };
                    }
                }
                catch (FormatException)
                {
                    MessageBox.Show("正しい日付を入力してください。", "お知らせ");
                    return;
                }
                catch (ArgumentOutOfRangeException)
                {
                    MessageBox.Show("正しい日付を入力してください。", "お知らせ");
                    return;
                }

                try
                {
                    new ScheduleLogic().UpdateSchedule(scheduleRegistrationInfo, scheduleUpdateType);
                }
                catch (NpgsqlException)
                {
                    if (scheduleUpdateType == ScheduleUpdateType.Add)
                    {
                        MessageBox.Show("予定の追加に失敗しました。", "お知らせ");
                    }
                    if (scheduleUpdateType == ScheduleUpdateType.Edit)
                    {
                        MessageBox.Show("予定の編集に失敗しました。", "お知らせ");
                    }
                    return;
                }

                if (scheduleUpdateType == ScheduleUpdateType.Add)
                {
                    MessageBox.Show("予定の追加に成功しました。", "お知らせ");
                }
                if (scheduleUpdateType == ScheduleUpdateType.Edit)
                {
                    MessageBox.Show("予定の編集に成功しました。", "お知らせ");
                }


                //予定フォームに戻る
                this.Hide();
                new ScheduleForm(this.UserInfo, this.Location).Show();
                this.Close();
            }
        }