//포인트 충전 protected void Button1_Click(object sender, EventArgs e) { if (TextBox1.Text != string.Empty) { try { int RechargeValue = Convert.ToInt32(TextBox1.Text); string Command = "insert into Point(ID, Occuredatetime, Usedvalue, Rechargedvalue, Remainvalue)" + "values(@ID, @Occuredatetime, @Usedvalue, @Rechargedvalue, @Remainvalue)"; List <Tuple <string, object> > Params = new List <Tuple <string, object> >(); Params.Add(new Tuple <string, object>("@id", LoginedMember.ID)); Params.Add(new Tuple <string, object>("@Occuredatetime", Common.CSDateTiemToASPDateTime(DateTime.Now))); Params.Add(new Tuple <string, object>("@Usedvalue", 0)); Params.Add(new Tuple <string, object>("@Rechargedvalue", RechargeValue)); Params.Add(new Tuple <string, object>("@Remainvalue", RecentlyRemainPoint + RechargeValue)); if (dbManager.DoCommand(Command, Params)) { Page.Response.Redirect(Page.Request.Url.ToString(), true); } //자동으로 페이지를 갱신한다. } catch (Exception ex) { Console.WriteLine("RechargePointPange : " + ex.Data); return; } } }
//멤버삭제 protected void Button_DeleteMember_Click(object sender, EventArgs e) { foreach (TableRow tr in Table1.Rows) { try { //Table의 제일 첫번째 열은 제목 열이므로 체크박스 컨트롤이 없다. if (tr.Cells[0].Controls.Count < 1) { continue; } CheckBox chkbox = (CheckBox)tr.Cells[0].Controls[0]; if (chkbox.Checked) { string Command = "DELETE FROM Member where ID=@id"; List <Tuple <string, object> > Params = new List <Tuple <string, object> >(); Params.Add(new Tuple <string, object>("@id", chkbox.ID)); dbManager.DoCommand(Command, Params); } } catch (Exception ex) { Console.WriteLine(ex.Data); return; } } Page.Response.Redirect(Page.Request.Url.ToString(), true); }
protected void BTN_Submit_Click(object sender, EventArgs e) { if (ChkisValid()) { //DBManager가 페이지로드에서 셋팅이 안되어 있을 경우. if (dbManager == null) { return; } if (dbManager.dbConnection != null) { //추가할 회원 값 셋팅 List <Tuple <string, object> > Params = new List <Tuple <string, object> >(); Params.Add(new Tuple <string, object>("@ID", TXT_ID.Text)); Params.Add(new Tuple <string, object>("@Pass", TXT_PASS.Text)); Params.Add(new Tuple <string, object>("@Name", TXT_NAME.Text)); DateTime dt = DateTime.Now; int bornyear = Convert.ToInt32(TXT_BIRTHDAY.Text.Substring(0, 2)); if (Convert.ToInt32(TXT_SEX.Text) > 2) { bornyear += 2000; } else { bornyear += 1900; } Params.Add(new Tuple <string, object>("@Age", dt.Year - bornyear)); Params.Add(new Tuple <string, object>("@Birthday", TXT_BIRTHDAY.Text)); bool Sex = false; if (TXT_SEX.Text == "1" || TXT_SEX.Text == "3") { Sex = true; } Params.Add(new Tuple <string, object>("@Sex", Sex)); Params.Add(new Tuple <string, object>("@Point", 0)); Params.Add(new Tuple <string, object>("@Address", TXT_ADDRESS.Text)); Params.Add(new Tuple <string, object>("@Phone", TXT_PHON.Text)); string Command = "insert into Member(ID, Pass, Name, Age, Birthday, Sex, Point, Address, Phone)" + "values(@ID, @Pass, @Name, @Age, @Birthday, @Sex, @Point, @Address, @Phone)"; //추가 명령 전송 if (dbManager.DoCommand(Command, Params)) { Common.ShowMessage(this, @"가입 완료."); //메인페이지 이동. Response.Redirect(string.Format("Main.aspx")); } else { Common.ShowMessage(this, @"가입 실패. 관리자에게 문의하세요."); return; } } else { //DB Connection Error } } }
//영화관 추가 protected void Button_NewTheater_Click(object sender, EventArgs e) { if (TextBox_Row.Text == string.Empty || TextBox_Number.Text == string.Empty) { //TODO : 열, 번호값이 맞는지 확인 return; } //상영관 ID를 받기위해 현재 상영관 ID중 가장 큰 값을 받아온다. string Command = "Select top 1 * from Theater order by LEN(TheaterID), TheaterID desc"; //보낸 명령에 대한 리더 객체를 얻는다. SqlDataReader Reader = dbManager.GetDataList(Command, new List <Tuple <string, object> >()); //리더 객체에 맞는 데이터 셋을 입혀 멤버객체를 받는다. List <Theater> Members = Theater.SqlDataReaderToMember(Reader); int NewTheaterID = 0; if (Members.Count == 1) { //상영관 ID는 기존 ID중 가장 큰 ID + 1 NewTheaterID = Convert.ToInt32(Members[0].TheaterID) + 1; } //상영관 추가 코드 Command = "insert into Theater(TheaterID, Seatcount, Seatrowcount, Seatnumbercount)" + "values(@TheaterID, @Seatcount, @Seatrowcount, @Seatnumbercount)"; //아스키 코드값을 이용하여 열의 갯수를 숫자로 변환하고 열당 좌석수 만큼 곱하여 총 좌석수를 지정한다. //(int)(Convert.ToChar(TextBox_Row.Text.ToUpper()) - 64);//이전버전 int Int_row = Common.AlphabetToNumber(TextBox_Row.Text); int SeatCountByRow = Convert.ToInt32(TextBox_Number.Text); List <Tuple <string, object> > Params = new List <Tuple <string, object> >(); Params.Add(new Tuple <string, object>("@TheaterID", NewTheaterID)); Params.Add(new Tuple <string, object>("@Seatcount", Int_row * SeatCountByRow)); Params.Add(new Tuple <string, object>("@Seatrowcount", TextBox_Row.Text.ToUpper())); Params.Add(new Tuple <string, object>("@Seatnumbercount", SeatCountByRow)); if (dbManager.DoCommand(Command, Params)) { Page.Response.Redirect(Page.Request.Url.ToString(), true); } }
protected void BTN_Submit_Click(object sender, EventArgs e) { //DBManager가 페이지로드에서 셋팅이 안되어 있을 경우. if (dbManager == null) { return; } if (dbManager.dbConnection != null) { //추가할 회원 값 셋팅 List <Tuple <string, object> > Params = new List <Tuple <string, object> >(); Params.Add(new Tuple <string, object>("@ID", TXT_ID.Text)); Params.Add(new Tuple <string, object>("@Pass", TXT_PASS.Text)); Params.Add(new Tuple <string, object>("@Name", TXT_NAME.Text)); Params.Add(new Tuple <string, object>("@Age", 27)); Params.Add(new Tuple <string, object>("@Birthday", TXT_BIRTHDAY.Text)); bool Sex = false; if (TXT_SEX.Text == "1" || TXT_SEX.Text == "3") { Sex = true; } Params.Add(new Tuple <string, object>("@Sex", Sex)); Params.Add(new Tuple <string, object>("@Point", 0)); Params.Add(new Tuple <string, object>("@Address", TXT_ADDRESS.Text)); Params.Add(new Tuple <string, object>("@Phone", TXT_PHON.Text)); string Command = "insert into Member(ID, Pass, Name, Age, Birthday, Sex, Point, Address, Phone)" + "values(@ID, @Pass, @Name, @Age, @Birthday, @Sex, @Point, @Address, @Phone)"; //추가 명령 전송 if (dbManager.DoCommand(Command, Params)) { //TODO : 가입 성공 메시지 추가.(미완성) //DB 커넥션을 종료하는데 필요한지? //dbManager.Disconnet(); //메인페이지 이동. Response.Redirect(string.Format("Main.aspx")); } else { ;//TODO : 가입 실패 로직(미완성). } } else { //DB Connection Error } }
//새로운 영화 등록 protected void Button_New_Click(object sender, EventArgs e) { //TODO List: // 1. 새로운 영화의 ID를 지정하기위해 이전 영화의 MaxID 호출 // 2. 영화등록 // 3. 상영관의 좌석수를 얻기위해 값을 받아온다. // 4. 영화스케줄 등록 // 5. 영화 스케쥴당 좌석 생성 // 6. 이전화면으로 이동 string command = "Select Top 1 * From Movie Order by MovieID DESC"; String NewMovieID = "-1"; String Seatcount = "0"; String TheaterID = "0"; //상영관 ID String TheaterMaxRow = "0"; //상영관 최대 열 String TheaterMaxNumber = "0"; //상영관 최대 행 #region 1. 새로운 영화의 ID를 지정하기위해 이전 영화의 MaxID 호출 SqlDataReader reader = dbManager.GetDataList(command, new List <Tuple <string, object> >()); List <Movie> movies = Movie.SqlDataReaderToMember(reader); if (movies.Count == 0) { NewMovieID = "0"; } else if (movies.Count == 1) { //가장 큰 ID에 +1 해준값이 새로운 영화의 ID NewMovieID = (Convert.ToInt32(movies[0].MovieID.Trim(' ')) + 1).ToString(); } else { //영화 아이디 불러오기 실패 return; } #endregion #region 2. 영화등록 command = "insert into Movie(MovieID, Moviename, Playstartdatetime, Playenddatetime, Runningtime, Viewingclass, Movieposter)" + "values(@MovieID, @Moviename, @Playstartdatetime, @Playenddatetime, @Runningtime, @Viewingclass, @Movieposter)"; List <Tuple <string, object> > Params = new List <Tuple <string, object> >(); Params.Add(new Tuple <string, object>("@MovieID", NewMovieID)); Params.Add(new Tuple <string, object>("@Moviename", TextBox_Name.Text)); Params.Add(new Tuple <string, object>("@Playstartdatetime", TextBox_StartMovie.Text)); Params.Add(new Tuple <string, object>("@Playenddatetime", TextBox_endMovie.Text)); Params.Add(new Tuple <string, object>("@Runningtime", TextBox_RunningTIme.Text)); Params.Add(new Tuple <string, object>("@Viewingclass", TextBox_ViewingClass.Text)); if (this.FileUpload1.HasFile) { this.FileUpload1.SaveAs(HttpRuntime.AppDomainAppPath + "MoviePoster\\" + NewMovieID.Trim() + "_" + TextBox_Name.Text.Trim() + "." + FileUpload1.FileName.Split('.')[1]); //this.FileUpload1.SaveAs(Constant.MoviePosterPath + NewMovieID.Trim() + "_" + TextBox_Name.Text.Trim() + "." + FileUpload1.FileName.Split('.')[1]); } Params.Add(new Tuple <string, object>("@Movieposter", NewMovieID.Trim() + "_" + TextBox_Name.Text.Trim() + "." + FileUpload1.FileName.Split('.')[1])); if (!dbManager.DoCommand(command, Params)) { Console.WriteLine("영화 추가 에러"); return; } #endregion #region 3. 상영관의 좌석수를 얻기위해 값을 받아온다. Params.Clear(); TheaterID = Request[this.TextBox_TheaterNumber.UniqueID].Trim(); command = "Select * From Theater Where TheaterID = @TheaterID"; Params.Add(new Tuple <string, object>("@TheaterID", TheaterID)); reader = dbManager.GetDataList(command, Params); List <Theater> Theaters = Theater.SqlDataReaderToMember(reader); if (Theaters.Count != 1) { Console.WriteLine("같은 아이디의 극장이 여러개"); return; } Seatcount = Theaters[0].Seatcount; TheaterMaxRow = Theaters[0].Seatrowcount; TheaterMaxNumber = Theaters[0].Seatnumbercount; #endregion #region 4. 영화스케줄 등록 Params.Clear(); string[] stringSeparators = new string[] { "\r\n" }; string[] playtimes = TextBox_MoviePlayList.Text.Split(stringSeparators, StringSplitOptions.None); foreach (string playtime in playtimes) { command = "insert into Movieschedule(MovieID, TheaterID, Playtime, Seatbooked, Seatremained)" + "values(@MovieID, @TheaterID, @Playtime, @Seatbooked, @Seatremained)"; if (playtime == "") { continue; } Params.Add(new Tuple <string, object>("@MovieID", NewMovieID)); Params.Add(new Tuple <string, object>("@TheaterID", TheaterID)); Params.Add(new Tuple <string, object>("@Seatbooked", "0")); Params.Add(new Tuple <string, object>("@Seatremained", Seatcount)); Params.Add(new Tuple <string, object>("@Playtime", playtime.ToString())); //영화스케쥴 생성에 성공하였으니 5번:영화관스케쥴당좌석을 생성한다. if (dbManager.DoCommand(command, Params)) { #region 5. 영화 스케쥴당 좌석 생성 command = "insert into Seat(TheaterID, Seatrow, Seatnumber, Isbooked, Playtime)" + "values(@TheaterID, @Seatrow, @Seatnumber, @Isbooked, @Playtime)"; //A = 1, B = 2 ..... Z = 26 int I_TheaterMaxRow = Common.AlphabetToNumber(TheaterMaxRow); int I_TheaterMaxNumber = Convert.ToInt32(TheaterMaxNumber); for (int Seatrow = 1; Seatrow <= I_TheaterMaxRow; Seatrow++) //좌석 열수만큼 { for (int Seatnumber = 1; Seatnumber <= I_TheaterMaxNumber; Seatnumber++) //열당 좌석수만큼 { Params.Clear(); Params.Add(new Tuple <string, object>("@TheaterID", TheaterID)); Params.Add(new Tuple <string, object>("@Seatrow", Common.NumberToAlphabet(Seatrow))); Params.Add(new Tuple <string, object>("@Seatnumber", Seatnumber)); Params.Add(new Tuple <string, object>("@Isbooked", "false")); Params.Add(new Tuple <string, object>("@Playtime", playtime.ToString())); dbManager.DoCommand(command, Params); } } #endregion } Params.Clear(); } #endregion #region 6. 이전화면으로 이동 Response.Redirect(string.Format("MovieList.aspx")); #endregion }
//예약하기 protected void Button2_Click(object sender, EventArgs e) { List <Tuple <string, string> > TryBookingSeats = new List <Tuple <string, string> >(); #region 예매정보없거나 지정한 인원와 다르면 리턴 if (SelectedMovieID == "" || SelectedPlayDate == "" || SelectedTheater == "") { return; } //원래 chkbox에 changed on 일때 remainTicket의 값을 변동해서 0인지 검사하려고했지만 //동적으로 생성된 컨트롤에대해 이벤트를 받는게 해결이 되지 않아 임시방편으로 //enable상태이면서 checked숫자로 비교한다. int checkedBoxCount = 0; foreach (TableRow tableRow in Table1.Rows) { foreach (TableCell tableCell in tableRow.Cells) { if (tableCell.Controls.Count == 1) { CheckBox chkBox = (CheckBox)tableCell.Controls[0]; if (chkBox.Enabled && chkBox.Checked) { checkedBoxCount++; string[] RowAndNumber = chkBox.ID.Split(new char[] { '열', '번' }); TryBookingSeats.Add(new Tuple <string, string>(RowAndNumber[0], RowAndNumber[1])); } } } } //checkbox가 더 많거나 적으므로 예매를 취소하고 확인해달라는 메시지를 보내야함. if (remainTicket != checkedBoxCount) { return; } #endregion //TODO : 예약 객체 생성시 점검사항들 // 1. 포인트가 사람수만큼 결제가능한지 확인합니다. // 2. 예약하는동안 선택한 좌석(들)이 예매가 되었는지 확인. // 3. 관람등급과 고객나이 확인 // 4. 예매객체 생성 // 5. 포인트 사용내역 객체 생성 // 6. Seat의 예약상태를 True로 변경한다. // 7. 예약할경우 MovieSchedule의 RemainSeat값도 줄여줘야함. string Command = ""; List <Tuple <string, object> > Params; SqlDataReader reader; List <Movie> SelcetedMovieObject = null; int LastlyRemaindPoint = 0; #region 1 Command = "SELECT * FROM Point WHERE ID=@id ORDER BY Occuredatetime DESC"; Params = new List <Tuple <string, object> >(); Params.Add(new Tuple <string, object>("@id", LoginedMember.ID)); reader = dbManager.GetDataList(Command, Params); List <dataSet.Point> points = dataSet.Point.SqlDataReaderToMember(reader); if (points == null || points.Count == 0) { return; } int totalPrice = remainTicket * Constant.MoviePrice; if (Convert.ToInt32(points[0].Remainvalue) < totalPrice) { return; } LastlyRemaindPoint = Convert.ToInt32(points[0].Remainvalue); Params.Clear(); #endregion #region 2 Command = "Select * From Seat Where " + "TheaterID = @TheaterID AND Playtime = @Playtime AND Seatrow = @Seatrow AND Seatnumber = @Seatnumber"; foreach (Tuple <string, string> TryBookingSeat in TryBookingSeats) { Params.Add(new Tuple <string, object>("@TheaterID", SelectedTheater)); Params.Add(new Tuple <string, object>("@Playtime", SelectedPlayDate)); Params.Add(new Tuple <string, object>("@Seatrow", TryBookingSeat.Item1)); Params.Add(new Tuple <string, object>("@Seatnumber", TryBookingSeat.Item2)); reader = dbManager.GetDataList(Command, Params); List <Seat> seat = Seat.SqlDataReaderToSeat(reader); if (seat == null || seat.Count == 0 || seat[0].Isbooked == "True") { return; } Params.Clear(); } #endregion #region 3 Command = "Select * From Movie Where MovieID = @MovieID"; Params.Add(new Tuple <string, object>("@MovieId", SelectedMovieID)); reader = dbManager.GetDataList(Command, Params); SelcetedMovieObject = Movie.SqlDataReaderToMember(reader); if (SelcetedMovieObject == null || SelcetedMovieObject.Count == 0) { return; } if (Convert.ToInt32(LoginedMember.Age) < Convert.ToInt32(SelcetedMovieObject[0].Viewingclass)) { return; } Params.Clear(); #endregion #region 4 Command = "insert into Booking(ID, MovieID, TheaterID, Playdatetime, Seatrow, Seatnumber, Moviename, Bookedcount, Viewingclass)" + "values(@ID, @MovieID, @TheaterID, @Playdatetime, @Seatrow, @Seatnumber, @Moviename, @Bookedcount, @Viewingclass)"; foreach (Tuple <string, string> TryBookingSeat in TryBookingSeats) { Params.Add(new Tuple <string, object>("@ID", LoginedMember.ID.Trim())); Params.Add(new Tuple <string, object>("@MovieID", SelectedMovieID.Trim())); Params.Add(new Tuple <string, object>("@TheaterID", SelectedTheater.Trim())); Params.Add(new Tuple <string, object>("@Playdatetime", SelectedPlayDate)); Params.Add(new Tuple <string, object>("@Seatrow", TryBookingSeat.Item1)); Params.Add(new Tuple <string, object>("@Seatnumber", TryBookingSeat.Item2)); Params.Add(new Tuple <string, object>("@Moviename", SelcetedMovieObject[0].Moviename)); Params.Add(new Tuple <string, object>("@Bookedcount", remainTicket)); Params.Add(new Tuple <string, object>("@Viewingclass", SelcetedMovieObject[0].Viewingclass)); if (!dbManager.DoCommand(Command, Params)) { ;//TODO : 예약 실패 로직(미완성). } Params.Clear(); } #endregion #region 5 Command = "insert into Point(ID, Occuredatetime, Usedvalue, Rechargedvalue, Remainvalue)" + "values(@ID, @Occuredatetime, @Usedvalue, @Rechargedvalue, @Remainvalue)"; Params.Add(new Tuple <string, object>("@ID", LoginedMember.ID)); Params.Add(new Tuple <string, object>("@Occuredatetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); Params.Add(new Tuple <string, object>("@Usedvalue", remainTicket * Constant.MoviePrice)); Params.Add(new Tuple <string, object>("@Rechargedvalue", 0)); Params.Add(new Tuple <string, object>("@Remainvalue", LastlyRemaindPoint - remainTicket * Constant.MoviePrice)); if (!dbManager.DoCommand(Command, Params)) { ;//TODO : 예약 실패 로직(미완성). } Params.Clear(); #endregion #region 6 Command = Command = "Update Seat Set Isbooked = @Isbooked " + "Where TheaterID = @TheaterID AND Seatrow = @Seatrow AND Seatnumber = @Seatnumber AND Playtime = @Playtime"; foreach (Tuple <string, string> TryBookingSeat in TryBookingSeats) { Params.Add(new Tuple <string, object>("@Isbooked", "True")); Params.Add(new Tuple <string, object>("@TheaterID", SelectedTheater)); Params.Add(new Tuple <string, object>("@Seatrow", TryBookingSeat.Item1)); Params.Add(new Tuple <string, object>("@Seatnumber", TryBookingSeat.Item2)); Params.Add(new Tuple <string, object>("@Playtime", SelectedPlayDate)); if (!dbManager.DoCommand(Command, Params)) { ;//TODO : 예약 실패 로직(미완성). } Params.Clear(); } #endregion #region 7 //일단 기존남은 좌석 데이터를 가져와야함. int RemainSeatCount = 0; Command = "Select * From Movieschedule " + "Where MovieID = @MovieId AND TheaterID = @TheaterID AND Playtime = @Playtime"; Params.Add(new Tuple <string, object>("@MovieId", SelectedMovieID)); Params.Add(new Tuple <string, object>("@TheaterID", SelectedTheater)); Params.Add(new Tuple <string, object>("@Playtime", SelectedPlayDate)); reader = dbManager.GetDataList(Command, Params); List <Movieschedule> movieschedule = Movieschedule.SqlDataReaderToMember(reader); if (movieschedule == null || movieschedule.Count != 1) { return; } RemainSeatCount = Convert.ToInt32(movieschedule[0].Seatremained); if (RemainSeatCount == 0) { return; } Params.Clear(); Command = "Update Movieschedule Set Seatremained = @Seatremained " + "Where MovieID = @MovieId AND TheaterID = @TheaterID AND Playtime = @Playtime"; Params.Add(new Tuple <string, object>("@Seatremained", RemainSeatCount - remainTicket)); Params.Add(new Tuple <string, object>("@MovieId", SelectedMovieID)); Params.Add(new Tuple <string, object>("@TheaterID", SelectedTheater)); Params.Add(new Tuple <string, object>("@Playtime", SelectedPlayDate)); if (!dbManager.DoCommand(Command, Params)) { ;//TODO : 예약 실패 로직(미완성). } else { Response.Redirect("BookingList.aspx"); } #endregion }
//예매취소 protected void Button2_Click(object sender, EventArgs e) { //TODO : Movie Schedule의 RemianSeat 반환 // Seat에서 예약상태 변경 // 예약 내용 제거 // 환불 int refundCount = 0; string RefundID = ""; string Command = ""; List <Tuple <string, object> > Params = new List <Tuple <string, object> >(); SqlDataReader reader; foreach (TableRow tr in Table1.Rows) { try { //Table의 제일 첫번째 열은 제목 열이므로 체크박스 컨트롤이 없다. if (tr.Cells[0].Controls.Count < 1) { continue; } CheckBox chkbox = (CheckBox)tr.Cells[0].Controls[0]; if (chkbox.Checked) { //추후 환불금액을 측정하기위해 환불 좌석수 카운트. refundCount++; #region 예약 내용 Get Command = "Select * From Booking Where ID = @ID AND MovieID = @MovieID AND TheaterID = @TheaterID AND " + "Playdatetime = @Playdatetime AND Seatrow = @Seatrow AND Seatnumber = @Seatnumber"; string[] keys = chkbox.ToolTip.Split('_'); RefundID = keys[0]; String PlayTime = DateTime.ParseExact(keys[3], "yyyy-MM-dd tt h:mm:ss", null).ToString("yyyy-MM-dd HH:mm:ss"); Params.Add(new Tuple <string, object>("@ID", keys[0])); Params.Add(new Tuple <string, object>("@MovieID", keys[1])); Params.Add(new Tuple <string, object>("@TheaterID", keys[2])); Params.Add(new Tuple <string, object>("@Playdatetime", PlayTime)); Params.Add(new Tuple <string, object>("@Seatrow", keys[4])); Params.Add(new Tuple <string, object>("@Seatnumber", keys[5])); reader = dbManager.GetDataList(Command, Params); List <Bookinginfo> BookingInfo = Bookinginfo.SqlDataReaderToBooking(reader); if (BookingInfo == null || BookingInfo.Count != 1) { Common.ShowMessage(this, @"예매삭제 실패. 관리자에게 문의하세요."); return; } Params.Clear(); #endregion #region MovieSchedule 테이블에서 RemainSeat 반환 // // Update example // Command = Command = "Update Seat Set Isbooked = @Isbooked " + // "Where TheaterID = @TheaterID AND Seatrow = @Seatrow AND Seatnumber = @Seatnumber AND Playtime = @Playtime"; Command = "Update Movieschedule Set Seatremained = Seatremained+1" + "Where MovieID = @MovieID AND TheaterID = @TheaterID AND Playtime = @Playtime"; Params.Add(new Tuple <string, object>("@MovieID", BookingInfo[0].MovieID)); Params.Add(new Tuple <string, object>("@TheaterID", BookingInfo[0].TheaterID)); Params.Add(new Tuple <string, object>("@Playtime", PlayTime)); dbManager.DoCommand(Command, Params); Params.Clear(); #endregion #region Seat테이블에서 Seat 반환 Command = "Update Seat Set Isbooked = 0" + "Where TheaterID = @TheaterID AND Playtime = @Playtime AND Seatrow = @Seatrow AND Seatnumber = @Seatnumber "; Params.Add(new Tuple <string, object>("@TheaterID", BookingInfo[0].TheaterID)); Params.Add(new Tuple <string, object>("@Playtime", PlayTime)); Params.Add(new Tuple <string, object>("@Seatrow", BookingInfo[0].Seatrow)); Params.Add(new Tuple <string, object>("@Seatnumber", BookingInfo[0].Seatnumber)); dbManager.DoCommand(Command, Params); Params.Clear(); #endregion #region 예약 내용 제거 // Delete Example // string Command = "DELETE FROM Member where ID=@id"; Command = "Delete From Booking Where ID = @ID AND MovieID = @MovieID AND TheaterID = @TheaterID AND " + "Playdatetime = @Playdatetime AND Seatrow = @Seatrow AND Seatnumber = @Seatnumber"; Params.Add(new Tuple <string, object>("@ID", keys[0])); Params.Add(new Tuple <string, object>("@MovieID", keys[1])); Params.Add(new Tuple <string, object>("@TheaterID", keys[2])); Params.Add(new Tuple <string, object>("@Playdatetime", PlayTime)); Params.Add(new Tuple <string, object>("@Seatrow", keys[4])); Params.Add(new Tuple <string, object>("@Seatnumber", keys[5])); dbManager.DoCommand(Command, Params); Params.Clear(); #endregion } } catch (Exception ex) { Console.WriteLine(ex.Data); return; } } #region 환불 if (refundCount != 0) { Command = "SELECT * FROM Point WHERE ID=@id ORDER BY Occuredatetime DESC"; Params.Add(new Tuple <string, object>("@id", RefundID)); reader = dbManager.GetDataList(Command, Params); List <dataSet.Point> points = dataSet.Point.SqlDataReaderToMember(reader); Params.Clear(); Command = "Insert into Point(ID, Occuredatetime, Usedvalue, Rechargedvalue, Remainvalue)" + "values(@ID, @Occuredatetime, @Usedvalue, @Rechargedvalue, @Remainvalue)"; Params.Add(new Tuple <string, object>("@ID", RefundID)); Params.Add(new Tuple <string, object>("@Occuredatetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); Params.Add(new Tuple <string, object>("@Usedvalue", 0)); Params.Add(new Tuple <string, object>("@Rechargedvalue", 0)); Params.Add(new Tuple <string, object>("@Remainvalue", Convert.ToInt32(points[0].Remainvalue) + (refundCount * Constant.MoviePrice))); dbManager.DoCommand(Command, Params); } #endregion Page.Response.Redirect(Page.Request.Url.ToString(), true); }