Skip to content

Commit aad578b

Browse files
committed
#100 add queries for removing an event
1 parent 24946e0 commit aad578b

File tree

5 files changed

+237
-94
lines changed

5 files changed

+237
-94
lines changed

src/main/java/alfio/manager/EventManager.java

+34-1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public class EventManager {
8484
private final ConfigurationManager configurationManager;
8585
private final PluginManager pluginManager;
8686
private final TicketFieldRepository ticketFieldRepository;
87+
private final EventDeleterRepository eventDeleterRepository;
8788

8889
@Autowired
8990
public EventManager(UserManager userManager,
@@ -99,7 +100,8 @@ public EventManager(UserManager userManager,
99100
NamedParameterJdbcTemplate jdbc,
100101
ConfigurationManager configurationManager,
101102
PluginManager pluginManager,
102-
TicketFieldRepository ticketFieldRepository) {
103+
TicketFieldRepository ticketFieldRepository,
104+
EventDeleterRepository eventDeleterRepository) {
103105
this.userManager = userManager;
104106
this.eventRepository = eventRepository;
105107
this.eventDescriptionRepository = eventDescriptionRepository;
@@ -114,6 +116,7 @@ public EventManager(UserManager userManager,
114116
this.configurationManager = configurationManager;
115117
this.pluginManager = pluginManager;
116118
this.ticketFieldRepository = ticketFieldRepository;
119+
this.eventDeleterRepository = eventDeleterRepository;
117120
}
118121

119122
public Event getSingleEvent(String eventName, String username) {
@@ -645,6 +648,36 @@ public void swapAdditionalFieldPosition(int eventId, int id1, int id2) {
645648
ticketFieldRepository.updateFieldOrder(id1, field2.getOrder());
646649
ticketFieldRepository.updateFieldOrder(id2, field1.getOrder());
647650
}
651+
652+
public void deleteEvent(int eventId) {
653+
eventDeleterRepository.deleteWaitingQueue(eventId);
654+
655+
eventDeleterRepository.deletePluginLog(eventId);
656+
eventDeleterRepository.deletePluginConfiguration(eventId);
657+
658+
eventDeleterRepository.deleteConfigurationEvent(eventId);
659+
eventDeleterRepository.deleteConfigurationTicketCategory(eventId);
660+
661+
eventDeleterRepository.deleteEmailMessage(eventId);
662+
663+
eventDeleterRepository.deleteTicketFieldValue(eventId);
664+
eventDeleterRepository.deleteFieldDescription(eventId);
665+
eventDeleterRepository.deleteTicketFieldConfiguration(eventId);
666+
667+
668+
eventDeleterRepository.deleteEventMigration(eventId);
669+
eventDeleterRepository.deleteSponsorScan(eventId);
670+
eventDeleterRepository.deleteTicket(eventId);
671+
eventDeleterRepository.resetTicketReservation(eventId);
672+
673+
eventDeleterRepository.deletePromoCode(eventId);
674+
eventDeleterRepository.deleteTicketCategoryText(eventId);
675+
eventDeleterRepository.deleteTicketCategory(eventId);
676+
eventDeleterRepository.deleteEventDescription(eventId);
677+
678+
eventDeleterRepository.deleteEvent(eventId);
679+
680+
}
648681

649682
@Data
650683
private static final class GeolocationResult {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/**
2+
* This file is part of alf.io.
3+
*
4+
* alf.io is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* alf.io is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with alf.io. If not, see <http://www.gnu.org/licenses/>.
16+
*/
17+
package alfio.repository;
18+
19+
import ch.digitalfondue.npjt.Bind;
20+
import ch.digitalfondue.npjt.Query;
21+
import ch.digitalfondue.npjt.QueryRepository;
22+
23+
@QueryRepository
24+
public interface EventDeleterRepository {
25+
26+
@Query("delete from waiting_queue where event_id = :eventId")
27+
int deleteWaitingQueue(@Bind("eventId") int eventId);
28+
29+
@Query("delete from plugin_log where event_id = :eventId")
30+
int deletePluginLog(@Bind("eventId") int eventId);
31+
32+
@Query("delete from plugin_configuration where event_id = :eventId")
33+
int deletePluginConfiguration(@Bind("eventId") int eventId);
34+
35+
@Query("delete from configuration_event where event_id_fk = :eventId")
36+
int deleteConfigurationEvent(@Bind("eventId") int eventId);
37+
38+
@Query("delete from configuration_ticket_category where event_id_fk = :eventId")
39+
int deleteConfigurationTicketCategory(@Bind("eventId") int eventId);
40+
41+
@Query("delete from email_message where event_id = :eventId")
42+
int deleteEmailMessage(@Bind("eventId") int eventId);
43+
44+
@Query("delete from ticket_field_value where ticket_field_configuration_id_fk in (select id from ticket_field_configuration where event_id_fk = :eventId)")
45+
int deleteTicketFieldValue(@Bind("eventId") int eventId);
46+
47+
@Query("delete from ticket_field_description where ticket_field_configuration_id_fk in (select id from ticket_field_configuration where event_id_fk = :eventId)")
48+
int deleteFieldDescription(@Bind("eventId") int eventId);
49+
50+
@Query("delete from ticket_field_configuration where event_id_fk= :eventId")
51+
int deleteTicketFieldConfiguration(@Bind("eventId") int eventId);
52+
53+
@Query("delete from event_migration where event_id = :eventId")
54+
int deleteEventMigration(@Bind("eventId") int eventId);
55+
56+
@Query("delete from sponsor_scan where event_id = :eventId")
57+
int deleteSponsorScan(@Bind("eventId") int eventId);
58+
59+
@Query("delete from ticket where event_id = :eventId")
60+
int deleteTicket(@Bind("eventId") int eventId);
61+
62+
//tickets_reservation will remain in the system though
63+
@Query("update tickets_reservation set promo_code_id_fk = null where promo_code_id_fk in (select id from promo_code where event_id_fk = :eventId)")
64+
int resetTicketReservation(@Bind("eventId") int eventId);
65+
66+
@Query("delete from promo_code where event_id_fk = :eventId")
67+
int deletePromoCode(@Bind("eventId") int eventId);
68+
69+
@Query("delete from ticket_category_text where ticket_category_id_fk in (select id from ticket_category where event_id = :eventId)")
70+
int deleteTicketCategoryText(@Bind("eventId") int eventId);
71+
72+
@Query("delete from ticket_category where event_id = :eventId")
73+
int deleteTicketCategory(@Bind("eventId") int eventId);
74+
75+
@Query("delete from event_description_text where event_id_fk = :eventId")
76+
int deleteEventDescription(@Bind("eventId") int eventId);
77+
78+
@Query("delete from event where id = :eventId")
79+
int deleteEvent(@Bind("eventId") int eventId);
80+
}

src/test/java/alfio/controller/ReservationFlowIntegrationTest.java

+4
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,10 @@ updateTicketOwnerForm, new BeanPropertyBindingResult(updateTicketOwnerForm, "upd
296296

297297
TicketAndCheckInResult ticketAndCheckInResultOk = checkInApiController.findTicketWithUUID(event.getId(), ticketIdentifier, ticketCode);
298298
Assert.assertEquals(CheckInStatus.ALREADY_CHECK_IN, ticketAndCheckInResultOk.getResult().getStatus());
299+
300+
//
301+
302+
eventManager.deleteEvent(event.getId());
299303

300304
}
301305

src/test/java/alfio/manager/EventManagerTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public class EventManagerTest {{
5757
TicketCategory updated = mock(TicketCategory.class);
5858
TicketRepository ticketRepository = it.usesMock(TicketRepository.class);
5959
NamedParameterJdbcTemplate jdbc = it.usesMock(NamedParameterJdbcTemplate.class);
60-
EventManager eventManager = new EventManager(null, null, null, null, null, null, ticketRepository, null, null, null, jdbc, null, pluginManager, null);
60+
EventManager eventManager = new EventManager(null, null, null, null, null, null, ticketRepository, null, null, null, jdbc, null, pluginManager, null, null);
6161
when(original.getId()).thenReturn(20);
6262
when(updated.getId()).thenReturn(30);
6363
when(original.getPriceInCents()).thenReturn(1000);
@@ -94,7 +94,7 @@ public class EventManagerTest {{
9494

9595
describe("handlePriceChange", it -> {
9696
TicketRepository ticketRepository = it.usesMock(TicketRepository.class);
97-
EventManager eventManager = new EventManager(null, null, null, null, null, null, ticketRepository, null, null, null, null, null, pluginManager, null);
97+
EventManager eventManager = new EventManager(null, null, null, null, null, null, ticketRepository, null, null, null, null, null, pluginManager, null, null);
9898
TicketCategory original = mock(TicketCategory.class);
9999
TicketCategory updated = mock(TicketCategory.class);
100100

@@ -130,7 +130,7 @@ public class EventManagerTest {{
130130
describe("handleTokenModification", it -> {
131131
SpecialPriceRepository specialPriceRepository = it.usesMock(SpecialPriceRepository.class);
132132
NamedParameterJdbcTemplate jdbc = it.usesMock(NamedParameterJdbcTemplate.class);
133-
EventManager eventManager = new EventManager(null, null, null, null, null, null, null, specialPriceRepository, null, null, jdbc, null, pluginManager, null);
133+
EventManager eventManager = new EventManager(null, null, null, null, null, null, null, specialPriceRepository, null, null, jdbc, null, pluginManager, null, null);
134134
TicketCategory original = mock(TicketCategory.class);
135135
TicketCategory updated = mock(TicketCategory.class);
136136

@@ -193,7 +193,7 @@ public class EventManagerTest {{
193193
int eventId = 0;
194194
TicketCategoryRepository ticketCategoryRepository = it.usesMock(TicketCategoryRepository.class);
195195
TicketCategoryDescriptionRepository ticketCategoryDescriptionRepository = it.usesMock(TicketCategoryDescriptionRepository.class);
196-
EventManager eventManager = new EventManager(null, null, null, null, ticketCategoryRepository, ticketCategoryDescriptionRepository, null, null, null, null, null, null, pluginManager, null);
196+
EventManager eventManager = new EventManager(null, null, null, null, ticketCategoryRepository, ticketCategoryDescriptionRepository, null, null, null, null, null, null, pluginManager, null, null);
197197
Event event = mock(Event.class);
198198
int availableSeats = 20;
199199
when(event.getAvailableSeats()).thenReturn(availableSeats);
@@ -247,7 +247,7 @@ public class EventManagerTest {{
247247
TicketCategoryWithStatistic tc = new TicketCategoryWithStatistic(ticketCategory, Collections.<TicketWithStatistic>emptyList(), Collections.<SpecialPrice>emptyList(), ZoneId.systemDefault(), categoryPriceCalculator(event), desc);
248248
when(esm.loadTicketCategoryWithStats(eq(categoryId), eq(event))).thenReturn(tc);
249249

250-
EventManager eventManager = new EventManager(userManager, eventRepository, eventDescriptionRepository, esm, ticketCategoryRepository, ticketCategoryDescriptionRepository, ticketRepository, specialPriceRepository, null, null, null, null, pluginManager, null);
250+
EventManager eventManager = new EventManager(userManager, eventRepository, eventDescriptionRepository, esm, ticketCategoryRepository, ticketCategoryDescriptionRepository, ticketRepository, specialPriceRepository, null, null, null, null, pluginManager, null, null);
251251
when(event.getId()).thenReturn(eventId);
252252
when(event.getOrganizationId()).thenReturn(organizationId);
253253
Organization organization = mock(Organization.class);

0 commit comments

Comments
 (0)