Skip to content

Commit 4cc2f63

Browse files
author
Lorenzo
committed
feat/implement-combination-attempt
1 parent 44fbfdf commit 4cc2f63

27 files changed

+545
-21
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.outfitlab.project.domain.exceptions;
2+
3+
public class CombinationNotFoundException extends RuntimeException {
4+
public CombinationNotFoundException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.outfitlab.project.domain.interfaces.repositories;
2+
import com.outfitlab.project.domain.model.CombinationAttemptModel;
3+
4+
public interface CombinationAttemptRepository {
5+
6+
Long save(CombinationAttemptModel attempt);
7+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.outfitlab.project.domain.interfaces.repositories;
2+
import com.outfitlab.project.domain.model.CombinationModel;
3+
4+
import java.util.Optional;
5+
6+
public interface CombinationRepository {
7+
8+
Optional<CombinationModel> findById(Long id);
9+
10+
Optional<CombinationModel> findByPrendas(Long prendaSuperiorId, Long prendaInferiorId);
11+
12+
CombinationModel save(CombinationModel combinationModel);
13+
}

src/main/java/com/outfitlab/project/domain/interfaces/repositories/UserRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import jakarta.transaction.Transactional;
66

77
import java.util.List;
8+
import java.util.Optional;
89

910
public interface UserRepository {
1011
UserModel findUserByEmail(String userEmail) throws UserNotFoundException;
@@ -29,4 +30,6 @@ public interface UserRepository {
2930

3031
@Transactional
3132
void updateUser(String name, String lastname, String email, String password, String confirmPassword, String newImageUrl);
33+
34+
UserModel findById(Long userId) throws UserNotFoundException;
3235
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.outfitlab.project.domain.model;
2+
3+
import org.apache.catalina.User;
4+
5+
import java.time.LocalDateTime;
6+
7+
public class CombinationAttemptModel {
8+
private UserModel user;
9+
private CombinationModel combination;
10+
private LocalDateTime createdAt;
11+
private String imageUrl;
12+
13+
public CombinationAttemptModel() {}
14+
15+
public CombinationAttemptModel(UserModel user, CombinationModel combination, LocalDateTime createdAt, String imageUrl) {
16+
this.user = user;
17+
this.combination = combination;
18+
this.createdAt = createdAt;
19+
this.imageUrl = imageUrl;
20+
}
21+
22+
public UserModel getUser() { return user; }
23+
public CombinationModel getCombination() { return combination; }
24+
public LocalDateTime getCreatedAt() { return createdAt; }
25+
public String getImageUrl() { return imageUrl; }
26+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.outfitlab.project.domain.model;
2+
3+
public class CombinationModel {
4+
private Long id;
5+
private PrendaModel prendaSuperior;
6+
private PrendaModel prendaInferior;
7+
8+
public CombinationModel() { }
9+
10+
public CombinationModel(PrendaModel prendaSuperior, PrendaModel prendaInferior) {
11+
this.prendaSuperior = prendaSuperior;
12+
this.prendaInferior = prendaInferior;
13+
}
14+
15+
public Long getId() {return id;}
16+
public void setId(Long id) {this.id = id;}
17+
18+
public PrendaModel getPrendaSuperior() {
19+
return prendaSuperior;
20+
}
21+
public void setPrendaSuperior(PrendaModel prendaSuperior) {
22+
this.prendaSuperior = prendaSuperior;
23+
}
24+
public PrendaModel getPrendaInferior() {
25+
return prendaInferior;
26+
}
27+
public void setPrendaInferior(PrendaModel prendaInferior) {
28+
this.prendaInferior = prendaInferior;}
29+
}

src/main/java/com/outfitlab/project/domain/model/PrendaModel.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.Set;
44

55
public class PrendaModel {
6-
6+
private Long id;
77
private String nombre;
88
private BrandModel marca;
99
private String tipo;
@@ -26,6 +26,10 @@ public PrendaModel(String nombre, BrandModel marca, String tipo, String imagenUr
2626
this.ocasiones = ocasiones;
2727
}
2828

29+
public Long getId() {return id;}
30+
31+
public void setId(Long id) {this.id = id;}
32+
2933
public String getGarmentCode() {
3034
return garmentCode;
3135
}

src/main/java/com/outfitlab/project/domain/model/UserModel.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.time.LocalDateTime;
66

77
public class UserModel {
8+
private Long id;
89
private String satulation;
910
private String name;
1011
private String secondName;
@@ -162,4 +163,6 @@ public String getUserImageUrl() {
162163
public void setUserImageUrl(String userImageUrl) {
163164
this.userImageUrl = userImageUrl;
164165
}
166+
167+
public Long getId() {return id;}
165168
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.outfitlab.project.domain.useCases.combination;
2+
3+
import com.outfitlab.project.domain.interfaces.repositories.CombinationRepository;
4+
import com.outfitlab.project.domain.model.CombinationModel;
5+
import com.outfitlab.project.domain.model.PrendaModel;
6+
7+
public class CreateCombination {
8+
9+
private final CombinationRepository combinationRepository;
10+
11+
public CreateCombination(CombinationRepository combinationRepository) {
12+
this.combinationRepository = combinationRepository;
13+
}
14+
15+
public CombinationModel execute(PrendaModel prendaSuperior, PrendaModel prendaInferior) {
16+
var model = new CombinationModel(
17+
prendaSuperior,
18+
prendaInferior
19+
);
20+
21+
return combinationRepository.save(model);
22+
}
23+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.outfitlab.project.domain.useCases.combination;
2+
3+
import com.outfitlab.project.domain.interfaces.repositories.CombinationRepository;
4+
import com.outfitlab.project.domain.exceptions.CombinationNotFoundException;
5+
import com.outfitlab.project.domain.model.CombinationModel;
6+
7+
public class GetCombinationByPrendas {
8+
9+
private final CombinationRepository combinationRepository;
10+
11+
public GetCombinationByPrendas(CombinationRepository combinationRepository) {
12+
this.combinationRepository = combinationRepository;
13+
}
14+
15+
public CombinationModel execute(Long prendaSuperiorId, Long prendaInferiorId)
16+
throws CombinationNotFoundException {
17+
18+
return combinationRepository
19+
.findByPrendas(prendaSuperiorId, prendaInferiorId)
20+
.orElseThrow(() -> new CombinationNotFoundException("Combinación no encontrada"));
21+
}
22+
}

0 commit comments

Comments
 (0)