Controller

A continuación vamos a crear las clases con el controller, creamos el paquete com.tutosoftware.divulgadorapi.controller
En 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;
	    }

}