public XeHoi(XeHoi x) : base(x)
 {
     this.bienSoXe = x.bienSoXe;
     this.kieuXe   = x.kieuXe;
     this.hieuXe   = x.hieuXe;
     this.soGhe    = x.soGhe;
 }
        public static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.Unicode;
            KhuVucDeXe khuA    = new KhuVucDeXe(41, "hình chữ nhật", "123 Hai  Bà Trưng", 45.6, "A");
            KhuVucDeXe khuB    = new KhuVucDeXe(41, "hình chữ nhật", "123 Hai  Bà Trưng", 45.6, "B");
            KhuVucDeXe khuC    = new KhuVucDeXe(41, "hình chữ nhật", "123 Hai  Bà Trưng", 45.6, "C");
            Database   db      = new Database(); // Cơ sở dữ liệu để quản lý bãi xe
            CameraCong camCong = new CameraCong();
            CongRaVao  congVao = new CongRaVao();
            CongRaVao  congRa  = new CongRaVao();

            // Thêm nhân viên vào list trong khu vực
            Nhanvien minh = new Nhanvien(34545, "Nguyễn Minh", "23/12/2001", "Nam", "343 dfd", 2434343);

            khuA.listBaoVe.Add(minh);
            db.listNhanVien.Add(minh);
            Nhanvien hoa = new Nhanvien(34545, "Nguyễn Minh", "34/3/3211", "Nam", "343 dfd", 24343433);

            khuA.listBaoVe.Add(hoa);
            db.listNhanVien.Add(hoa);
            Nhanvien bao = new Nhanvien(34545, "Nguyễn Bảo", "34/3/3211", "Nam", "343 d2d", 24343);

            khuA.listBaoVe.Add(bao);
            db.listNhanVien.Add(bao);


            // Gửi xe vào
            camCong.chupHinh += thaoTacCheckIn;
            XeHoi mes   = new XeHoi("12456dg", "thể thao", "Mescerdez", 4, 2311, "Đỏ", "Xe Hơi", khuA);
            User  tris  = new User("ddwree", mes);
            XeHoi mes2  = new XeHoi("12456dg", "thể thao", "Mescerdez", 4, 2311, "Đỏ", "Xe Hơi", khuB);
            User  vinh  = new User("df33r3", mes2);
            XeMay honda = new XeMay("33422", "Phân khối", "Honđa", 1, 1234, "Xanh", "Xe số", khuC);
            User  Phat  = new User("1sss", honda);

            Console.WriteLine(camCong.thucHienCheckIn(mes2, vinh, db));
            Console.WriteLine("====================================================================");
            Console.WriteLine(camCong.thucHienCheckIn(honda, Phat, db));
            Console.WriteLine("====================================================================");
            Console.WriteLine(camCong.thucHienCheckIn(mes, tris, db));
            Console.WriteLine("====================================================================");

            // Lấy xe ra
            camCong.chupRa += thaoTacCheckOut;
            Console.WriteLine(camCong.thucHienCheckOut(honda, Phat, db));
            Console.WriteLine("====================================================================");

            //Khi người dùng quên mất đã gửi xe ở khu nào
            db.timXe += thaoTacTimViTriXe;
            Console.WriteLine(db.thucHienTimXe(vinh, db));
            Console.WriteLine("====================================================================");

            // Khi mất thẻ
            camCong.zoom     += thaoTacZoom;
            camCong.nhanDien += xacNhanMatThe;
            User a = new User("df33r3", mes2);

            Console.WriteLine(camCong.thucHienZoom(camCong));
            Console.WriteLine(camCong.thuTucMatThe(a, a.phuongTien, db));
            Console.WriteLine("====================================================================");

            // Thay ca
            khuA.thayCa += thaoTacThayCa;
            Nhanvien trd = new Nhanvien(3454231, "Nguyễn Trí", "34/3/3211", "Nam", "343 d2d", 24343);

            Console.WriteLine(khuA.thucHienThayCa(trd, minh, db));
            Console.WriteLine("====================================================================");

            // Mở tắt đèn
            khuA.congTacDen += moTatDen;
            Console.WriteLine(khuA.thucHienMoTatDen(khuA));
            Console.WriteLine("====================================================================");

            // Làm vệ sinh khu vực
            khuA.veSinh += diCatCo;
            Console.WriteLine(khuA.thucHienCatCo(khuA));
            Console.WriteLine("====================================================================");

            // Dịch vụ
            mes.dichVu += diRuaXe;
            Console.WriteLine(mes.thucHienRuaXe(mes));
            mes.dichVu += diSuaXe;
            mes.thucHienSuaXe(mes);
            Console.WriteLine(camCong.thucHienCheckOut(mes, tris, db));
            Console.WriteLine("====================================================================");

            //Thông báo của các khu vực
            khuA.thongBaoFull += thongBao;
            Console.WriteLine(khuA.thucHienThongBao(khuA));
            Console.WriteLine("====================================================================");

            //Camera thực hiện zoom
            Camera_Khu_Vuc cam = new Camera_Khu_Vuc(khuB, "Sonic", "322");

            cam.zoom += thaoTacZoom;
            Console.WriteLine(cam.thucHienZoom(cam));
            Console.WriteLine("====================================================================");

            // Mở và đóng cổng ra vào
            congRa.moDong += thaoTacMoCong;
            Console.WriteLine(congRa.thucHienMoCong(congRa));
            Console.WriteLine("====================================================================");

            // Báo cáo doanh thu
            db.baoCao += doanhThu;
            Console.WriteLine(db.thucHienBaoCao(db));
            Console.WriteLine("====================================================================");
        }