public Checkout Checkout(int copyId, int patronId, DateTime dueDate) { SqlConnection conn = DB.Connection(); conn.Open(); SqlCommand cmd = new SqlCommand("INSERT into checkouts(copy_id, patron_id, due, checkin) OUTPUT INSERTED.* VALUES(@CopyId, @PatronId, @DueDate, 0);", conn); SqlParameter copyIdParameter = new SqlParameter(); copyIdParameter.ParameterName = "@CopyId"; copyIdParameter.Value = copyId; cmd.Parameters.Add(copyIdParameter); SqlParameter patronIdParameter = new SqlParameter(); patronIdParameter.ParameterName = "@PatronId"; patronIdParameter.Value = this._id; cmd.Parameters.Add(patronIdParameter); SqlParameter dueDateParameter = new SqlParameter(); dueDateParameter.ParameterName = "@DueDate"; dueDateParameter.Value = dueDate; cmd.Parameters.Add(dueDateParameter); SqlDataReader rdr = cmd.ExecuteReader(); int newCheckoutId = 0; int newCopyId = 0; int newPatronId = 0; DateTime due = new DateTime(1900, 01, 01); bool checkin = false; while (rdr.Read()) { newCheckoutId = rdr.GetInt32(0); newCopyId = rdr.GetInt32(1); newPatronId = rdr.GetInt32(2); due = rdr.GetDateTime(3); if (rdr.GetByte(4) == 1) { checkin = true; } else { checkin = false; } } Checkout newCheckout = new Checkout(newCopyId, newPatronId, due, newCheckoutId); newCheckout.SetCheckInStatus(checkin); if (rdr != null) { rdr.Close(); } if (conn != null) { conn.Close(); } return(newCheckout); }