Skip to content
Snippets Groups Projects
Commit 08955d90 authored by Pedro Pablo Cardona Arroyave's avatar Pedro Pablo Cardona Arroyave
Browse files

Save endpoint was added but bug

parent 105d65b7
No related branches found
No related tags found
No related merge requests found
......@@ -68,7 +68,7 @@ public class FridgeController {
}
try {
if (fridgeService.addProductToFridge(groupId, productId)) {
if (fridgeService.addProductToFridge(groupId, productId, request.amount(), request.days()).isPresent()) {
return ResponseEntity.ok("Success");
}
return ResponseEntity.badRequest().body("Product already exists in the fridge");
......@@ -87,16 +87,13 @@ public class FridgeController {
* @param productId the id of the product
* @return success if the product was removed, bad request if the product wasn't in the fridge, or not found if the group or product doesn't exist
*/
@DeleteMapping("/group/{groupId}/product/{productId}")
public ResponseEntity<String> removeProductFromFridge(@PathVariable("groupId") long groupId, @PathVariable("productId") long productId) {
try {
fridgeService.getFridgeByGroupId(groupId).orElseThrow();
} catch (Exception e) {
return ResponseEntity.notFound().build();
}
/*
@DeleteMapping("/delete/{fridgeProductId}")
public ResponseEntity<String> removeProductFromFridge(@PathVariable("fridgeProductId") long FPId) {
try {
if (fridgeService.removeProductFromFridge(groupId, productId, Date.valueOf("2023-04-24"))) {
if (fridgeService.removeProductFromFridge(FPId)){
return ResponseEntity.ok("Success");
}
return ResponseEntity.badRequest().body("Product not found in the fridge");
......@@ -104,5 +101,6 @@ public class FridgeController {
return ResponseEntity.status(500).body("Internal server error");
}
}
*/
}
......@@ -5,5 +5,5 @@ package ntnu.idatt2016.v233.SmartMat.dto.request;
* @param groupId the id of the group
* @param productId the id of the product
*/
public record FridgeProductRequest(long groupId, long productId) {
public record FridgeProductRequest(long groupId, long productId, int amount, int days) {
}
......@@ -2,10 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
......@@ -13,28 +10,37 @@ import java.sql.Date;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Getter @Setter
@Entity(name = "fridge_product")
@Builder
@IdClass(FridgeProductId.class)
public class FridgeProductAsso {
@Id
@Column(name = "fridge_product_id")
private long id;
@ManyToOne
@MapsId("fridge_id")
@JoinColumn(name = "fridge_id")
@JsonIgnoreProperties({"products"})
private Fridge fridgeId;
@Id
@ManyToOne
@MapsId("ean")
@JoinColumn(name = "ean")
@JsonIgnoreProperties({"fridges"})
private Product ean;
@Id
@MapsId("purchase_date")
@Column(name = "purchase_date")
private Date purchaseDate;
@Column(name = "days_to_expiration")
private int daysToExpiration;
@Column(name = "amount")
private int amount;
}
......@@ -4,6 +4,9 @@ import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductId;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
/**
* FridgeProductAssoRepository is a repository class for fridge product associations
* @author Birk
......@@ -11,4 +14,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
* @since 25.04.2023
*/
public interface FridgeProductAssoRepository extends JpaRepository<FridgeProductAsso, FridgeProductId> {
Optional<FridgeProductAsso> findById(long id);
}
......@@ -26,21 +26,14 @@ public class FridgeProductAssoService {
* the FridgeProductAssosiation object needs to be added to the fridge and product
* @param fridge the fridge to add the product to
* @param product the product to add to the fridge
* @param purchaseDate the date the product was purchased
* @return the fridge product association
*/
public FridgeProductAsso createFridgeProductAsso(Fridge fridge, Product product, Date purchaseDate) {
FridgeProductAsso temp = new FridgeProductAsso();
temp.setFridgeId(fridge);
temp.setEan(product);
temp.setPurchaseDate(purchaseDate);
public FridgeProductAsso createFridgeProductAsso(Fridge fridge, Product product, int amount, int days) {
FridgeProductAsso temp = FridgeProductAsso.builder().fridgeId(fridge).ean(product).amount(amount).daysToExpiration(days).build();
fridgeProductAssoRepository.save(temp);
fridge.addProduct(temp);
product.addFridge(temp);
fridgeRepository.save(fridge);
productRepository.save(product);
return temp;
......@@ -56,7 +49,6 @@ public class FridgeProductAssoService {
fridgeProductAssoRepository.delete(fridgeProductAsso);
fridgeRepository.save(fridgeProductAsso.getFridgeId());
productRepository.save(fridgeProductAsso.getEan());
return true;
......
......@@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeProductAssoRepository;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
......@@ -28,6 +29,8 @@ public class FridgeService {
private final FridgeRepository fridgeRepository;
private final ProductService productService;
private final FridgeProductAssoRepository fridgeProductAssoRepository;
private final FridgeProductAssoService fridgeProductAssoService;
private final GroupRepository groupRepository;
......@@ -61,20 +64,19 @@ public class FridgeService {
* @param ean the ean of the product
* @return true if the product was added
*/
public boolean addProductToFridge(long groupId, long ean) {
public Optional<Object> addProductToFridge(long groupId, long ean, int amount, int days) {
Optional<Product> product = productService.getProductById(ean);
Fridge fridge = fridgeRepository.findByGroupGroupId(groupId).orElseThrow(() -> new IllegalArgumentException("Fridge does not exist"));
if (product.isPresent()) {
Product productToAdd = product.get();
FridgeProductAsso temp = new FridgeProductAsso(fridge, productToAdd, new Date(LocalDate.now().toEpochDay()));
FridgeProductAsso temp = FridgeProductAsso.builder().fridgeId(fridge).ean(productToAdd).amount(amount).daysToExpiration(days).build();
if (fridge.getProducts().contains(temp)) {
return false;
return Optional.empty();
}
fridgeProductAssoService.createFridgeProductAsso(fridge, productToAdd, new Date(LocalDate.now().toEpochDay()));
return true;
return Optional.of(fridgeProductAssoService.createFridgeProductAsso(fridge, productToAdd,amount,days));
} else {
return false;
return Optional.empty();
}
}
......@@ -83,20 +85,19 @@ public class FridgeService {
*
* @param groupId the id of the group
* group must exist
* @param ean the ean of the product
* @return true if the product was removed
*/
public boolean removeProductFromFridge(long groupId, long ean, Date purchaseDate) {
Optional<Product> product = productService.getProductById(ean);
Fridge fridge = fridgeRepository.findByGroupGroupId(groupId).orElseThrow(() -> new IllegalArgumentException("Fridge does not exist"));
/*public boolean removeProductFromFridge( long FPId) {
FridgeProductAsso fridgeProductAsso = fridgeProductAssoRepository.findById(FPId).get();
Optional<Product> product = productService.getProductById(fridgeProductAsso.getEan().getEan());
Fridge fridge = fridgeRepository.findByGroupGroupId(fridgeProductAsso.getFridgeId().getFridgeId()).orElseThrow(() -> new IllegalArgumentException("Fridge does not exist"));
if (product.isPresent()) {
Product productToRemove = product.get();
if (!fridge.getProducts().contains(
new FridgeProductAsso(fridge, productToRemove, purchaseDate))) {
new FridgeProductAsso(fridge, productToRemove,))) {
return false;
}
FridgeProductAsso fridgeProductAsso1 = FridgeProductAsso.builder().id(FPId)..build()
fridgeProductAssoService.deleteFridgeProductAsso(new FridgeProductAsso(fridge,
productToRemove, purchaseDate));
......@@ -104,7 +105,7 @@ public class FridgeService {
} else {
return false;
}
}
}*/
/**
* Updates a fridge
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment