public bool GiaHan(int masach)
        {
            giahanDAL  giahanDAL  = new giahanDAL();
            quydinhDAL quydinhDAL = new quydinhDAL();
            giahanDTO  giahanDTO  = new giahanDTO();
            quydinhDTO quydinhDTO = new quydinhDTO();

            quydinhDTO list = new quydinhDTO();

            quydinhDAL.listquydinh(list);

            //kiểm tra điều kiện
            int solangiahan = SoLanMuonSachHienTai(masach);

            if (solangiahan == -1)
            {
                //đã mess
                return(false);
            }
            if (solangiahan == 2)
            {
                BUS_notification.mess = "Đã quá số lần gia hạn cho phép";
                return(false);
            }

            solangiahan++;

            giahanDTO.Solangiahan = solangiahan;
            giahanDTO.Masach      = masach;

            //update số ngày cho phép mượn
            giahanDAL.sualangiahan(giahanDTO.Masach, giahanDTO);

            return(true);
        }
        public bool laygiahancuasach(int masach, giahanDTO ghDTO)
        {
            string query = string.Format("select * from [giahan] where masach=@masach");

            SqlParameter[] param = new SqlParameter[1];
            param[0]       = new SqlParameter("@masach", SqlDbType.Int);
            param[0].Value = masach;
            DataTable dtb = new DataTable();

            dtb = conn.excuteNonQuery(query, param);

            if (dtb.Rows.Count > 0)
            {
                DataRow dr = dtb.Rows[0];

                //   giahanDTO ghDTO = new giahanDTO();

                ghDTO.Masach      = int.Parse(dr["masach"].ToString());
                ghDTO.Solangiahan = int.Parse(dr["solangiahan"].ToString());


                return(true);
            }



            return(false);
        }
        public int SoLanMuonSachHienTai(int masach)
        {
            giahanDAL giahanDAL = new giahanDAL();
            giahanDTO giahanDTO = new giahanDTO();

            if (!giahanDAL.laygiahancuasach(masach, giahanDTO))
            {
                BUS_notification.mess = "Không thể lấy số ngày sách đã mượn. Vui lòng kiểm tra Database ";
                return(-1);
            }
            return(giahanDTO.Solangiahan);
        }
        public bool XoaSoLanMuonSach(int masach)
        {
            giahanDAL giahanDAL = new giahanDAL();
            giahanDTO giahanDTO = new giahanDTO();

            if (!giahanDAL.xoagiahan(masach))
            {
                BUS_notification.mess = "Không thể lấy số ngày sách đã mượn. Vui lòng kiểm tra Database  ";
                return(false);
            }
            return(true);
        }
        public bool TaoSoLanmuonsach(int masach)
        {
            giahanDAL giahanDAL = new giahanDAL();
            giahanDTO giahanDTO = new giahanDTO();

            giahanDTO.Masach      = masach;
            giahanDTO.Solangiahan = 0;

            if (!giahanDAL.themgiahan(masach, giahanDTO))
            {
                BUS_notification.mess = "Không thể mượn sách. Vui lòng kiểm tra Database  ";
                return(false);
            }
            return(true);
        }
        public bool themgiahan(int masach, giahanDTO ghDTO)
        {
            string query = string.Format("insert into [giahan] values (@solangiahan,@masach)");

            SqlParameter[] param = new SqlParameter[2];
            param[0]       = new SqlParameter("@solangiahan", SqlDbType.Int);
            param[0].Value = ghDTO.Solangiahan;
            param[1]       = new SqlParameter("@masach", SqlDbType.Int);
            param[1].Value = masach;


            conn.excuteNonQuery2(query, param);

            return(true);
        }
        public bool sualangiahan(int masach, giahanDTO ghDTO)
        {
            string query = string.Format("update [giahan] set solangiahan=@solangiahan  where masach=@masach ");

            SqlParameter[] param = new SqlParameter[2];
            param[0]       = new SqlParameter("@solangiahan", SqlDbType.Int);
            param[0].Value = ghDTO.Solangiahan;
            param[1]       = new SqlParameter("@masach", SqlDbType.Int);
            param[1].Value = masach;


            conn.excuteNonQuery2(query, param);

            return(true);
        }
        /// <summary>
        /// Trả sách
        /// </summary>
        /// <param name="bandoc">Mã bạn đọc </param>
        /// <param name="sachs">danh sách các bạn đọc </param>
        /// <returns></returns>
        public List <ctptDTO> TraSach(docgiaDTO bandoc, List <sachDTO> sachtra)
        {
            docgiaDAL   banDocDAL   = new docgiaDAL();
            sachDAL     sachDAL     = new sachDAL();
            quydinhDAL  quyDinhDAL  = new quydinhDAL();
            phieutraDAL phieutraDAL = new phieutraDAL();
            ctptDAL     ctptDAL     = new ctptDAL();
            giahanDAL   giaHanDAL   = new giahanDAL();

            List <sachDTO>     sachdangmuon            = new List <sachDTO>();
            List <DateTime>    danhsachngaymuonsach    = new List <DateTime>();
            List <phieutraDTO> danhsachphieutra        = new List <phieutraDTO>();
            List <ctptDTO>     danhsachchitietphieutra = new List <ctptDTO>();
            quydinhDTO         danhsachquydinh         = new quydinhDTO();

            quydinhDTO quydinh = new quydinhDTO();

            quyDinhDAL.listquydinh(danhsachquydinh);
            quydinh = danhsachquydinh;

            sachDAL.SachDangMuon(bandoc.MaThe, sachdangmuon, danhsachngaymuonsach);
            phieutraDAL.danhsachPhieuTra(danhsachphieutra);



            //Thêm phiếu trả
            phieutraDTO phieutra = new phieutraDTO();

            phieutra.Mapt          = danhsachphieutra.Count + 1;
            phieutra.Mathe         = bandoc.MaThe;
            phieutra.Ngaytra       = DateTime.Now;
            phieutra.Tienphatkinay = 0;
            phieutraDAL.themPhieuTra(phieutra);

            int tienphatkinay = 0;

            foreach (sachDTO saxtra in sachtra)
            {
                giahanDTO giaHanDTO = new giahanDTO();
                giaHanDAL.laygiahancuasach(saxtra.Masach, giaHanDTO);


                // kiễm tra quá hạn , tính tiền phạt khi trễ, mất sách
                DateTime ngaymuonsach    = LayDatetimeDcMuonCuaSach(saxtra.Masach, sachdangmuon, danhsachngaymuonsach);
                int      songaydamuon    = SoNgayMuon(ngaymuonsach, DateTime.Now);
                int      tienphatsachnay = 0;

                if (saxtra.Trangthai == (int)TrangThaiSach.DaMat)
                {
                    tienphatsachnay = saxtra.Giatri;
                }

                if (songaydamuon > quydinh.Songayduocmuon + giaHanDTO.Solangiahan * 7)
                {
                    tienphatsachnay = (songaydamuon - (quydinh.Songayduocmuon + giaHanDTO.Solangiahan * 7)) * quydinh.Tienphattrasachtremoingay;
                }
                tienphatkinay += tienphatsachnay;


                //thêm chi tiết phiếu trả
                ctptDTO ctptra = new ctptDTO();
                ctptra.Mapt         = phieutra.Mapt;
                ctptra.Masach       = saxtra.Masach;
                ctptra.Songaydamuon = songaydamuon;
                ctptra.Tienphatsach = tienphatsachnay;

                ctptDAL.themCTPT(ctptra);
                danhsachchitietphieutra.Add(ctptra);

                //quẳng sách lại zô kho
                QuanLiSachBUS qlsachBUS = new QuanLiSachBUS();
                if (saxtra.Trangthai != (int)TrangThaiSach.DaMat)
                {
                    qlsachBUS.Travekho(saxtra);
                }
                else
                {
                    qlsachBUS.MatSach(saxtra);
                }


                //xóa ngày cho phép giữ sách
                GiaHanSachBUS ghsax = new GiaHanSachBUS();
                ghsax.XoaSoLanMuonSach(saxtra.Masach);
            }

            //sửa thông tin phiếu trả
            phieutra.Tienphatkinay = tienphatkinay;
            phieutraDAL.suaPhieuTra(phieutra);


            //thêm nợ vào bạn đọc
            bandoc.Tongtienno += tienphatkinay;
            banDocDAL.suaDocGia(bandoc, bandoc.MaThe);

            return(danhsachchitietphieutra);
        }