/// <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(); }
/// <summary> /// 予定更新 /// </summary> /// <param name="scheduleRegistrationInfo">予定登録情報</param> /// <param name="scheduleUpdateType">更新種別</param> public void UpdateSchedule(ScheduleRegistrationInfo scheduleRegistrationInfo, ScheduleUpdateType scheduleUpdateType) { new ScheduleDBAccess().UpdateSchedule(scheduleRegistrationInfo, scheduleUpdateType); }
/// <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; } } } }
/// <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(); } }