protected internal static RoomListForm Instance() { if (_instance == null) { _instance = new RoomListForm(); } return(_instance); }
private void btnReserve_Click(object sender, EventArgs e) { int check = checkRoomState(); if (check != 2) //Chưa đặt trước { if (check != 1) //trống { HomeForm hf = HomeForm.Instance(); ReservationForm rf = ReservationForm.Instance(); if (!hf.panel3.Controls.Contains(rf)) { hf.panel3.Controls.Add(rf); rf.Dock = DockStyle.Fill; rf.BringToFront(); rf.Visible = true; rf.lblRoom.Text = lblRoom.Text; rf.lblRoomType.Text = lblRoomType.Text; rf.lblOccu.Text = lblPCount.Text; this.Hide(); } else { rf.BringToFront(); rf.Visible = true; rf.lblRoom.Text = lblRoom.Text; rf.lblRoomType.Text = lblRoomType.Text; rf.lblOccu.Text = lblPCount.Text; this.Hide(); } } else { MessageBox.Show("Phòng đang được sử dụng", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else { MessageBox.Show("Phòng đã được đặt truóc", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); DialogResult dr = MessageBox.Show("Bạn có muốn huỷ đặt trước", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { cancel_Reservation(lblRoom.Text); resetRoomState(); RoomListForm.Instance().load_RoomList(); ReservationListForm.Instance().load_ReservationList(); } return; } }
private void btnRoomList_Click(object sender, EventArgs e) { if (!panel3.Controls.Contains(RoomListForm.Instance())) { panel3.Controls.Add(RoomListForm._instance); RoomListForm._instance.Dock = DockStyle.Fill; RoomListForm._instance.BringToFront(); RoomListForm._instance.Visible = true; } else { RoomListForm._instance.BringToFront(); RoomListForm._instance.Visible = true; } }
private void HomeForm_Load(object sender, EventArgs e) { timer1.Enabled = true; if (!panel3.Controls.Contains(RoomListForm.Instance())) { panel3.Controls.Add(RoomListForm._instance); RoomListForm._instance.Dock = DockStyle.Fill; RoomListForm._instance.BringToFront(); RoomListForm._instance.Visible = true; } else { RoomListForm._instance.BringToFront(); RoomListForm._instance.Visible = true; } }
private void btnSubmit_Click(object sender, EventArgs e) { if (!checkEmpty()) //ĐẦY ĐỦ { int x = checkCMND(); if (x != 0) //KT CMND KH NÀY CÓ ĐANG Checkin =>>không có CHECKIN HOẶC ĐÃ CHECKOUT, hoặc k có trng db { if (x == 1) { if (!checkNumOfPeople()) { if (checkRes() == 0) { updateGuest(); reservation(); update_Room(); MessageBox.Show("Đặt trước thành công", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); txtLastName.Text = ""; txtFirstName.Text = ""; txtCMND.Text = ""; txtNumOfPeople.Text = ""; ReservationListForm.Instance().load_ReservationList(); RoomListForm.Instance().load_RoomList(); GuestListForm.Instance().load_GuestList(); this.Hide(); } else { MessageBox.Show("Khách hàng này đã đặt trước", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else { MessageBox.Show("Vượt quá số người quy định", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else { if (!checkNumOfPeople()) { if (checkRes() == 0) { insertGuest(); reservation(); update_Room(); MessageBox.Show("Đặt trước thành công", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); txtLastName.Text = ""; txtFirstName.Text = ""; txtCMND.Text = ""; txtNumOfPeople.Text = ""; ReservationListForm.Instance().load_ReservationList(); RoomListForm.Instance().load_RoomList(); GuestListForm.Instance().load_GuestList(); this.Hide(); } else { MessageBox.Show("Khách hàng này đã đặt trước", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else { MessageBox.Show("Vượt quá số người quy định", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } } else { MessageBox.Show("Khách hàng này đã Checkin", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else //CHƯA ĐIỀN ĐẦY ĐỦ Ô TRỐNG { return; } }
private void Transact() { tran = null; using (con = new SqlConnection(cs)) { con.Open(); using (tran = con.BeginTransaction(IsolationLevel.Serializable)) { //Thread.Sleep(5000); try { //TÌM KHÁCH HÀNG TRONG DB string cmnd = ""; string stateKH = ""; cmd = new SqlCommand("SELECT CMND,TrangThai FROM KHACH_HANG WHERE CMND = @cmnd", con, tran); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); rdr = cmd.ExecuteReader(); if (rdr.Read()) { cmnd = rdr["CMND"].ToString(); stateKH = rdr["TrangThai"].ToString(); } rdr.Close(); //KHÔNG CÓ KHÁCH HÀNG TRONG DB if (cmnd.Equals("")) { //THÊM THÔNG TIN KHÁCH HÀNG VÀO DB cmd = new SqlCommand("INSERT INTO KHACH_HANG(HoDem,Ten,CMND,TrangThai) VALUES(@hodem,@ten,@cmnd,@trangthaikh)", con, tran); cmd.Parameters.AddWithValue("@hodem", txtLastName.Text.Trim()); cmd.Parameters.AddWithValue("@ten", txtFirstName.Text.Trim()); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); cmd.Parameters.AddWithValue("@trangthaikh", "Checkin"); tran.Save("insertGuest"); cmd.ExecuteNonQuery(); } else //CÓ KHÁCH HÀNG TRONG DB { //KIỂM TRA XEM KHÁCH HÀNG CÓ ĐANG CHECKIN if (stateKH.Equals("Checkin")) //CÓ { MessageBox.Show("Khách hàng này đang Checkin", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); tran.Rollback(); return; } else if (stateKH.Equals("Reserve")) //KHÁCH HÀNG CÓ ĐẶT TRƯỚC { //CẬP NHẬT TRẠNG THÁI SANG CHECKIN, cmd = new SqlCommand("UPDATE KHACH_HANG SET TrangThai=@trangthaikh WHERE CMND=@cmnd", con, tran); cmd.Parameters.AddWithValue("@trangthaikh", "Checkin"); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); tran.Save("updateGuestState"); cmd.ExecuteNonQuery(); //CẬP NHẬT DS ĐẶT TRƯỚC SANG ĐÃ CHECKIN, cmd = new SqlCommand("UPDATE DAT_TRUOC SET TrangThai=@trangthaidt WHERE CMND=@cmnd AND MaPhong=@maphong", con, tran); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); cmd.Parameters.AddWithValue("@trangthaidt", "Checkin"); tran.Save("updateReserve"); cmd.ExecuteNonQuery(); } else //KHÔNG { //CẬP NHẬT TRẠNG THÁI SANG CHECKIN cmd = new SqlCommand("UPDATE KHACH_HANG SET TrangThai=@trangthaikh WHERE CMND =@cmnd", con, tran); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); cmd.Parameters.AddWithValue("@trangthaikh", "Checkin"); tran.Save("updateGuest"); cmd.ExecuteNonQuery(); } } //KIỂM TRA PHÒNG cmd = new SqlCommand("SELECT GioiHan,SoNguoiHienCo,TinhTrang FROM PHONG WHERE MaPhong=@maphong", con, tran); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); rdr = cmd.ExecuteReader(); int gioihan = 0; int snhienco = 0; int sndangki = (int)Val(txtPeopleCount.Text.Trim()); string stateRoom = ""; if (rdr.Read()) { gioihan = (int)Val(rdr["GioiHan"].ToString()); snhienco = (int)Val(rdr["SoNguoiHienCo"].ToString()); stateRoom = rdr["TinhTrang"].ToString(); } else { MessageBox.Show("Không tìm được phòng này"); tran.Rollback(); return; } rdr.Close(); //SO SÁNH SỐ NGƯỜI ĐĂNG KÍ VỚI SỐ NGƯỜI GIỚI HẠN if (gioihan == snhienco) { MessageBox.Show("Phòng đầy!!!,Xin chọn phòng khác"); tran.Rollback(); return; } else if (snhienco + sndangki > gioihan) { MessageBox.Show("Đăng kí vượt quá số người qui định " + ((sndangki + snhienco) - gioihan) + " người." + ",Xin chọn phòng khác"); tran.Rollback(); return; } //KIỂM TRA NGƯỜI CHECKIN CHÍNH, LƯU VÀO HOÁ ĐƠN, LƯU GIAO DỊCH if (snhienco == 0 && (stateRoom.Equals("Trống") || stateRoom.Equals("Đặt trước"))) { string idkh = ""; //TÌM KHÁCH HÀNG cmd = new SqlCommand("SELECT CMND FROM KHACH_HANG WHERE CMND=@cmnd", con, tran); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); rdr = cmd.ExecuteReader(); while (rdr.Read()) { idkh = rdr["CMND"].ToString(); } rdr.Close(); if (idkh.Equals("")) { MessageBox.Show("Xảy ra lỗi...,Xin thử lại"); tran.Rollback(); return; } ////KIỂM TRA NGƯỜI DÙNG CÓ ĐANG ĐĂNG NHẬP //cmd = new SqlCommand("SELECT TrangThai FROM NGUOI_DUNG WHERE idND=@find", con, tran); //cmd.Parameters.AddWithValue("@find", HomeForm.Instance().lblIDUser.Text); //rdr = cmd.ExecuteReader(); //if (rdr.Read()) //{ // if (rdr["TrangThai"].Equals("0")) // { // this.Hide(); // LoginForm login = new LoginForm(); // login.Show(); // tran.Rollback(); // return; // } //} //rdr.Close(); //TẠO HOÁ ĐƠN cmd = new SqlCommand("INSERT INTO HOA_DON(idND,CMND,MaPhong,NgayLap) VALUES(@idnd,@cmnd,@maphong,@ngaylap)", con, tran); cmd.Parameters.AddWithValue("@idnd", HomeForm.Instance().lblIDUser.Text); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@ngaylap", datetime); tran.Save("insertHD"); cmd.ExecuteNonQuery(); //LẤY ID HD, TẠO CTHD string idhd = ""; cmd.CommandText = "SELECT idHD FROM HOA_DON WHERE MaPhong=@maphong AND CMND=@cmnd ORDER BY NgayLap DESC"; //cmd.Parameters.AddWithValue("@idkh", idkh); //cmd.Parameters.AddWithValue("@trangthaihd", 0); rdr = cmd.ExecuteReader(); if (rdr.Read()) { idhd = rdr["idHD"].ToString(); } rdr.Close(); if (idhd.Equals("")) { MessageBox.Show("Xảy ra lỗi...,Xin thử lại"); tran.Rollback(); return; } cmd.CommandText = "INSERT INTO CT_HOA_DON(idHD,SoNgay,SoNguoi,NgayDangKi,TraTruoc) VALUES(@idhd,@songay,@songuoi,@ngaydangki,@tratruoc)"; cmd.Parameters.AddWithValue("@idhd", idhd); cmd.Parameters.AddWithValue("@songuoi", (int)Val(txtPeopleCount.Text)); cmd.Parameters.AddWithValue("@songay", (int)Val(txtNumOfDay.Text)); cmd.Parameters.AddWithValue("@ngaydangki", datetime); cmd.Parameters.AddWithValue("@tratruoc", decimal.Parse(txtAdvance.Text)); tran.Save("insertCTHD"); cmd.ExecuteNonQuery(); //TẠO GIAO DỊCH cmd.CommandText = "INSERT INTO GIAO_DICH(LoaiDK,CMND,MaPhong,NgayDangKi,SoNguoi,TrangThai) VALUES(@loaidk,@cmnd,@maphong,@ngaydangki,@songuoi,@trangthaigd)"; cmd.Parameters.AddWithValue("@loaidk", 0); //0-người đăng kí chính cmd.Parameters.AddWithValue("@trangthaigd", "Active"); //cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); tran.Save("insertGD"); cmd.ExecuteNonQuery(); //CẬP NHẬT TÌNH TRẠNG PHÒNG cmd.CommandText = "UPDATE PHONG SET TinhTrang=@tinhtrangphong,SoNguoiHienCo+=@snhienco WHERE MaPhong=@maphong"; cmd.Parameters.AddWithValue("@tinhtrangphong", "Đang sử dụng"); //0-người đăng kí chính cmd.Parameters.AddWithValue("@snhienco", 1); tran.Save("updateRoom"); cmd.ExecuteNonQuery(); } //NGƯỜI PHỤ, KHÔNG LƯU HOÁ ĐƠN, CẬP NHẬT PHÒNG, CẬP NHẬT GIAO DỊCH else { string CMND = ""; //TÌM KHÁCH HÀNG cmd = new SqlCommand("SELECT CMND FROM KHACH_HANG WHERE CMND=@cmnd", con, tran); cmd.Parameters.AddWithValue("@cmnd", txtCMND.Text.Trim()); rdr = cmd.ExecuteReader(); while (rdr.Read()) { CMND = rdr["CMND"].ToString(); } rdr.Close(); if (CMND.Equals("")) { MessageBox.Show("Xảy ra lỗi...,Xin thử lại"); tran.Rollback(); return; } //TẠO GIAO DỊCH cmd.CommandText = "INSERT INTO GIAO_DICH(LoaiDK,CMND,MaPhong,NgayDangKi,SoNguoi,TrangThai) VALUES(@loaidk,@cmnd,@maphong,@ngaydangki,@songuoi,@trangthaigd)"; cmd.Parameters.AddWithValue("@loaidk", 1); //1-người đăng kí phụ cmd.Parameters.AddWithValue("@trangthaigd", "Active"); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@ngaydangki", datetime); cmd.Parameters.AddWithValue("@songuoi", 1); tran.Save("insertGD"); cmd.ExecuteNonQuery(); //CẬP NHẬT TÌNH TRẠNG PHÒNG cmd.CommandText = "UPDATE PHONG SET TinhTrang=@tinhtrangphong,SoNguoiHienCo+=@snhienco WHERE MaPhong=@maphong"; cmd.Parameters.AddWithValue("@tinhtrangphong", "Đang sử dụng"); //0-người đăng kí chính cmd.Parameters.AddWithValue("@snhienco", 1); tran.Save("updateRoom"); cmd.ExecuteNonQuery(); } tran.Commit(); MessageBox.Show("CHECKIN thành công.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Commit exeption type: " + ex.GetType()); MessageBox.Show("Commit exeption type: " + ex.StackTrace); MessageBox.Show("Message :" + ex.Message); try { if (tran != null) { tran.Rollback(); } } catch (Exception ex2) { MessageBox.Show("Rollback exeption type :" + ex2.GetType()); MessageBox.Show("Message :" + ex2.Message); } } finally { con.Close(); lblCurrentPeopleCount.Text = loadCurrentPeople(); ReservationListForm.Instance().load_ReservationList(); GuestListForm.Instance().load_GuestList(); RoomListForm.Instance().load_RoomList(); } } } }
private void btnCheckIn_Click(object sender, EventArgs e) { try { if ((txtRoomNo.Text.Trim().Length) == 0) { MessageBox.Show("Xin nhập số phòng ", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error); txtRoomNo.Focus(); return; } if ((cbRoomType.Text.Trim().Length) == 0) { MessageBox.Show("Xin chọn loại phòng", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error); cbRoomType.Focus(); return; } if ((cbOccupancy.Text.Trim().Length) == 0) { MessageBox.Show("Xin chọn số người ", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error); cbOccupancy.Focus(); return; } con = new SqlConnection(cs); con.Open(); string ct = "SELECT MaPhong FROM PHONG WHERE MaPhong=@find"; cmd = new SqlCommand(ct); cmd.Connection = con; cmd.Parameters.Add(new SqlParameter("@find", System.Data.SqlDbType.NVarChar, 10, "MaPhong")).Value = txtRoomNo.Text; rdr = cmd.ExecuteReader(); if (rdr.Read()) { MessageBox.Show("Đã có phòng này ", "Input error", MessageBoxButtons.OK, MessageBoxIcon.Error); txtRoomNo.Text = ""; if ((rdr != null)) { rdr.Close(); } } else { con = new SqlConnection(cs); con.Open(); string cb = "INSERT INTO PHONG(MaPhong,LoaiPhong,TinhTrang,GioiHan,SoNguoiHienCo) VALUES(@d1,@d2,@d3,@d4,@d5)"; cmd = new SqlCommand(cb); cmd.Connection = con; cmd.Parameters.Add(new SqlParameter("@d1", System.Data.SqlDbType.NVarChar, 10, "MaPhong")).Value = txtRoomNo.Text; cmd.Parameters.Add(new SqlParameter("@d2", System.Data.SqlDbType.NVarChar, 10, "LoaiPhong")).Value = cbRoomType.Text; cmd.Parameters.Add(new SqlParameter("@d3", System.Data.SqlDbType.NVarChar, 50, "TinhTrang")).Value = "Trống"; cmd.Parameters.Add(new SqlParameter("@d4", System.Data.SqlDbType.Int, 10, "GioiHan")).Value = cbOccupancy.Text; cmd.Parameters.Add(new SqlParameter("@d5", System.Data.SqlDbType.Int, 10, "SoNguoiHienCo")).Value = 0; cmd.ExecuteReader(); MessageBox.Show("Tạo phòng thành công", "Room", MessageBoxButtons.OK, MessageBoxIcon.Information); txtRoomNo.Text = ""; cbRoomType.Text = ""; cbOccupancy.Text = ""; con.Close(); } RoomListForm.Instance().load_RoomList(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void listView1_DoubleClick(object sender, EventArgs e) { int temp = checkStatus(this.listView1.SelectedItems[0].SubItems[7].Text.ToString()); //0-Đang đặt 1-HUỶ 2-Đã Checkin if (temp == 0) { DialogResult dr = MessageBox.Show("Bạn có muốn CHECKIN ?", "Information", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { HomeForm hf = HomeForm.Instance(); CheckinForm cf = CheckinForm.Instance(); if (!hf.panel3.Controls.Contains(cf)) { hf.panel3.Controls.Add(cf); cf.Dock = DockStyle.Fill; cf.BringToFront(); cf.Visible = true; getRoomData(listView1.SelectedItems[0].SubItems[4].Text.ToString()); cf.lblRoom.Text = listView1.SelectedItems[0].SubItems[4].Text.ToString(); cf.txtCMND.Text = listView1.SelectedItems[0].SubItems[3].Text.ToString(); cf.txtLastName.Text = listView1.SelectedItems[0].SubItems[1].Text.ToString(); cf.txtFirstName.Text = listView1.SelectedItems[0].SubItems[2].Text.ToString(); cf.lblOccupancy.Text = tempRoomOccu.ToString(); cf.lblCurrentPeopleCount.Text = tempRoomCurr.ToString(); cf.lblRoomType.Text = tempRoomType; this.Hide(); } else { cf.BringToFront(); cf.Visible = true; getRoomData(listView1.SelectedItems[0].SubItems[4].Text.ToString()); cf.lblRoom.Text = listView1.SelectedItems[0].SubItems[4].Text.ToString(); cf.txtCMND.Text = listView1.SelectedItems[0].SubItems[3].Text.ToString(); cf.txtLastName.Text = listView1.SelectedItems[0].SubItems[1].Text.ToString(); cf.txtFirstName.Text = listView1.SelectedItems[0].SubItems[2].Text.ToString(); cf.lblOccupancy.Text = tempRoomOccu.ToString(); cf.lblCurrentPeopleCount.Text = tempRoomCurr.ToString(); cf.lblRoomType.Text = tempRoomType; this.Hide(); } } else if (dr == DialogResult.No) { DialogResult dialog = MessageBox.Show("Bạn muốn HUỶ?", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (dialog == DialogResult.Yes) { cancel_Reservation(listView1.SelectedItems[0].SubItems[4].Text.ToString(), listView1.SelectedItems[0].SubItems[3].Text.ToString()); RoomListForm.Instance().load_RoomList(); load_ReservationList(); GuestListForm.Instance().load_GuestList(); } else { return; } } else { return; } } else if (temp == 1) //HUỶ { MessageBox.Show("Khách hàng đã huỷ ", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } else // Đã checkin { MessageBox.Show("Khách hàng đã CHECKIN ", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void Transaction() { using (con = new SqlConnection(cs)) { con.Open(); using (tran = con.BeginTransaction(IsolationLevel.Serializable)) { try { int flag = 0; //KIỂM TRA TÌNH TRẠNG KHÁCH HÀNG cmd = new SqlCommand("SELECT CMND,TrangThai FROM KHACH_HANG WHERE CMND = @cmnd", con, tran); cmd.Parameters.AddWithValue("@cmnd", lblCMND.Text); rdr = cmd.ExecuteReader(); string stateKH = ""; string cmnd = ""; while (rdr.Read()) { stateKH = rdr["TrangThai"].ToString(); cmnd = rdr["CMND"].ToString(); } rdr.Close(); if (stateKH.Equals("") || stateKH.Equals("Checkout") || stateKH.Equals("Reserve")) { flag = 1; } //KIỂM TRA TÌNH TRẠNG PHÒNG cmd = new SqlCommand("SELECT TinhTrang FROM PHONG WHERE MaPhong = @maphong", con, tran); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); rdr = cmd.ExecuteReader(); string stateRoom = ""; while (rdr.Read()) { stateRoom = rdr["TinhTrang"].ToString(); } rdr.Close(); if (stateRoom.Equals("") || stateRoom.Equals("Đặt trước") || stateRoom.Equals("Trống")) { flag = 1; } //KIỂM TRA GIAO_DỊCH cmd = new SqlCommand(" ", con, tran); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@trangthai", "Active"); rdr = cmd.ExecuteReader(); string stateGD = ""; List <string> listCMND = new List <string>(); while (rdr.Read()) { stateGD = rdr["TrangThai"].ToString(); listCMND.Add(rdr["CMND"].ToString()); } rdr.Close(); if (stateGD.Equals("")) { flag = 1; } //KIỂM TRA HOÁ ĐƠN cmd = new SqlCommand("SELECT idHD,NgayLap FROM HOA_DON WHERE CMND = @cmnd AND MaPhong=@maphong ORDER BY NgayLap DESC", con, tran); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@cmnd", cmnd); rdr = cmd.ExecuteReader(); string idHD = ""; DateTime ngaydk = DateTime.Now; if (rdr.Read()) { idHD = rdr["idHD"].ToString(); ngaydk = Convert.ToDateTime(rdr["NgayLap"].ToString()); } rdr.Close(); tran.Save("updateGuest"); foreach (string item in listCMND) { cmd = new SqlCommand("UPDATE KHACH_HANG SET TrangThai=@trangthai WHERE CMND=@cmnd", con, tran); cmd.Parameters.AddWithValue("@trangthai", "Checkout"); cmd.Parameters.AddWithValue("@cmnd", item); cmd.ExecuteNonQuery(); } //KIỂM TRA DS_DICH VU cmd = new SqlCommand("SELECT A.Gia,B.SoLuong,B.idDSDV FROM DICH_VU A,DS_DICH_VU B WHERE A.idDV=B.idDV AND idHD=@idhd", con, tran); cmd.Parameters.AddWithValue("@idhd", idHD); rdr = cmd.ExecuteReader(); decimal totalDV = 0; List <string> listDSDV = new List <string>(); while (rdr.Read()) { totalDV += (decimal)Val(rdr["Gia"].ToString()) * (decimal)Val(rdr["SoLuong"].ToString()); listDSDV.Add(rdr["idDSDV"].ToString()); } rdr.Close(); //TRẠNG THÁI if (flag == 1) { MessageBox.Show("Đã checkout!!!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Hide(); return; } //LẤY TIỀN TRẢ TRƯỚC TỪ CT_HOA_DON decimal tratruoc = 0; cmd = new SqlCommand("SELECT TraTruoc FROM CT_HOA_DON WHERE idHD=@idhd", con, tran); cmd.Parameters.AddWithValue("@idhd", idHD); rdr = cmd.ExecuteReader(); while (rdr.Read()) { tratruoc = decimal.Parse(rdr["TraTruoc"].ToString()); } rdr.Close(); //TÍNH TIỀN decimal total = ((calculate_Roomprice(ngaydk, DateTime.Now, lblRoomType.Text, 80000, 20000) + totalDV) - tratruoc); decimal cash = Convert.ToDecimal(txtCASH.Text); decimal changes = cash - total; if (total < 0) { txtChanges.Text = total.ToString(numberformat); } if (changes < 0) { MessageBox.Show("Không đủ tiền!!!,\n" + total.ToString(numberformat), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { txtChanges.Text = changes.ToString(numberformat); } //TÍNH SỐ NGÀY THỰC TẾ TimeSpan ts = DateTime.Now.Subtract(ngaydk); decimal songay = Convert.ToDecimal(ts.Days); //CẬP NHẬT DANH SÁCH ĐẶT TRƯỚC cmd = new SqlCommand("UPDATE DAT_TRUOC SET TrangThai=@trangthai WHERE MaPhong=@maphong AND CMND=@cmnd", con, tran); cmd.Parameters.AddWithValue("@trangthai", "Checkout"); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@cmnd", lblCMND.Text); tran.Save("updateReserve"); cmd.ExecuteNonQuery(); //CẬP NHẬT PHÒNG cmd = new SqlCommand("UPDATE PHONG SET TinhTrang=@trangthai,SoNguoiHienCo=@snhc WHERE MaPhong=@maphong", con, tran); cmd.Parameters.AddWithValue("@trangthai", "Trống"); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@snhc", 0); tran.Save("updateRoom"); cmd.ExecuteNonQuery(); //CẬP NHẬT GIAO DỊCH foreach (string item in listCMND) { cmd = new SqlCommand("UPDATE GIAO_DICH SET TrangThai=@afterState,NgayTra=@ngaytra WHERE CMND=@cmnd AND MaPhong=@maphong AND TrangThai=@firstState", con, tran); cmd.Parameters.AddWithValue("@afterState", ""); cmd.Parameters.AddWithValue("@firstState", "Active"); cmd.Parameters.AddWithValue("@cmnd", item); cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); cmd.Parameters.AddWithValue("@ngaytra", DateTime.Now); cmd.ExecuteNonQuery(); } tran.Save("updateGD"); //CẬP NHẬT HOÁ ĐƠN //cmd = new SqlCommand("UPDATE HOA_DON SET NgayTra=@ngaytra WHERE MaPhong=@maphong AND CMND=@cmnd AND idHD=@idHD", con, tran); //cmd.Parameters.AddWithValue("@afterState", "1"); //cmd.Parameters.AddWithValue("@total", total); //cmd.Parameters.AddWithValue("@maphong", lblRoom.Text); //cmd.Parameters.AddWithValue("@cmnd", cmnd); //cmd.Parameters.AddWithValue("@idhd", idHD); //cmd.Parameters.AddWithValue("@sn", songay); //cmd.Parameters.AddWithValue("@ngaytra", DateTime.Now); //tran.Save("updateHD"); //cmd.ExecuteNonQuery(); //CẬP NHẬT CT_HOÁ ĐƠN cmd = new SqlCommand("UPDATE CT_HOA_DON SET NgayTra=@ngaytra,TongTien=@total,TienDichVu=@tiendv,SoNgay=@sn WHERE idHD=@idHD", con, tran); cmd.Parameters.AddWithValue("@tiendv", totalDV); cmd.Parameters.AddWithValue("@total", total); cmd.Parameters.AddWithValue("@sn", songay); cmd.Parameters.AddWithValue("@idhd", idHD); cmd.Parameters.AddWithValue("@ngaytra", DateTime.Now); tran.Save("updateCTHD"); cmd.ExecuteNonQuery(); //CẬP NHẬT DANH SÁCH DỊCH VỤ tran.Save("deleteDSDV"); foreach (string item in listDSDV) { cmd = new SqlCommand("DELETE DS_DICH_VU WHERE idDSDV=@idds", con, tran); cmd.Parameters.AddWithValue("@idds", item); cmd.ExecuteNonQuery(); } listCMND.Clear(); listDSDV.Clear(); tran.Commit(); MessageBox.Show("Trả phòng thành công"); } catch (Exception ex) { MessageBox.Show("Commit exeption type: " + ex.GetType()); MessageBox.Show("Stack trade: " + ex.StackTrace); MessageBox.Show("Message :" + ex.Message); try { if (tran != null) { tran.Rollback(); } } catch (Exception ex2) { MessageBox.Show("Rollback exeption type :" + ex2.GetType()); MessageBox.Show("Message :" + ex2.Message); } } finally { con.Close(); ReservationListForm.Instance().load_ReservationList(); GuestListForm.Instance().load_GuestList(); RoomListForm.Instance().load_RoomList(); } } } }