Esempio n. 1
0
        /// <summary>
        /// 도서예약
        /// </summary>
        /// <param name="stuid">학번</param>
        /// <param name="bookid">도서번호</param>
        /// <returns>예약성공여부</returns>
        public bool ReserveBook(int stuid, int bookid)
        {
            //유효성체크
            //학번이 유효한지, 도서번호가 유효한지, 대여가능한지, 예약상태인지
            //대여한 학생이 또 예약하는 것은 현재 허용
            StudentDB stu = new StudentDB();

            if (!stu.IsValid(stuid))
            {
                throw new Exception("유효한 학번이 아닙니다.");
            }
            stu.Dispose();

            BookDB bk = new BookDB();

            if (!bk.IsValid(bookid))
            {
                throw new Exception("유효한 도서가 아닙니다.");
            }
            else if (!bk.IsLended(bookid))
            {
                throw new Exception("대여 가능한 도서입니다.");
            }
            else
            {
                if (bk.IsReserved(bookid))
                {
                    throw new Exception("이미 예약된 도서입니다.");
                }
                bk.Dispose();

                try
                {
                    MySqlCommand cmd = new MySqlCommand();
                    cmd.CommandText = "update book set reservestuid = @reservestuid where bookid = @bookid";
                    cmd.Connection  = conn;

                    cmd.Parameters.Add("@reservestuid", MySqlDbType.Int32);
                    cmd.Parameters["@reservestuid"].Value = stuid;

                    cmd.Parameters.Add("@bookid", MySqlDbType.Int32);
                    cmd.Parameters["@bookid"].Value = bookid;

                    cmd.ExecuteNonQuery();
                    return(true);
                }
                catch (Exception err)
                {
                    throw err;
                    //return false; //도달하지 않는 코드
                }
            }
        }