@@ -15,35 +15,35 @@ public class UserSubscriptionRepositoryImpl implements UserSubscriptionRepositor
1515 private final UserSubscriptionJpaRepository jpaRepository ;
1616 private final UserJpaRepository userJpaRepository ;
1717 private final SubscriptionJpaRepository subscriptionJpaRepository ;
18-
18+
1919 public UserSubscriptionRepositoryImpl (UserSubscriptionJpaRepository jpaRepository ,
20- UserJpaRepository userJpaRepository ,
21- SubscriptionJpaRepository subscriptionJpaRepository ) {
20+ UserJpaRepository userJpaRepository ,
21+ SubscriptionJpaRepository subscriptionJpaRepository ) {
2222 this .jpaRepository = jpaRepository ;
2323 this .userJpaRepository = userJpaRepository ;
2424 this .subscriptionJpaRepository = subscriptionJpaRepository ;
2525 }
26-
26+
2727 @ Override
2828 @ Transactional (readOnly = true )
2929 public UserSubscriptionModel findByUserEmail (String userEmail ) throws SubscriptionNotFoundException {
3030 return jpaRepository .findByUserEmail (userEmail )
31- .map (UserSubscriptionEntity ::convertToModel )
32- .orElseThrow (() -> new SubscriptionNotFoundException (
33- "No se encontró suscripción para el usuario: " + userEmail ));
31+ .map (UserSubscriptionEntity ::convertToModel )
32+ .orElseThrow (() -> new SubscriptionNotFoundException (
33+ "No se encontró suscripción para el usuario: " + userEmail ));
3434 }
35-
35+
3636 @ Override
3737 @ Transactional
3838 public UserSubscriptionModel save (UserSubscriptionModel subscription ) {
3939 UserEntity user = userJpaRepository .findByEmail (subscription .getUserEmail ());
4040 if (user == null ) {
4141 throw new RuntimeException ("Usuario no encontrado: " + subscription .getUserEmail ());
4242 }
43-
43+
4444 SubscriptionEntity subscriptionEntity = subscriptionJpaRepository .findByPlanCode (subscription .getPlanCode ())
45- .orElseThrow (() -> new RuntimeException ("Plan no encontrado: " + subscription .getPlanCode ()));
46-
45+ .orElseThrow (() -> new RuntimeException ("Plan no encontrado: " + subscription .getPlanCode ()));
46+
4747 UserSubscriptionEntity entity = new UserSubscriptionEntity ();
4848 entity .setUser (user );
4949 entity .setSubscription (subscriptionEntity );
@@ -56,20 +56,21 @@ public UserSubscriptionModel save(UserSubscriptionModel subscription) {
5656 entity .setSubscriptionStart (subscription .getSubscriptionStart ());
5757 entity .setSubscriptionEnd (subscription .getSubscriptionEnd ());
5858 entity .setStatus (subscription .getStatus ());
59-
59+
6060 UserSubscriptionEntity saved = jpaRepository .save (entity );
6161 return UserSubscriptionEntity .convertToModel (saved );
6262 }
63-
63+
6464 @ Override
6565 @ Transactional
6666 public UserSubscriptionModel update (UserSubscriptionModel subscription ) {
6767 UserSubscriptionEntity entity = jpaRepository .findByUserEmail (subscription .getUserEmail ())
68- .orElseThrow (() -> new RuntimeException ("Suscripción no encontrada para: " + subscription .getUserEmail ()));
69-
68+ .orElseThrow (
69+ () -> new RuntimeException ("Suscripción no encontrada para: " + subscription .getUserEmail ()));
70+
7071 SubscriptionEntity subscriptionEntity = subscriptionJpaRepository .findByPlanCode (subscription .getPlanCode ())
71- .orElseThrow (() -> new RuntimeException ("Plan no encontrado: " + subscription .getPlanCode ()));
72-
72+ .orElseThrow (() -> new RuntimeException ("Plan no encontrado: " + subscription .getPlanCode ()));
73+
7374 entity .setSubscription (subscriptionEntity );
7475 entity .setCombinationsUsed (subscription .getCombinationsUsed ());
7576 entity .setFavoritesCount (subscription .getFavoritesCount ());
@@ -80,32 +81,43 @@ public UserSubscriptionModel update(UserSubscriptionModel subscription) {
8081 entity .setSubscriptionStart (subscription .getSubscriptionStart ());
8182 entity .setSubscriptionEnd (subscription .getSubscriptionEnd ());
8283 entity .setStatus (subscription .getStatus ());
83-
84+
8485 UserSubscriptionEntity updated = jpaRepository .save (entity );
8586 return UserSubscriptionEntity .convertToModel (updated );
8687 }
87-
88+
8889 @ Override
8990 @ Transactional
9091 public void incrementCounter (String userEmail , String counterType ) {
91- switch (counterType ) {
92+ // Obtener el user_id desde el email
93+ UserEntity user = userJpaRepository .findByEmail (userEmail );
94+ if (user == null ) {
95+ throw new RuntimeException ("Usuario no encontrado: " + userEmail );
96+ }
97+
98+ switch (counterType ) {
9299 case "combinations" :
93- jpaRepository .incrementCombinations ( userEmail );
100+ jpaRepository .incrementCombinationsByUserId ( user . getId () );
94101 break ;
95102 case "favorites" :
96- jpaRepository .incrementFavorites ( userEmail );
103+ jpaRepository .incrementFavoritesByUserId ( user . getId () );
97104 break ;
98105 case "3d_models" :
99- jpaRepository .incrementModels ( userEmail );
106+ jpaRepository .incrementModelsByUserId ( user . getId () );
100107 break ;
101108 }
102109 }
103-
110+
104111 @ Override
105112 @ Transactional
106113 public void decrementCounter (String userEmail , String counterType ) {
107114 if ("favorites" .equals (counterType )) {
108- jpaRepository .decrementFavorites (userEmail );
115+ // Obtener el user_id desde el email
116+ UserEntity user = userJpaRepository .findByEmail (userEmail );
117+ if (user == null ) {
118+ throw new RuntimeException ("Usuario no encontrado: " + userEmail );
119+ }
120+ jpaRepository .decrementFavoritesByUserId (user .getId ());
109121 }
110122 }
111123}
0 commit comments