1+ package com .soupulsar .application .config ;
2+
3+ import com .soupulsar .application .security .JwtService ;
4+ import com .soupulsar .application .security .PasswordHasher ;
5+ import com .soupulsar .application .usecase .AuthenticateUserUseCase ;
6+ import com .soupulsar .application .usecase .RegistrationUseCase ;
7+ import com .soupulsar .application .usecase .availability .CreateAvailabilityUseCase ;
8+ import com .soupulsar .application .usecase .session .CancelSessionUseCase ;
9+ import com .soupulsar .application .usecase .session .CompleteSessionUseCase ;
10+ import com .soupulsar .application .usecase .session .ConfirmSessionUseCase ;
11+ import com .soupulsar .application .usecase .session .ScheduleSessionUseCase ;
12+ import com .soupulsar .domain .repository .*;
13+ import org .springframework .context .ApplicationEventPublisher ;
14+ import org .springframework .context .annotation .Bean ;
15+ import org .springframework .context .annotation .Configuration ;
16+
17+ @ Configuration
18+ public class UseCaseConfig {
19+
20+ @ Bean
21+ public CreateAvailabilityUseCase createAvailabilityUseCase (AvailabilityRepository availabilityRepository ) {
22+ return new CreateAvailabilityUseCase (availabilityRepository );
23+ }
24+
25+ @ Bean
26+ public ScheduleSessionUseCase scheduleSessionUseCase (SessionRepository sessionRepository , AvailabilityRepository availabilityRepository , ApplicationEventPublisher publisher ) {
27+ return new ScheduleSessionUseCase (sessionRepository , availabilityRepository , publisher );
28+ }
29+
30+ @ Bean
31+ public ConfirmSessionUseCase confirmSessionUseCase (SessionRepository sessionRepository ) {
32+ return new ConfirmSessionUseCase (sessionRepository );
33+ }
34+
35+ @ Bean
36+ public CancelSessionUseCase cancelSessionUseCase (SessionRepository sessionRepository ) {
37+ return new CancelSessionUseCase (sessionRepository );
38+ }
39+
40+ @ Bean
41+ public CompleteSessionUseCase completeSessionUseCase (SessionRepository sessionRepository ) {
42+ return new CompleteSessionUseCase (sessionRepository );
43+ }
44+ @ Bean
45+ public AuthenticateUserUseCase authenticateUserUseCase (UserRepository userRepository , PasswordHasher passwordHasher , JwtService jwtService ) {
46+ return new AuthenticateUserUseCase (userRepository , passwordHasher , jwtService );
47+ }
48+
49+ @ Bean
50+ public RegistrationUseCase registrationUseCase (UserRepository userRepository , ClientProfileRepository clientProfileRepository ,
51+ SpecialistProfileRepository specialistProfileRepository , PasswordHasher passwordHasher ) {
52+ return new RegistrationUseCase (userRepository , clientProfileRepository , specialistProfileRepository ,passwordHasher );
53+ }
54+ }
0 commit comments