Марк рассказывал о событиях прошлого лета, поэтому используется Past Perfect.
'Had had' — это Past Perfect от глагола 'to have' (иметь). Конструкция 'have a great time' означает 'прекрасно проводить время'.
'Would have' используется в условных предложениях, а 'has had' — Present Perfect, который не подходит для описания прошедшего события, завершившегося до другого момента в прошлом (до момента рассказа Марка).