Commit 32fb5d51 authored by André Luiz Marques Macrini Leite's avatar André Luiz Marques Macrini Leite
Browse files

Merge branch 'dev' into 'master'

Dev

See merge request mutirao-do-bem/mutirao-do-bem-backend!27
parents 21f562c6 98eb8575
Showing with 382 additions and 69 deletions
+382 -69
......@@ -26,6 +26,7 @@ dependencies {
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1'
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.5.4'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
......
#Tue Sep 07 19:31:31 BRT 2021
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-all.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
package br.com.ages.mutiraodobemback.controller;
import br.com.ages.mutiraodobemback.domain.EventEntity;
import br.com.ages.mutiraodobemback.service.cause.IEventService;
import br.com.ages.mutiraodobemback.dto.EventRequestDTO;
import br.com.ages.mutiraodobemback.dto.EventResponseDTO;
import br.com.ages.mutiraodobemback.service.event.IEventService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -19,13 +20,17 @@ public class EventController {
}
@PostMapping
public EventEntity save(@RequestBody EventEntity cause) {
return this.service.save(cause);
public EventResponseDTO save(@RequestBody EventRequestDTO event) {
return service.save(event);
}
@GetMapping
public List<EventEntity> findAll() {
return this.service.findAll();
@PatchMapping
public EventResponseDTO update(@RequestBody EventRequestDTO event) {
return service.update(event);
}
@GetMapping
public List<EventRequestDTO> findAll() {
return service.findAll();
}
}
......@@ -2,10 +2,10 @@ package br.com.ages.mutiraodobemback.controller;
import br.com.ages.mutiraodobemback.domain.UserEntity;
import br.com.ages.mutiraodobemback.dto.LoginDTO;
import br.com.ages.mutiraodobemback.dto.UserDTO;
import br.com.ages.mutiraodobemback.dto.UserRequestDTO;
import br.com.ages.mutiraodobemback.dto.UserResponseDTO;
import br.com.ages.mutiraodobemback.service.user.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -22,16 +22,22 @@ public class UserController {
}
@PostMapping
public UserDTO save(@RequestBody UserEntity user) {
public UserResponseDTO save(@RequestBody UserRequestDTO user) {
return this.service.save(user);
}
@GetMapping
public List<UserDTO> findAll() {
public List<UserResponseDTO> findAll() {
return this.service.findAll();
}
@GetMapping("/logged-user")
public UserEntity getLoggedUser() {
return this.service.getLoggedUser();
}
@PostMapping("/login")
private void login(@RequestBody LoginDTO user) { }
private void login(@RequestBody LoginDTO user) {
}
}
package br.com.ages.mutiraodobemback.domain;
import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "addres")
public class AddresEntity {
@Id
private String id;
@NonNull
private String street;
@NonNull
private String district;
@NonNull
private String number;
@NonNull
private String latitude;
@NonNull
private String longitude;
@NonNull
private String city;
@NonNull
private String state;
@NonNull
private String cep;
}
package br.com.ages.mutiraodobemback.domain;
import br.com.ages.mutiraodobemback.dto.EventRequestDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -8,6 +9,9 @@ import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.lang.NonNull;
import java.time.LocalDateTime;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
......@@ -21,5 +25,36 @@ public class EventEntity {
private String title;
@NonNull
private String description;
@NonNull
private String address;
@NonNull
private String phone;
@NonNull
private LocalDateTime startDate;
@NonNull
private LocalDateTime endDate;
@NonNull
private LocalDateTime createdDate;
@NonNull
private List<String> images;
@NonNull
private List<String> tasks;
@NonNull
private String user;
@NonNull
private String eventType;
@NonNull
private boolean active;
}
public EventEntity(EventRequestDTO event) {
this.title = event.getTitle();
this.address = event.getAddress();
this.createdDate = LocalDateTime.now();
this.startDate = event.getStartDate();
this.endDate = event.getEndDate();
this.description = event.getDescription();
this.images = event.getImages();
this.tasks = event.getTasks();
// this.eventType = event.getEventType();
}
}
\ No newline at end of file
package br.com.ages.mutiraodobemback.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.lang.NonNull;
import java.time.LocalDateTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "task")
public class TaskEntity {
@Id
private String id;
@NonNull
private String title;
@NonNull
private String volunteer;
@NonNull
private String description;
@NonNull
private UserEntity userEntity;
@NonNull
private LocalDateTime dateInicial;
@NonNull
private LocalDateTime dateFinal;
}
package br.com.ages.mutiraodobemback.domain;
import br.com.ages.mutiraodobemback.enums.UserType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -21,13 +22,21 @@ public class UserEntity {
@NonNull
private String name;
@NonNull
private String cpf;
private String document;
@NonNull
@Indexed(unique=true)
@Indexed(unique = true)
private String email;
@NonNull
private String password;
@NonNull
private String role;
@NonNull
private UserType type;
@NonNull
private boolean active;
@NonNull
private String phone;
@NonNull
private String image;
}
package br.com.ages.mutiraodobemback.dto;
import br.com.ages.mutiraodobemback.domain.EventEntity;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EventRequestDTO {
private String title;
private String description;
private String phone;
private LocalDateTime startDate;
private LocalDateTime endDate;
private String address;
private List<String> images;
private List<String> tasks;
private String eventType;
public EventRequestDTO(EventEntity eventEntity) {
this.title = eventEntity.getTitle();
this.address = eventEntity.getAddress();
this.startDate = LocalDateTime.now();
this.endDate = eventEntity.getEndDate();
this.description = eventEntity.getDescription();
this.images = eventEntity.getImages();
this.tasks = eventEntity.getTasks();
this.eventType = eventEntity.getEventType();
}
}
package br.com.ages.mutiraodobemback.dto;
import br.com.ages.mutiraodobemback.domain.EventEntity;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class EventResponseDTO {
private String id;
private String title;
private String description;
private String address;
private String phone;
private LocalDateTime startDate;
private LocalDateTime endDate;
private LocalDateTime createdDate;
private List<String> images;
private List<String> tasks;
private String user;
private String eventType;
private boolean active;
public EventResponseDTO(EventEntity eventEntity) {
this.id = eventEntity.getId();
this.title = eventEntity.getTitle();
this.description = eventEntity.getDescription();
this.address = eventEntity.getAddress();
this.phone = eventEntity.getPhone();
this.startDate = LocalDateTime.now();
this.endDate = eventEntity.getEndDate();
this.createdDate = eventEntity.getCreatedDate();
this.images = eventEntity.getImages();
this.tasks = eventEntity.getTasks();
this.user = eventEntity.getUser();
this.eventType = eventEntity.getEventType();
this.active = eventEntity.isActive();
}
}
package br.com.ages.mutiraodobemback.dto;
import br.com.ages.mutiraodobemback.enums.UserType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -9,11 +10,13 @@ import lombok.NoArgsConstructor;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserDTO {
public class UserRequestDTO {
private String id;
private String name;
private String cpf;
private String document;
private UserType type;
private String phone;
private String email;
private String password;
private String image;
}
package br.com.ages.mutiraodobemback.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.lang.NonNull;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserResponseDTO {
private String id;
private String name;
private String document;
private String email;
private String phone;
private String image;
private double rating;
}
package br.com.ages.mutiraodobemback.enums;
public enum UserType {
VOLUNTARY,
ENTITY
}
package br.com.ages.mutiraodobemback.message;
public class Message {
public static final String NOME_OBRIGATORIO = "Nome é obrigatório.";
public static final String ENDERECO_OBRIGATORIO = "Endereço é obrigatório.";
public static final String DATA_INICIAL_OBRIGATORIO = "Data inicial é obrigatório.";
public static final String DATA_FINAL_OBRIGATORIO = "Data final é obrigatório.";
public static final String DATA_INICIAL_MAIOR_QUE_DATA_FINAL = "Data inicial deve ser menor que data final.";
public static final String DESCRICAO_OBRIGATORIO = "Descrição é obrigatório.";
public static final String EVENTO_OBRIGATORIO = "Evento é obrigatório.";
public static final String CPF_CNPJ_OBRIGATORIO = "CPF/CNPJ é obrigatório.";
public static final String SENHA_OBRIGATORIO = "Senha é obrigatório.";
public static final String TELEFONE_OBRIGATORIO = "Telefone é obrigatório.";
public static final String EMAIL_OBRIGATORIO = "Email é obrigatório.";
public static final String IMAGEM_OBRIGATORIO = "Imagem é obrigatório.";
public static final String CPF_CNPJ_INVALIDO = "CPF/CNPJ é inválido.";
}
......@@ -38,8 +38,9 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
"/configuration/security",
"/swagger-ui.html",
"/webjars/**").permitAll()
.antMatchers("/users").access("hasAnyRole('USER')")
.antMatchers("/causes").access("hasRole('ADMIN')")
.antMatchers(HttpMethod.POST,"/users").permitAll()
.antMatchers(HttpMethod.GET,"/users").access("hasAnyRole('USER','ADMIN')")
.antMatchers("/events").access("hasAnyRole('USER','ADMIN')")
.anyRequest()
.authenticated()
.and().cors()
......
package br.com.ages.mutiraodobemback.service.cause;
import br.com.ages.mutiraodobemback.domain.EventEntity;
import br.com.ages.mutiraodobemback.repository.IEventRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EventServiceImpl implements IEventService {
private final IEventRepository repository;
@Autowired
public EventServiceImpl(IEventRepository repository) {
this.repository = repository;
}
@Override
public EventEntity save(EventEntity cause) {
return this.repository.save(cause);
}
@Override
public List<EventEntity> findAll() {
return this.repository.findAll();
}
}
package br.com.ages.mutiraodobemback.service.cause;
import br.com.ages.mutiraodobemback.domain.EventEntity;
import java.util.List;
public interface IEventService {
EventEntity save(EventEntity cause);
List<EventEntity> findAll();
}
package br.com.ages.mutiraodobemback.service.event;
import br.com.ages.mutiraodobemback.domain.EventEntity;
import br.com.ages.mutiraodobemback.dto.EventRequestDTO;
import br.com.ages.mutiraodobemback.dto.EventResponseDTO;
import br.com.ages.mutiraodobemback.repository.IEventRepository;
import br.com.ages.mutiraodobemback.util.exceptions.CustomIllegalArgumentException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import static br.com.ages.mutiraodobemback.message.Message.*;
@Service
public class EventServiceImpl implements IEventService {
private final IEventRepository repository;
@Autowired
public EventServiceImpl(IEventRepository repository) {
this.repository = repository;
}
@Override
public EventResponseDTO save(EventRequestDTO event) {
validateFields(event);
EventEntity eventEntity = new EventEntity(event);
eventEntity.setCreatedDate(LocalDateTime.now());
eventEntity.setActive(true);
return new EventResponseDTO(repository.save(eventEntity));
}
@Override
public EventResponseDTO update(EventRequestDTO event) {
return this.save(event);
}
@Override
public List<EventRequestDTO> findAll() {
return repository.findAll().stream().map(EventRequestDTO::new).collect(Collectors.toList());
}
private void validateFields(EventRequestDTO event) {
if (event.getTitle().isBlank() || event.getTitle().isEmpty())
throw new CustomIllegalArgumentException(NOME_OBRIGATORIO);
if (event.getAddress().isBlank() || event.getAddress().isEmpty())
throw new CustomIllegalArgumentException(ENDERECO_OBRIGATORIO);
if (event.getStartDate().toString().isBlank() || event.getStartDate().toString().isEmpty())
throw new CustomIllegalArgumentException(DATA_INICIAL_OBRIGATORIO);
if (event.getEndDate().toString().isBlank() || event.getEndDate().toString().isEmpty())
throw new CustomIllegalArgumentException(DATA_FINAL_OBRIGATORIO);
if (event.getStartDate().isAfter(event.getEndDate()))
throw new CustomIllegalArgumentException(DATA_INICIAL_MAIOR_QUE_DATA_FINAL);
if (event.getDescription().isBlank() || event.getDescription().isEmpty())
throw new CustomIllegalArgumentException(DESCRICAO_OBRIGATORIO);
// TODO desobrir o que é EventType
// if (event.getEventType().isBlank() || event.getEventType().isEmpty())
// throw new CustomIllegalArgumentException(EVENTO_OBRIGATORIO);
}
}
package br.com.ages.mutiraodobemback.service.event;
import br.com.ages.mutiraodobemback.dto.EventRequestDTO;
import br.com.ages.mutiraodobemback.dto.EventResponseDTO;
import java.util.List;
public interface IEventService {
EventResponseDTO save(EventRequestDTO cause);
EventResponseDTO update(EventRequestDTO cause);
List<EventRequestDTO> findAll();
}
package br.com.ages.mutiraodobemback.service.user;
import br.com.ages.mutiraodobemback.domain.UserEntity;
import br.com.ages.mutiraodobemback.dto.UserDTO;
import br.com.ages.mutiraodobemback.dto.UserRequestDTO;
import br.com.ages.mutiraodobemback.dto.UserResponseDTO;
import br.com.ages.mutiraodobemback.util.exceptions.CustomIllegalArgumentException;
import java.util.List;
public interface IUserService {
UserDTO save(UserEntity user);
UserResponseDTO save(UserRequestDTO user);
List<UserDTO> findAll();
List<UserResponseDTO> findAll();
UserEntity getLoggedUser();
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment