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
Binary file added Diagramas/Fluxograma_BPMN/criarListPartida.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;

@SpringBootApplication
@EnableAsync
public class VemProFutApplication {

private static final Logger log = LoggerFactory.getLogger(VemProFutApplication.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package br.com.vemprofut.configs;

import java.util.concurrent.Executor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

@Configuration
@EnableAsync
public class AsyncConfig {
@Bean(name = "defaultExecutor")
public Executor defaultExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(20);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("async-");
executor.initialize();
return executor;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package br.com.vemprofut.configs;

import br.com.vemprofut.mappers.IHistoricoPeladeiroMapper;
import br.com.vemprofut.models.DTOs.HistoricoPeladeiroDTO;
import br.com.vemprofut.models.PeladeiroModel;
import br.com.vemprofut.models.enuns.PeDominante;
import br.com.vemprofut.repositories.PeladeiroRepository;
Expand Down Expand Up @@ -56,20 +55,30 @@ public void onAuthenticationSuccess(

if (usuario == null) {
log.info("Usuario inesxistente, cadastrando novo usuario...");
HistoricoPeladeiroDTO historicoPeladeiro = historicoPeladeiroService.create();
usuario = new PeladeiroModel();
usuario.setEmail(email);
usuario.setNome(name);
usuario.setApelido(name);
usuario.setDescricao("Usuário criado via OAuth2");
usuario.setWhatsapp("000000000");
usuario.setPeDominante(PeDominante.DESTRO); // escolha padrão
usuario.setAuthProvider(provider);
usuario.setFotoUrl(picture);
usuario.setHistoricoPeladeiro(historicoPeladeiroMapper.toModel(historicoPeladeiro));
peladeiroRepository.save(usuario);

log.info("Usuário salvo no banco com ID {}", usuario.getId());
historicoPeladeiroService
.create()
.thenAccept(
historicoPeladeiroDTO -> {
PeladeiroModel usuario2 = new PeladeiroModel();
usuario2.setEmail(email);
usuario2.setNome(name);
usuario2.setApelido(name);
usuario2.setDescricao("Usuário criado via OAuth2");
usuario2.setWhatsapp("000000000");
usuario2.setPeDominante(PeDominante.DESTRO); // escolha padrão
usuario2.setAuthProvider(provider);
usuario2.setFotoUrl(picture);
usuario2.setHistoricoPeladeiro(
historicoPeladeiroMapper.toModel(historicoPeladeiroDTO));
peladeiroRepository.save(usuario2);
log.info("Usuário salvo no banco com ID {}", usuario2.getId());
})
.exceptionally(
ex -> {
log.error("Erro ao criar histórico do peladeiro", ex);
return null;
});
} else {
log.info("Usuario encontrado! ID: {}", usuario.getId());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

import br.com.vemprofut.controllers.request.*;
import br.com.vemprofut.controllers.response.*;
import br.com.vemprofut.models.FutModel;
import br.com.vemprofut.services.IFutService;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.Valid;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
Expand All @@ -26,37 +26,37 @@ public class FutController {
@Operation(
summary = "Cadastra um novo Fut",
tags = {"FutController - CRUD Básico"})
public ResponseEntity<SaveFutResponseDTO> create(
public CompletableFuture<ResponseEntity<SaveFutResponseDTO>> create(
@Valid @RequestBody final SaveFutRequestDTO requestDTO) {
var response = futService.create(requestDTO);
return ResponseEntity.status(HttpStatus.CREATED).body(response);
return futService
.create(requestDTO)
.thenApply(obj -> ResponseEntity.status(HttpStatus.CREATED).body(obj));
}

@GetMapping("{id}")
@Operation(
summary = "Busca um Fut pelo ID",
tags = {"FutController - CRUD Básico"})
public ResponseEntity<FutDetailsResponse> findByFut(@PathVariable final Long id) {
return ResponseEntity.ok(futService.findById(id));
public CompletableFuture<ResponseEntity<FutDetailsResponse>> findByFut(
@PathVariable final Long id) {
return futService.findById(id).thenApply(v -> ResponseEntity.ok().build());
}

@PutMapping("{id}")
@Operation(
summary = "Altera um Fut já cadastrado, informando o id",
tags = {"FutController - CRUD Básico"})
public ResponseEntity<UpdateFutResponseDTO> update(
public CompletableFuture<ResponseEntity<UpdateFutResponseDTO>> update(
@PathVariable final Long id, UpdateFutRequestDTO dto) {
var obj = futService.update(id, dto);
return ResponseEntity.ok(obj);
return futService.update(id, dto).thenApply(obj -> ResponseEntity.ok(obj));
}

@DeleteMapping("{id}")
@Operation(
summary = "Apaga um Fut por meio do id, cuidado! ",
tags = {"FutController - CRUD Básico"})
public ResponseEntity<Void> delete(@PathVariable final Long id) {
futService.delete(id);
return ResponseEntity.noContent().build();
public CompletableFuture<ResponseEntity<Void>> delete(@PathVariable final Long id) {
return futService.delete(id).thenApply(v -> ResponseEntity.noContent().build());
}

// =================== acoes partidas =======================
Expand All @@ -65,20 +65,26 @@ public ResponseEntity<Void> delete(@PathVariable final Long id) {
@Operation(
summary = "Criar uma nova partida...",
tags = {"FutController - Ações Partidas"})
public ResponseEntity<SavePartidasResponseDTO> criarPartida(
public CompletableFuture<ResponseEntity<SavePartidasResponseDTO>> criarPartida(
@RequestBody SavePartidaRequestDTO requestDTO) {
FutModel futModel = futService.findByIdModel(requestDTO.futId());
return ResponseEntity.status(HttpStatus.CREATED)
.body(futService.criarPartida(requestDTO, futModel));
return futService
.findByIdModel(requestDTO.futId())
.thenCompose(
futModel ->
futService
.criarPartida(requestDTO, futModel)
.thenApply(obj -> ResponseEntity.status(HttpStatus.CREATED).body(obj)));
}

@PostMapping("partidaslist")
@Operation(
summary = "Cria varias partidas de uma só vez, todas com resultados preenchidos",
tags = {"FutController - Ações Partidas"})
public ResponseEntity<List<SavePartidasResponseDTO>> criarPartidasLista(
public CompletableFuture<ResponseEntity<List<SavePartidasResponseDTO>>> criarPartidasLista(
@RequestBody List<SavePartidaRequestDTO> requestDTO) {
return ResponseEntity.status(HttpStatus.CREATED).body(futService.criarPartidasList(requestDTO));
return futService
.criarPartidasList(requestDTO)
.thenApply(obj -> ResponseEntity.status(HttpStatus.CREATED).body(obj));
}

// ================ lista peladeiro =====================
Expand All @@ -87,19 +93,22 @@ public ResponseEntity<List<SavePartidasResponseDTO>> criarPartidasLista(
@Operation(
summary = "Adiciona um peladeiro a lista de peladeiros cadastrado no fut",
tags = {"FutController - Lista de Peladeiros"})
public ResponseEntity<Void> adicionarPeladeiroLista(
public CompletableFuture<ResponseEntity<Void>> adicionarPeladeiroLista(
@RequestBody AddPeladeiroInFutListRequestDTO addPeladeiroRequestDTO) {
futService.addPeladeiro(addPeladeiroRequestDTO);
return ResponseEntity.noContent().build();
return futService
.addPeladeiro(addPeladeiroRequestDTO)
.thenApply(v -> ResponseEntity.noContent().build());
}

@GetMapping("lista-peladeiros/{idFut}")
@Operation(
summary = "busca a lista de todos peldadeiros cadastrados no fut",
tags = {"FutController - Lista de Peladeiros"})
public ResponseEntity<List<PeladeiroResponseDTO>> listarPeladeirosCadastrados(
public CompletableFuture<ResponseEntity<List<PeladeiroResponseDTO>>> listarPeladeirosCadastrados(
@PathVariable final Long idFut) {
return ResponseEntity.ok().body(futService.listarPeladeiroCadastradosFut(idFut));
return futService
.listarPeladeiroCadastradosFut(idFut)
.thenApply(obj -> ResponseEntity.ok().body(obj));
}

// =============== lista Editores ===========================
Expand All @@ -108,20 +117,20 @@ public ResponseEntity<List<PeladeiroResponseDTO>> listarPeladeirosCadastrados(
@Operation(
summary = "Adiciona um Editor a lista de editores de um fut em especifico",
tags = {"FutController - Lista de Editores do Fut"})
public ResponseEntity<Void> adicionarEditorLista(
public CompletableFuture<ResponseEntity<Void>> adicionarEditorLista(
@RequestBody AddEditorInFutListResquestDTO editor) {
futService.addEditor(editor);
return ResponseEntity.noContent().build();
return futService.addEditor(editor).thenApply(v -> ResponseEntity.noContent().build());
}

@GetMapping("lista-editores/{idFut}")
@Operation(
summary = "busca a lista de editores de um fut em especifico",
tags = {"FutController - Lista de Editores do Fut"})
public ResponseEntity<List<PeladeiroNameIdResponseDTO>> listarEditoresFut(
public CompletableFuture<ResponseEntity<List<PeladeiroNameIdResponseDTO>>> listarEditoresFut(
@PathVariable final Long idFut) {

return ResponseEntity.ok().body(futService.listarEditoresCadastradosFut(idFut)); // TODO:testar
return futService
.listarEditoresCadastradosFut(idFut)
.thenApply(obj -> ResponseEntity.ok().body(obj));
}

// ================= upload arquivos fotos ==================
Expand All @@ -130,10 +139,11 @@ public ResponseEntity<List<PeladeiroNameIdResponseDTO>> listarEditoresFut(
@Operation(
summary = "Para enviar a foto de capa do Fut",
tags = {"FutController - Upload de Imagens"})
public ResponseEntity<String> uploadFotoFut(
public CompletableFuture<ResponseEntity<String>> uploadFotoFut(
@PathVariable Long id, @RequestPart("file") MultipartFile file) {
futService.atualizarFotoCapa(id, file);
return ResponseEntity.ok("Foto de capa Salva!");
return futService
.atualizarFotoCapa(id, file)
.thenApply(obj -> ResponseEntity.ok("Foto de capa Salva!"));
}

// ======================== Banimentos =======================
Expand All @@ -142,27 +152,28 @@ public ResponseEntity<String> uploadFotoFut(
@Operation(
summary = "Adicionando um peladeiro da lista para o banimento",
tags = {"FutController - Banimento no Fut"})
public ResponseEntity<Void> adicionarBanimento(@RequestBody SaveBanimentoRequestDTO dto) {
futService.addBanimentoList(dto);
return ResponseEntity.noContent().build();
public CompletableFuture<ResponseEntity<Void>> adicionarBanimento(
@RequestBody SaveBanimentoRequestDTO dto) {
return futService.addBanimentoList(dto).thenApply(v -> ResponseEntity.noContent().build());
}

@GetMapping("lista-banidos/{idFut}")
@Operation(
summary = "Busca a lista de Banidos do Fut em questao",
tags = {"FutController - Banimento no Fut"})
public ResponseEntity<List<BanimentoDetailsResponseDTO>> buscarListaBanidos(
public CompletableFuture<ResponseEntity<List<BanimentoDetailsResponseDTO>>> buscarListaBanidos(
@PathVariable Long idFut) {
return ResponseEntity.ok().body(futService.findAllBanidos(idFut));
return futService.findAllBanidos(idFut).thenApply(obj -> ResponseEntity.ok().body(obj));
}

@DeleteMapping("delete-banimento/{idFut}/{idPeladeiro}")
@Operation(
summary = "retira um peladeiro da lista de banidos",
tags = {"FutController - Banimento no Fut"})
public ResponseEntity<Void> retirandoBanimento(
public CompletableFuture<ResponseEntity<Void>> retirandoBanimento(
@PathVariable Long idFut, @PathVariable Long idPeladeiro) {
futService.removeBanido(idPeladeiro, idFut);
return ResponseEntity.noContent().build();
return futService
.removeBanido(idPeladeiro, idFut)
.thenApply(v -> ResponseEntity.noContent().build());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.Valid;
import java.io.IOException;
import java.util.concurrent.CompletableFuture;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
Expand All @@ -26,47 +27,48 @@ public class PeladeiroController {
@Operation(
summary = "Cadastra um novo peladeiro",
tags = {"PeladeiroController"})
public ResponseEntity<SavePeladeiroResponseDTO> create(
public CompletableFuture<ResponseEntity<SavePeladeiroResponseDTO>> create(
@Valid @RequestBody final SavePeladeiroRequestDTO requestDTO) {
var obj = peladeiroService.create(requestDTO);
return ResponseEntity.status(HttpStatus.CREATED).body(obj);

return peladeiroService
.create(requestDTO)
.thenApply(obj -> ResponseEntity.status(HttpStatus.CREATED).body(obj));
}

@GetMapping("{id}")
@Operation(
summary = "Busca um Peladeiro pelo id",
tags = {"PeladeiroController"})
public ResponseEntity<PeladeiroDetailResponse> findById(@PathVariable final Long id) {
var obj = peladeiroService.findById(id);
return ResponseEntity.ok(obj);
public CompletableFuture<ResponseEntity<PeladeiroDetailResponse>> findById(
@PathVariable final Long id) {
return peladeiroService.findById(id).thenApply(ResponseEntity::ok);
}

@PutMapping("{id}")
@Operation(
summary = "Faz alteraçoes no Peladeiro cujo id é informado.",
tags = {"PeladeiroController"})
public ResponseEntity<Void> update(
public CompletableFuture<ResponseEntity<Void>> update(
@PathVariable final Long id, @Valid @RequestBody UpdatePeladeiroRequestDTO dto) {
peladeiroService.update(id, dto);
return ResponseEntity.noContent().build();
return peladeiroService.update(id, dto).thenApply(obj -> ResponseEntity.noContent().build());
}

@DeleteMapping("{id}")
@Operation(
summary = "Deleta o peladeiro cujo id foi informado. Cuidado!",
tags = {"PeladeiroController"})
public ResponseEntity<Void> delete(@PathVariable final Long id) {
peladeiroService.delete(id);
return ResponseEntity.noContent().build();
public CompletableFuture<ResponseEntity<Void>> delete(@PathVariable final Long id) {
return peladeiroService.delete(id).thenApply(obj -> ResponseEntity.noContent().build());
}

@PostMapping(value = "uploadFoto/{id}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(
summary = "Caso nao logado pelo gmail, enviar a foto do perfil",
tags = {"PeladeiroController"})
public ResponseEntity<String> uploadFotoPeladeiro(
public CompletableFuture<ResponseEntity<String>> uploadFotoPeladeiro(
@PathVariable Long id, @RequestPart("file") MultipartFile file) throws IOException {
peladeiroService.atualizarFoto(id, file);
return ResponseEntity.ok("Foto salva!");
return peladeiroService
.atualizarFoto(id, file)
.thenApply(obj -> ResponseEntity.ok("Foto salva!"));
}
}
Loading