Controller
A continuación vamos a crear las clases con el controller, creamos el paquete com.tutosoftware.divulgadorapi.controllerEn este paquete creamos la clase UsuarioController
package com.tutosoftware.divulgadorapi.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import com.tutosoftware.divulgadorapi.domain.Usuario;
import com.tutosoftware.divulgadorapi.repository.UsuarioRepository;
@RestController
@RequestMapping(value="/api")
@CrossOrigin("*")
public class UsuarioController {
@Autowired
UsuarioRepository usuarioRepository;
@ResponseStatus(HttpStatus.OK)
@GetMapping("/usuario/{email}")
public ResponseEntity<Usuario> getUsuarioById(@PathVariable("email") String email) {
Optional<Usuario> usuarioData = usuarioRepository.findById(email);
if (usuarioData.isPresent()) {
return new ResponseEntity<>(usuarioData.get(), HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
@ResponseStatus(HttpStatus.OK)
@GetMapping("/usuarios")
public ResponseEntity<?> getUsuarioAll(){
List<Usuario> usuarios = new ArrayList<Usuario>();
usuarios = usuarioRepository.findAll();
if(usuarios == null || usuarios.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}else {
return new ResponseEntity<>(usuarios,HttpStatus.OK);
}
}
@PostMapping("/usuario")
@ResponseStatus(HttpStatus.CREATED)
public ResponseEntity<?> crearUsuario(@RequestBody Usuario usuario){
Map<String,Object> response = new HashMap<>();
try {
Usuario _usuario= usuarioRepository.save(new Usuario(usuario.getNombre(),usuario.getApellidoPaterno(),
usuario.getApellidoMaterno(),usuario.getEmail(),usuario.getPassword()));
return new ResponseEntity<Usuario>(_usuario, HttpStatus.CREATED);
}catch(Exception e) {
response.put("mensaje","El comunicador no ha sido creado");
return new ResponseEntity<Map<String,Object>>(response, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@DeleteMapping("/usuario/{email}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteUsuario(@PathVariable String email) {
usuarioRepository.deleteById(email);
}
}
Creamos la clase NoticiaController
package com.tutosoftware.divulgadorapi.controller;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import com.tutosoftware.divulgadorapi.repository.EvidenciaRepository;
import com.tutosoftware.divulgadorapi.repository.NoticiaRepository;
import com.tutosoftware.divulgadorapi.domain.Evidencia;
import com.tutosoftware.divulgadorapi.domain.Noticia;
import com.tutosoftware.divulgadorapi.domain.NoticiaKey;
import com.tutosoftware.divulgadorapi.dto.NoticiaDto;
import com.tutosoftware.divulgadorapi.dto.NoticiaRespuestaDto;
@RestController
@RequestMapping(value="/api")
@CrossOrigin("*")
public class NoticiaController {
@Autowired
NoticiaRepository noticiaRepository;
@Autowired
EvidenciaRepository evidenciaRepository;
@PostMapping("/noticia")
public ResponseEntity crearNoticia(@RequestBody NoticiaDto noticia)
throws OptimisticLockingFailureException,IllegalArgumentException{
try {
System.out.println(noticia.getComunicador());
System.out.println(noticia.getTituloNoticia());
System.out.println(noticia.getDescripcionNoticia());
System.out.println(noticia.getFechaPublicacion());
System.out.println(noticia.getTipoNoticia().get(0));
NoticiaKey nk = new NoticiaKey();
String tipoNoticia =noticia.getTipoNoticia().get(0);
nk.setTituloNoticia(noticia.getTituloNoticia());
nk.setFechaPublicacion(noticia.getFechaPublicacion());
System.out.println(tipoNoticia);
Noticia _noticia=noticiaRepository.save(new Noticia(nk,noticia.getComunicador(),tipoNoticia,noticia.getDescripcionNoticia()));
return new ResponseEntity<>(_noticia, HttpStatus.CREATED);
}catch(Exception e) {
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@ResponseStatus(HttpStatus.OK)
@GetMapping("/noticiash/{fecha}")
public ResponseEntity> getNoticiasforDay(@PathVariable("fecha") String fecha1){
List fechas=new ArrayList();
List noticias=new ArrayList();
List noticiasRes = new ArrayList();
DateTimeFormatter formatter= DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime fecha = LocalDateTime.parse(fecha1, formatter);
LocalDateTime fecha2=fecha.plusDays(1);
fechas.add(fecha.toString());
fechas.add(fecha2.toString());
noticias=noticiaRepository.findByKeyFechaPublicacionAndKeyFechaPublicacion(fecha, fecha2);
for(Noticia noticia : noticias) {
NoticiaRespuestaDto noticiaRes= new NoticiaRespuestaDto();
noticiaRes.setNk(noticia.getNk());
noticiaRes.setComunicador(noticia.getComunicador());
noticiaRes.setTipoNoticia(noticia.getTipoNoticia());
noticiaRes.setDescripcion(noticia.getDescripcion());
noticiaRes.setEvidencia(evidenciaRepository.findKeyTituloNoticia(noticia.getNk().getTituloNoticia()));
noticiasRes.add(noticiaRes);
}
if(noticiasRes == null || noticiasRes.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}else {
return new ResponseEntity<>(noticiasRes,HttpStatus.OK);
}
}
@ResponseStatus(HttpStatus.OK)
@GetMapping("/noticias")
public ResponseEntity> getNoticiasDiaActual(){
List fechas=new ArrayList();
List noticias=new ArrayList();
List noticiasRes = new ArrayList();
LocalDateTime fechaHora =LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0));
LocalDateTime fechaHora2=fechaHora.plusDays(1);
noticias=noticiaRepository.findByKeyFechaPublicacionAndKeyFechaPublicacion(fechaHora, fechaHora2);
for(Noticia noticia : noticias) {
NoticiaRespuestaDto noticiaRes= new NoticiaRespuestaDto();
noticiaRes.setNk(noticia.getNk());
noticiaRes.setComunicador(noticia.getComunicador());
noticiaRes.setTipoNoticia(noticia.getTipoNoticia());
noticiaRes.setDescripcion(noticia.getDescripcion());
noticiaRes.setEvidencia(evidenciaRepository.findKeyTituloNoticia(noticia.getNk().getTituloNoticia()));
noticiasRes.add(noticiaRes);
}
if(noticiasRes == null || noticiasRes.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}else {
return new ResponseEntity<>(noticiasRes,HttpStatus.OK);
}
}
}
Creamos la clase EvidenciaController
package com.tutosoftware.divulgadorapi.controller;
import java.io.File;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.tutosoftware.divulgadorapi.domain.Evidencia;
import com.tutosoftware.divulgadorapi.dto.EvidenciaDto;
import com.tutosoftware.divulgadorapi.service.EvidenciaService;
@RestController
@RequestMapping(value="/api")
@CrossOrigin("*")
public class EvidenciaController {
@Autowired
private EvidenciaService evidenciaService;
@PostMapping("/uploadToGoogleDrive")
public Object handleFileUpload(@RequestParam("file") MultipartFile file,@RequestParam("titulo")
String tituloNoticia,@RequestParam("fecha") String fechaPublicacion,
@RequestParam("comunicador") String comunicador) throws IOException, GeneralSecurityException {
System.out.println(tituloNoticia);
System.out.println(fechaPublicacion);
System.out.println(comunicador);
DateTimeFormatter formatter= DateTimeFormatter.ISO_LOCAL_DATE_TIME;
LocalDateTime fecha = LocalDateTime.parse(fechaPublicacion, formatter);
EvidenciaDto evidenciaDto=new EvidenciaDto();
evidenciaDto.setTituloNoticia(tituloNoticia);
evidenciaDto.setFechaPublicacion(fecha);
evidenciaDto.setComunicador(comunicador);
if (file.isEmpty()) {
return "FIle is empty";
}
String[] fileFrags = file.getOriginalFilename().split("\\.");
String extension = fileFrags[fileFrags.length-1];
String ext="."+extension;
System.out.println("La extension es:"+ext);
File tempFile = File.createTempFile("temp",ext);
file.transferTo(tempFile);
Evidencia evidencia= evidenciaService.uploadImageToDrive(tempFile,evidenciaDto);
System.out.println(evidencia);
return evidencia;
}
}