//포인트 충전
        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
            }
        }
Beispiel #6
0
        //새로운 영화 등록
        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
        }
Beispiel #7
0
        //예약하기
        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
        }
Beispiel #8
0
        //예매취소
        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);
        }