Timer is actually a C# object (or type) that you can use in your C# programs and applications, such as WPF, WinForms, etc. But since you have tagged MVC 5 with this question and most probably you want to implement this feature in a web application, the best approach would be to control this from client-side.
In JavaScript, you can do this,
let bookingMade = false;
let minutes = 5 * 60 * 1000;
setTimeout(function() {
if(!bookingMade) {
}
}, minutes);
This way, you can control the requests from the client side and reject any request that comes after 5 minutes. Of course, this is just off the top of my head right now and you can do a better job than me. But in the nutshell this is the way that you need to take, in order to control this reservation system.
See here for more information on how to control this timer,
WindowOrWorkerGlobalScope.setTimeout() - Web APIs | MDN[
^]
A server-side implementation of session is also a good approach, since your server will itself reject any request that comes once the session has timed out, but I have omitted that part out since sessions typically do not follow timers—each time a request is made, a new instance is created and thus will force you to create a static instance of the timer and maintain it along with the request or session information, which is quite ugly as I imagine it—and you might have to write session timeouts yourself, see here
Session timeout in ASP.NET - Stack Overflow[
^]. This server-side implementation can control most of the stuff that you would have to implement yourself.