Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import com.finboostplus.DTO.SwitchAuthorityRequestDTO;
import com.finboostplus.model.Group;
import com.finboostplus.projection.GroupProjection;
import com.finboostplus.repository.GroupRepository;
import com.finboostplus.repository.UserRepository;
import com.finboostplus.service.CategoryService;
import com.finboostplus.service.ExpenseService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,19 +146,25 @@ public boolean createNewExpense(ExpenseCreateDTO expenseDTO, Long groupId) {

@Transactional(readOnly = true)
public UserExpenseDivisionDTO getExpenseInfoDetails(Long groupId, Long expenseId) {
userRepository.findByEmailIgnoreCase(userService.authenticated())
User user = userRepository.findByEmailIgnoreCase(userService.authenticated())
.orElseThrow(() -> new UserNotFoundException("Usuário não encontrado"));
Group group = groupRepository.findById(groupId)
.orElseThrow(() -> new GroupNotFoundException("Grupo não encontrado"));
Expense expense = expenseRepository.findById(expenseId).orElseThrow(
() -> new ForbiddenResourceException("Despesa nao encontrada"));
Category category = expense.getCategory();
List<UserExpenseDivisionProjection> memberList = getExpenseDivisionDetails(group.getId(), expenseId);
return new UserExpenseDivisionDTO(expense.getId(), expense.getTitle(),
boolean hasAuthority = groupMemberRepository.doesUserHasAnyAuthority(user.getId(), groupId, AUTHLEVELS);
boolean doesListContainMember = memberList.stream()
.anyMatch(item -> item.getUserId().equals(user.getId()));
if (hasAuthority || doesListContainMember) {
return new UserExpenseDivisionDTO(expense.getId(), expense.getTitle(),
expense.getDescription(), groupId, group.getName(), expense.getStatus(),
expense.getValue(), category.getId(), category.getName(), expense.getCreatedAt(),
expense.getDeadlineDate(),
memberList);
}
throw new ForbiddenResourceException("Acesso negado");
}

private List<UserExpenseDivisionProjection> getExpenseDivisionDetails(Long groupId, Long expenseId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,10 @@ public void removeGroupMember(Long groupId, Long memberId) {
String loggedAuth = loggedInMember.getAuthorization();
if ("OWNER".equals(loggedAuth)) {
groupMemberRepository.deleteByUserIdAndGroupId(memberId, groupId);
return;
} else if ("ADMIN".equals(loggedAuth) && "USER".equals(targetAuth)) {
groupMemberRepository.deleteByUserIdAndGroupId(memberId, groupId);
return;
}
throw new ForbiddenResourceException("Recurso não permitido");
}
Expand Down
Loading