Product Controller "/customProduct"

This commit is contained in:
2019-01-15 23:39:47 +01:00
parent 3db194ea21
commit c778570c50

View File

@@ -0,0 +1,72 @@
package me.aski.catalogueservice.web;
import lombok.Data;
import lombok.ToString;
import me.aski.catalogueservice.dao.CategoryRepository;
import me.aski.catalogueservice.dao.ProductRepository;
import me.aski.catalogueservice.entities.Category;
import me.aski.catalogueservice.entities.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ProductController {
@Autowired
private CategoryRepository categoryRepository;
@Autowired
private ProductRepository productRepository;
@PostMapping("/customProducts")
public ResponseEntity<?> postProduct(@RequestBody ProductForm form) {
Category c = categoryRepository.findById(form.getCategory()).get();
Product p = productRepository.save(new Product(null, form.getName(), form.getPrice(), c));
c.getProducts().add(p);
categoryRepository.save(c);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping("/customProducts")
public ResponseEntity<?> putProduct(@RequestBody ProductForm form) {
form.setCategory(form.getCategory().split("/")[form.getCategory().split("/").length - 1]);
Product product = productRepository.findById(form.getId()).get();
Category oldCategory = product.getCategory();
oldCategory.getProducts().remove(product);
categoryRepository.save(oldCategory);
Category newCategory = categoryRepository.findById(form.getCategory()).get();
product.setName(form.getName());
product.setCategory(newCategory);
product.setPrice(form.getPrice());
productRepository.save(product);
newCategory.getProducts().add(product);
categoryRepository.save(newCategory);
return new ResponseEntity<>(HttpStatus.OK);
}
}
@Data
@ToString
class ProductForm {
private String id;
private String name;
private double price;
private String category;
}