Controller

Para crear nuestros servicios creamos el paquete com.tutosoftware.manager.controller
Creamos la clase UsuarioController
 
       
  package com.tutosoftware.manager.controller;

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.PutMapping;
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.manager.model.Usuario;
import com.tutosoftware.manager.service.UsuarioService;

@RestController
@RequestMapping(value="/api/v1")
@CrossOrigin(origins= {"*"})
public class UsuarioController {
	
	@Autowired
	private UsuarioService usuarioService;
	
	
	@GetMapping("/usuario/{email}")
	public ResponseEntity<Usuario> getUsuarioById(@PathVariable("email") String email){
		Usuario usuario= usuarioService.getUsuario(email).orElseThrow();
		return new ResponseEntity<Usuario>(usuario, HttpStatus.OK);
	}
	
	@PostMapping("/usuario")
	@ResponseStatus(HttpStatus.CREATED)
	public ResponseEntity<?> registrarUsuario(@RequestBody Usuario usuario){
		
		usuarioService.crearUsuario(usuario);
		Map<String,Object> response=new HashMap<>();
		
		response.put("mensaje","El usuario ha sido creado con exito");
		
		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
		
		
	}
	
	@GetMapping("/usuario")
	public List<Usuario> getusuarios(){
		return usuarioService.listAll();
	}
	
	@PutMapping("/usuario/{email}")
	@ResponseStatus(HttpStatus.CREATED)
	public ResponseEntity<?> updateUsuario(@RequestBody Usuario usuario,@PathVariable String email){
		
		Optional<Usuario> usuarioData = usuarioService.getUsuario(email);
		
		  Map<String,Object> response = new HashMap<>();

		  if (usuarioData.isPresent()) {
		    Usuario _usuario = usuarioData.get();
		    _usuario.setNombre(usuario.getNombre());
		    _usuario.setApellidoPaterno(usuario.getApellidoPaterno());
		    _usuario.setApellidoMaterno(usuario.getApellidoMaterno());
		    _usuario.setContrasena(usuario.getContrasena());
		    _usuario.setRol(usuario.getRol());
		    
		    usuarioService.actualizarUsuario(_usuario);
		    
		    return new ResponseEntity<>(response, HttpStatus.CREATED);
		  } else {
		    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
		  }
		
	}
	
	@DeleteMapping("/usuario/{email}")
	public ResponseEntity<?> delete(@PathVariable String email){
		Map<String,Object> response = new HashMap<>();
		
		usuarioService.eliminarUsuario(email);
		
		response.put("mensaje","El usuario se ha eliminado con exito");
		
		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
				
		
	}
	

}

		   
		   
	     
       

Creamos la clase ClienteController
 
       
	package com.tutosoftware.manager.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.manager.model.Cliente;
import com.tutosoftware.manager.service.ClienteService;

@RestController
@RequestMapping(value="/api/v1")
@CrossOrigin(origins= {"*"})
public class ClienteController {
	
	@Autowired
	ClienteService clienteService;
	
	
	@GetMapping("/cliente/{id}")
	public ResponseEntity<Cliente> getClienteById(@PathVariable("id") Long id){
		Cliente cliente= clienteService.getCliente(id).orElseThrow();
		return new ResponseEntity<Cliente>(cliente, HttpStatus.OK);
	}
	
	@PostMapping("/cliente")
	@ResponseStatus(HttpStatus.CREATED)
	public ResponseEntity<?> registrarCliente(@RequestBody Cliente cliente){
		
		clienteService.crearCliente(cliente);
		Map<String,Object> response=new HashMap<>();
		
		response.put("mensaje","El cliente ha sido creado con exito");
		
		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
		
		
	}
	
	@GetMapping("/cliente")
	public List<Cliente> getClientes(){
		return clienteService.listAll();
	}
	
	
	@DeleteMapping("/cliente/{id}")
	public ResponseEntity<?> delete(@PathVariable Long id){
		Map<String,Object> response = new HashMap<>();
		
		clienteService.eliminarCliente(id);
		
		response.put("mensaje","El cliente se ha eliminado con exito");
		
		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
				
		
	}
	
	
	


}	   
		   
	   
       

Creamos la clase ProyectoController
 
       	   
	package com.tutosoftware.manager.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.manager.model.Proyecto;
import com.tutosoftware.manager.service.ProyectoService;

@RestController
@RequestMapping(value="/api/v1")
@CrossOrigin(origins= {"*"})
public class ProyectoController {
	
	@Autowired
	ProyectoService proyectoService;
	
	
	@GetMapping("/proyecto/{id}")
	public ResponseEntity<Proyecto> getProyectoById(@PathVariable("id") Long id){
		Proyecto proyecto = proyectoService.getProyecto(id).orElseThrow();
		return new ResponseEntity<Proyecto>(proyecto, HttpStatus.OK);
	}
	
	@PostMapping("/proyecto")
	@ResponseStatus(HttpStatus.CREATED)
	public ResponseEntity<?> registrarProyecto(@RequestBody Proyecto proyecto){
		
		proyectoService.crearProyecto(proyecto);
		Map<String,Object> response=new HashMap<>();
		
		response.put("mensaje","El proyecto ha sido creado con exito");
		
		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
		
		
	}
	
	
	
	
	@GetMapping("/proyecto")
	public List<Proyecto> getProyectos(){
		return proyectoService.listAll();
	}
	
	
	@DeleteMapping("/proyecto/{id}")
	public ResponseEntity<?> delete(@PathVariable Long id){
		Map<String,Object> response = new HashMap<>();
		
		proyectoService.eliminarProyecto(id);
		
		response.put("mensaje","El proyecto se ha eliminado con exito");
		
		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
				
		
	}

}
	         
    
      
       
       

Creamos la clase ActividadController
 
       
     package com.tutosoftware.manager.controller;

import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.manager.model.Actividad;
import com.tutosoftware.manager.service.ActividadService;

@RestController
@RequestMapping(value="/api/v1")
@CrossOrigin(origins= {"*"})
public class ActividadController {
	
	@Autowired
	ActividadService actividadService;
	
	
	//http://localhost:8080/mi-ruta?param1=valor1¶m2=123
	@GetMapping("/actividad/{email}/{fecha}")
	public List<Actividad> getActividades(@PathVariable(name="email") String email,@PathVariable(name="fecha") Date fecha){
		
		Calendar calendario = Calendar.getInstance(); // Crea un objeto Calendar
        calendario.setTime(fecha); // Asigna la fecha del objeto Date al Calendar

        int mes = calendario.get(Calendar.MONTH) + 1; // Obtiene el mes (0-indexed), sumarle 1
        int anio = calendario.get(Calendar.YEAR); 
		
		
		List<Actividad> actividades = actividadService.listActividad(email,anio,mes);
        
        return actividades;
        
      } 
	@GetMapping("/actividad/{email}/{fecha}/{proyecto}")
	public List<Actividad> getActividadesProyecto(@PathVariable(name="email") String email,@PathVariable(name="fecha") Date fecha,
			@PathVariable(name="proyecto")String proyecto){
		
		
		Calendar calendario = Calendar.getInstance(); // Crea un objeto Calendar
        calendario.setTime(fecha); // Asigna la fecha del objeto Date al Calendar

        int mes = calendario.get(Calendar.MONTH) + 1; // Obtiene el mes (0-indexed), sumarle 1
        int anio = calendario.get(Calendar.YEAR); 
        
        List<Actividad> actividades = actividadService.listActividadUserProyectoFecha(email, proyecto,
        		anio, mes);
        
        return actividades;
		
	}
	
	
	
	@PostMapping("/actividad")
  	@ResponseStatus(HttpStatus.CREATED)
  	public ResponseEntity<?> registrarActividad(@RequestBody Actividad actividad){
  		
  		actividadService.crearActividad(actividad);
  		Map<String,Object> response=new HashMap<>();
  		
  		response.put("mensaje","La actividad ha sido creada con exito");
  		
  		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
  		
  		
  	}
	
      @DeleteMapping("/actividad/{id}")
  	public ResponseEntity<?> delete(@PathVariable Long id){
  		Map<String,Object> response = new HashMap<>();
  		
  		actividadService.eliminarActividad(id);
  		
  		response.put("mensaje","El proyecto se ha eliminado con exito");
  		
  		return new ResponseEntity<Map<String,Object>>(response,HttpStatus.CREATED);
  				
  		
  	}
	
	

}