using System.Collections.Generic;
public string Ten { get; set; }
public decimal Gia { get; set; }
public SanPham(string ten, decimal gia)
public SanPham SanPham { get; set; }
public int SoLuong { get; set; }
public decimal ThanhTien => SanPham.Gia * SoLuong;
public string Ten { get; set; }
public string SoDienThoai { get; set; }
public string Feedback { get; set; }
static List<SanPham> menu = new List<SanPham>
new SanPham("Cà phê sữa", 25000),
new SanPham("Cà phê đen", 20000),
new SanPham("Trà đào", 30000),
new SanPham("Trà sữa", 35000),
new SanPham("Nước suối", 10000)
static List<MonDaGoi> hoaDon = new List<MonDaGoi>();
static KhachHang khachHang = new KhachHang();
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine("====== QUẢN LÝ QUÁN CÀ PHÊ ======");
Console.WriteLine("1. Xem menu");
Console.WriteLine("2. Gọi món");
Console.WriteLine("3. Xem hóa đơn tạm tính");
Console.WriteLine("4. Thanh toán và xuất hóa đơn");
Console.WriteLine("5. Ghi nhận đánh giá khách hàng");
Console.WriteLine("0. Thoát");
Console.Write("Chọn chức năng: ");
if (!int.TryParse(Console.ReadLine(), out luaChon))
Console.WriteLine("Vui lòng nhập số!");
Console.WriteLine("Tạm biệt và hẹn gặp lại!");
Console.WriteLine("Lựa chọn không hợp lệ.");
Console.WriteLine("\nNhấn phím bất kỳ để quay lại menu...");
static void NhapThongTinKhachHang()
Console.WriteLine("=== Nhập thông tin khách hàng ===");
Console.Write("Tên khách hàng: ");
khachHang.Ten = Console.ReadLine();
Console.Write("Số điện thoại: ");
khachHang.SoDienThoai = Console.ReadLine();
Console.WriteLine("\n--- MENU ---");
for (int i = 0; i < menu.Count; i++)
Console.WriteLine($"{i + 1}. {menu[i].Ten} - {menu[i].Gia:N0} VND");
Console.Write("\nNhập số thứ tự món: ");
if (!int.TryParse(Console.ReadLine(), out int index) || index < 1 || index > menu.Count)
Console.WriteLine("Món không hợp lệ!");
Console.Write("Nhập số lượng: ");
if (!int.TryParse(Console.ReadLine(), out int soLuong) || soLuong <= 0)
Console.WriteLine("Số lượng không hợp lệ!");
var sanPham = menu[index - 1];
var daGoi = hoaDon.FirstOrDefault(m => m.SanPham.Ten == sanPham.Ten);
daGoi.SoLuong += soLuong;
hoaDon.Add(new MonDaGoi { SanPham = sanPham, SoLuong = soLuong });
Console.WriteLine($"✅ Đã thêm {soLuong} x {sanPham.Ten}");
Console.WriteLine("Chưa có món nào được gọi.");
Console.WriteLine("\n--- HÓA ĐƠN TẠM TÍNH ---");
foreach (var item in hoaDon)
Console.WriteLine($"{item.SanPham.Ten} x {item.SoLuong} = {item.ThanhTien:N0} VND");
decimal tong = hoaDon.Sum(m => m.ThanhTien);
Console.WriteLine($"\nTạm tính: {tong:N0} VND");
Console.WriteLine("Chưa có món nào để thanh toán.");
decimal tong = hoaDon.Sum(m => m.ThanhTien);
string tenFile = $"HoaDon_{DateTime.Now:yyyyMMdd_HHmmss}.txt";
using (StreamWriter sw = new StreamWriter(tenFile))
sw.WriteLine("===== HÓA ĐƠN =====");
sw.WriteLine($"Khách hàng: {khachHang.Ten}");
sw.WriteLine($"SĐT: {khachHang.SoDienThoai}");
sw.WriteLine($"Ngày: {DateTime.Now}");
sw.WriteLine("------------------------------");
foreach (var item in hoaDon)
sw.WriteLine($"{item.SanPham.Ten} x{item.SoLuong} = {item.ThanhTien:N0} VND");
sw.WriteLine("------------------------------");
sw.WriteLine($"TỔNG CỘNG: {tong:N0} VND");
Console.WriteLine($"✅ Hóa đơn đã được lưu vào file: {tenFile}");
static void GhiNhanFeedback()
Console.Write("Nhập đánh giá/feedback của khách hàng: ");
khachHang.Feedback = Console.ReadLine();
string file = "Feedback.txt";
using (StreamWriter sw = File.AppendText(file))
sw.WriteLine($"Tên: {khachHang.Ten}, SĐT: {khachHang.SoDienThoai}");
sw.WriteLine($"Đánh giá: {khachHang.Feedback}");
sw.WriteLine($"Ngày: {DateTime.Now}");
sw.WriteLine("-------------------------");
Console.WriteLine("✅ Đã ghi nhận phản hồi khách hàng.");