update borrow module + fix invite
This commit is contained in:
@@ -23,9 +23,11 @@ import de.bstly.we.borrow.model.BorrowItemSlot;
|
||||
import de.bstly.we.borrow.model.QBorrowItem;
|
||||
import de.bstly.we.borrow.model.QBorrowItemManualSlot;
|
||||
import de.bstly.we.borrow.model.QBorrowItemPeriodSlot;
|
||||
import de.bstly.we.borrow.model.QBorrowRequest;
|
||||
import de.bstly.we.borrow.repository.BorrowItemManualSlotRepository;
|
||||
import de.bstly.we.borrow.repository.BorrowItemPeriodSlotRepository;
|
||||
import de.bstly.we.borrow.repository.BorrowItemRepository;
|
||||
import de.bstly.we.borrow.repository.BorrowRequestRepository;
|
||||
import de.bstly.we.businesslogic.UserManager;
|
||||
import de.bstly.we.email.businesslogic.EmailManager;
|
||||
import de.bstly.we.model.User;
|
||||
@@ -43,6 +45,8 @@ public class BorrowItemManager {
|
||||
@Autowired
|
||||
private BorrowItemPeriodSlotRepository borrowItemPeriodSlotRepository;
|
||||
@Autowired
|
||||
private BorrowRequestRepository borrowRequestRepository;
|
||||
@Autowired
|
||||
private UserManager userManager;
|
||||
@Autowired
|
||||
private EmailManager emailManager;
|
||||
@@ -50,6 +54,7 @@ public class BorrowItemManager {
|
||||
private QBorrowItem qBorrowItem = QBorrowItem.borrowItem;
|
||||
private QBorrowItemManualSlot qBorrowItemManualSlot = QBorrowItemManualSlot.borrowItemManualSlot;
|
||||
private QBorrowItemPeriodSlot qBorrowItemPeriodSlot = QBorrowItemPeriodSlot.borrowItemPeriodSlot;
|
||||
private QBorrowRequest qBorrowRequest = QBorrowRequest.borrowRequest;
|
||||
|
||||
/**
|
||||
* Exists.
|
||||
@@ -207,6 +212,8 @@ public class BorrowItemManager {
|
||||
.findAll(qBorrowItemManualSlot.item.eq(borrowItem.getId())));
|
||||
borrowItemPeriodSlotRepository.deleteAll(borrowItemPeriodSlotRepository
|
||||
.findAll(qBorrowItemPeriodSlot.item.eq(borrowItem.getId())));
|
||||
borrowRequestRepository.deleteAll(
|
||||
borrowRequestRepository.findAll(qBorrowRequest.item.eq(borrowItem.getId())));
|
||||
|
||||
borrowItemRepository.delete(borrowItem);
|
||||
}
|
||||
@@ -217,7 +224,10 @@ public class BorrowItemManager {
|
||||
* @param id the id
|
||||
*/
|
||||
public void delete(Long id) {
|
||||
borrowItemRepository.deleteById(id);
|
||||
BorrowItem borrowItem = get(id);
|
||||
Assert.notNull(borrowItem, "Invalid borrow item id: "
|
||||
+ id);
|
||||
delete(borrowItem);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -87,7 +87,7 @@ public class BorrowRequestManager {
|
||||
* @param descending the descending
|
||||
* @return the for user and stauts
|
||||
*/
|
||||
public Page<BorrowRequest> getForUserAndStauts(Long userId, BorrowRequestStatus status,
|
||||
public Page<BorrowRequest> getForUserAndStatus(Long userId, BorrowRequestStatus status,
|
||||
int page, int size, String sortBy, boolean descending) {
|
||||
return borrowRequestRepository.findAll(
|
||||
qBorrowRequest.user.eq(userId).and(qBorrowRequest.status.eq(status)),
|
||||
|
||||
@@ -59,56 +59,30 @@ public class BorrowItemController extends BaseController {
|
||||
@RequestParam("size") Optional<Integer> sizeParameter,
|
||||
@RequestParam("sort") Optional<String> sortParameter,
|
||||
@RequestParam("desc") Optional<Boolean> descParameter,
|
||||
@RequestParam("search") Optional<String> searchParameter) {
|
||||
@RequestParam("search") Optional<String> searchParameter,
|
||||
@RequestParam("owner") Optional<Boolean> ownerParameter) {
|
||||
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(), BorrowPermissions.BORROW_REQUESTS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
Page<BorrowItem> borrowItems;
|
||||
|
||||
Page<BorrowItem> borrowItems = borrowItemManager.get(pageParameter.orElse(0),
|
||||
sizeParameter.orElse(10), sortParameter.orElse("id"), descParameter.orElse(false),
|
||||
searchParameter.orElse(null));
|
||||
|
||||
for (BorrowItem borrowItem : borrowItems.getContent()) {
|
||||
if (!borrowItem.getOwner().equals(getCurrentUserId())) {
|
||||
borrowItem.setEmail(null);
|
||||
borrowItem.setEmailNotification(null);
|
||||
if (ownerParameter.isPresent() && ownerParameter.get().booleanValue()) {
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(), BorrowPermissions.BORROW_ITEMS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
borrowItemManager.applySlots(borrowItem);
|
||||
borrowItems = borrowItemManager.getForUser(getCurrentUserId(), pageParameter.orElse(0),
|
||||
sizeParameter.orElse(10), sortParameter.orElse("id"),
|
||||
descParameter.orElse(false), searchParameter.orElse(null));
|
||||
} else {
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(),
|
||||
BorrowPermissions.BORROW_REQUESTS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
borrowItems = borrowItemManager.get(pageParameter.orElse(0), sizeParameter.orElse(10),
|
||||
sortParameter.orElse("id"), descParameter.orElse(false),
|
||||
searchParameter.orElse(null));
|
||||
}
|
||||
|
||||
return borrowItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the owner borrow items.
|
||||
*
|
||||
* @param pageParameter the page parameter
|
||||
* @param sizeParameter the size parameter
|
||||
* @param sortParameter the sort parameter
|
||||
* @param descParameter the desc parameter
|
||||
* @param searchParameter the search parameter
|
||||
* @return the owner borrow items
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@GetMapping("/mine")
|
||||
public Page<BorrowItem> getOwnerBorrowItems(
|
||||
@RequestParam("page") Optional<Integer> pageParameter,
|
||||
@RequestParam("size") Optional<Integer> sizeParameter,
|
||||
@RequestParam("sort") Optional<String> sortParameter,
|
||||
@RequestParam("desc") Optional<Boolean> descParameter,
|
||||
@RequestParam("search") Optional<String> searchParameter) {
|
||||
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(), BorrowPermissions.BORROW_ITEMS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
|
||||
Page<BorrowItem> borrowItems = borrowItemManager.getForUser(getCurrentUserId(),
|
||||
pageParameter.orElse(0), sizeParameter.orElse(10), sortParameter.orElse("id"),
|
||||
descParameter.orElse(false), searchParameter.orElse(null));
|
||||
|
||||
for (BorrowItem borrowItem : borrowItems.getContent()) {
|
||||
if (!borrowItem.getOwner().equals(getCurrentUserId())) {
|
||||
borrowItem.setEmail(null);
|
||||
@@ -136,7 +110,7 @@ public class BorrowItemController extends BaseController {
|
||||
BorrowItem borrowItem = borrowItemManager.get(id);
|
||||
|
||||
if (borrowItem == null) {
|
||||
throw new EntityResponseStatusException(HttpStatus.NO_CONTENT);
|
||||
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
|
||||
}
|
||||
|
||||
if (!borrowItem.getOwner().equals(getCurrentUserId())) {
|
||||
|
||||
@@ -78,53 +78,30 @@ public class BorrowRequestController extends BaseController {
|
||||
@RequestParam("page") Optional<Integer> pageParameter,
|
||||
@RequestParam("size") Optional<Integer> sizeParameter,
|
||||
@RequestParam("sort") Optional<String> sortParameter,
|
||||
@RequestParam("desc") Optional<Boolean> descParameter) {
|
||||
@RequestParam("desc") Optional<Boolean> descParameter,
|
||||
@RequestParam("owner") Optional<Boolean> ownerParameter) {
|
||||
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(), BorrowPermissions.BORROW_REQUESTS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
Page<BorrowRequest> borrowRequests;
|
||||
|
||||
if (ownerParameter.isPresent() && ownerParameter.get().booleanValue()) {
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(), BorrowPermissions.BORROW_ITEMS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
borrowRequests = borrowRequestManager.getForOwner(getCurrentUserId(),
|
||||
pageParameter.orElse(0), sizeParameter.orElse(10), sortParameter.orElse("id"),
|
||||
descParameter.orElse(false));
|
||||
} else {
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(),
|
||||
BorrowPermissions.BORROW_REQUESTS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
borrowRequests = borrowRequestManager.getForUser(getCurrentUserId(),
|
||||
pageParameter.orElse(0), sizeParameter.orElse(10), sortParameter.orElse("id"),
|
||||
descParameter.orElse(false));
|
||||
}
|
||||
|
||||
Page<BorrowRequest> borrowRequests = borrowRequestManager.getForUser(getCurrentUserId(),
|
||||
pageParameter.orElse(0), sizeParameter.orElse(10), sortParameter.orElse("id"),
|
||||
descParameter.orElse(false));
|
||||
|
||||
for (BorrowRequest borrowRequest : borrowRequests.getContent()) {
|
||||
BorrowItem borrowItem = borrowItemManager.get(borrowRequest.getItem());
|
||||
borrowItem.setEmail(null);
|
||||
borrowItem.setEmailNotification(null);
|
||||
borrowRequest.setBorrowItem(borrowItem);
|
||||
}
|
||||
|
||||
return borrowRequests;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the owner borrow requests.
|
||||
*
|
||||
* @param pageParameter the page parameter
|
||||
* @param sizeParameter the size parameter
|
||||
* @param sortParameter the sort parameter
|
||||
* @param descParameter the desc parameter
|
||||
* @return the owner borrow requests
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@GetMapping("/mine")
|
||||
public Page<BorrowRequest> getOwnerBorrowRequests(
|
||||
@RequestParam("page") Optional<Integer> pageParameter,
|
||||
@RequestParam("size") Optional<Integer> sizeParameter,
|
||||
@RequestParam("sort") Optional<String> sortParameter,
|
||||
@RequestParam("desc") Optional<Boolean> descParameter) {
|
||||
|
||||
if (!permissionManager.hasPermission(getCurrentUserId(), BorrowPermissions.BORROW_ITEMS)
|
||||
|| !permissionManager.isFullUser(getCurrentUserId())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
|
||||
Page<BorrowRequest> borrowRequests = borrowRequestManager.getForOwner(getCurrentUserId(),
|
||||
pageParameter.orElse(0), sizeParameter.orElse(10), sortParameter.orElse("id"),
|
||||
descParameter.orElse(false));
|
||||
|
||||
for (BorrowRequest borrowRequest : borrowRequests.getContent()) {
|
||||
BorrowItem borrowItem = borrowItemManager.get(borrowRequest.getItem());
|
||||
borrowItem.setEmail(null);
|
||||
@@ -294,7 +271,7 @@ public class BorrowRequestController extends BaseController {
|
||||
|
||||
return signedJwt.getJWTClaimsSet().getClaims();
|
||||
} catch (ParseException e) {
|
||||
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
|
||||
throw new EntityResponseStatusException(HttpStatus.NOT_ACCEPTABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -70,14 +70,14 @@ public class BorrowJwtValidator implements Validator {
|
||||
errors.reject("INVALID");
|
||||
return;
|
||||
} else if (claims.getNotBeforeTime().after(new Date())) {
|
||||
errors.rejectValue("nbf", "UPCOMING");
|
||||
errors.rejectValue("nbf", "UPCOMING", claims.getNotBeforeTime().toInstant().toString());
|
||||
}
|
||||
|
||||
if (claims.getExpirationTime() == null) {
|
||||
errors.reject("INVALID");
|
||||
return;
|
||||
} else if (claims.getExpirationTime().before(new Date())) {
|
||||
errors.rejectValue("exp", "EXPIRED");
|
||||
errors.rejectValue("exp", "EXPIRED", claims.getExpirationTime().toInstant().toString());
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
package de.bstly.we.borrow.controller.validation;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.OffsetTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneOffset;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -130,7 +130,7 @@ public class BorrowRequestValidator implements Validator {
|
||||
BorrowItemPeriodSlot borrowItemPeriodSlot = (BorrowItemPeriodSlot) borrowItemSlot;
|
||||
if (borrowRequest.getStarts().atZone(ZoneOffset.UTC).getDayOfWeek()
|
||||
.compareTo(borrowItemPeriodSlot.getStartDay()) >= 0
|
||||
&& OffsetTime
|
||||
&& LocalTime
|
||||
.ofInstant(borrowRequest.getStarts(),
|
||||
ZoneOffset.UTC)
|
||||
.compareTo(
|
||||
@@ -139,7 +139,7 @@ public class BorrowRequestValidator implements Validator {
|
||||
}
|
||||
if (borrowRequest.getEnds().atZone(ZoneOffset.UTC).getDayOfWeek()
|
||||
.compareTo(borrowItemPeriodSlot.getEndDay()) <= 0
|
||||
&& OffsetTime
|
||||
&& LocalTime
|
||||
.ofInstant(borrowRequest.getEnds(), ZoneOffset.UTC)
|
||||
.compareTo(
|
||||
borrowItemPeriodSlot.getEndTime()) <= 0) {
|
||||
|
||||
@@ -4,10 +4,12 @@
|
||||
package de.bstly.we.borrow.model;
|
||||
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.OffsetTime;
|
||||
import java.time.LocalTime;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
@@ -18,13 +20,15 @@ import javax.persistence.Table;
|
||||
public class BorrowItemPeriodSlot extends BorrowItemSlot {
|
||||
|
||||
@Column(name = "start_day")
|
||||
@Enumerated(EnumType.STRING)
|
||||
private DayOfWeek startDay;
|
||||
@Column(name = "end_day")
|
||||
private DayOfWeek endDay;
|
||||
@Column(name = "start_time")
|
||||
private OffsetTime startTime;
|
||||
private LocalTime startTime;
|
||||
@Column(name = "end_day")
|
||||
@Enumerated(EnumType.STRING)
|
||||
private DayOfWeek endDay;
|
||||
@Column(name = "end_time")
|
||||
private OffsetTime endTime;
|
||||
private LocalTime endTime;
|
||||
|
||||
/**
|
||||
* @return the startDay
|
||||
@@ -40,6 +44,20 @@ public class BorrowItemPeriodSlot extends BorrowItemSlot {
|
||||
this.startDay = startDay;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the startTime
|
||||
*/
|
||||
public LocalTime getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param startTime the startTime to set
|
||||
*/
|
||||
public void setStartTime(LocalTime startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the endDay
|
||||
*/
|
||||
@@ -54,31 +72,17 @@ public class BorrowItemPeriodSlot extends BorrowItemSlot {
|
||||
this.endDay = endDay;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the startTime
|
||||
*/
|
||||
public OffsetTime getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param startTime the startTime to set
|
||||
*/
|
||||
public void setStartTime(OffsetTime startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the endTime
|
||||
*/
|
||||
public OffsetTime getEndTime() {
|
||||
public LocalTime getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param endTime the endTime to set
|
||||
*/
|
||||
public void setEndTime(OffsetTime endTime) {
|
||||
public void setEndTime(LocalTime endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user