Controller

A continuación vamos a crear las clases con el controller, creamos el paquete com.tutosoftware.coapi.controller
En este paquete creamos la clase UsuarioController
 
  
   
 package com.tutosoftware.coapi.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.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.coapi.domain.Usuario;
import com.tutosoftware.coapi.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(),usuario.getRol()));
			return new ResponseEntity<Usuario>(_usuario, HttpStatus.CREATED);
		}catch(Exception e) {
			
			response.put("mensaje","El usuario no ha sido creado");
			
			return new ResponseEntity<Map<String,Object>>(response, HttpStatus.INTERNAL_SERVER_ERROR);
		}
		
		
	}
	
	
	@PutMapping("/usuario/{email}")
	@ResponseStatus(HttpStatus.OK)
	public ResponseEntity<Usuario> updateTutorial(@PathVariable("email") String email, @RequestBody Usuario usuario) {
	  Optional<Usuario> usuarioData = usuarioRepository.findById(email);

	  if (usuarioData.isPresent()) {
	    Usuario _usuario = usuarioData.get();
	    _usuario.setNombre(usuario.getNombre());
	    _usuario.setApellidoPaterno(usuario.getApellidoPaterno());
	    _usuario.setApellidoMaterno(usuario.getApellidoMaterno());
	    _usuario.setPassword(usuario.getPassword());
	    _usuario.setRol(usuario.getRol());
	    
	    
	    
	    return new ResponseEntity<>(usuarioRepository.save(_usuario), HttpStatus.OK);
	  } else {
	    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
	  }
	}
	
	@DeleteMapping("/usuario/{email}")
	@ResponseStatus(HttpStatus.NO_CONTENT)
	public void deleteUsuario(@PathVariable String email) {
		usuarioRepository.deleteById(email);
	}
	

}
 
                 
         
   

Creamos la clase PisoController
 
  
  
  package com.tutosoftware.coapi.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.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.coapi.domain.Piso;
import com.tutosoftware.coapi.repository.PisoRepository;

@RestController
@RequestMapping(value="/api")
@CrossOrigin("*")
public class PisoController {
	
	@Autowired
	PisoRepository pisoRepository;
	
	
	@ResponseStatus(HttpStatus.OK)
    @GetMapping("/piso/{clave}")
	public ResponseEntity<Piso> getPisoById(@PathVariable("clave") String  clave) {
	  Optional<Piso> pisoData = pisoRepository.findById(clave);
   
	
	  
	  
	  if (pisoData.isPresent()) {
	    return new ResponseEntity<>(pisoData.get(), HttpStatus.OK);
	  } else {
	    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
	  }
	}
	
	
	@ResponseStatus(HttpStatus.OK)
	@GetMapping("/pisos")
	public ResponseEntity<?> getPisoAll(){
		List<Piso> pisos = new ArrayList<Piso>();
		
		
		 pisos = pisoRepository.findAll();
		
		
		
		return new ResponseEntity<>(pisos,HttpStatus.OK);
		
		
	}
	
	
	
	@PostMapping("/piso")
	@ResponseStatus(HttpStatus.CREATED)
	public ResponseEntity<?> crearPiso(@RequestBody Piso piso){
		
		Map<String,Object> response = new HashMap<>();

		try {
			Piso _piso= pisoRepository.save(new Piso(piso.getClave(),piso.getDescripcion()));
			return new ResponseEntity<Piso>(_piso, HttpStatus.CREATED);
		}catch(Exception e) {
			
			response.put("mensaje","El piso no ha sido creado");
			
			return new ResponseEntity<Map<String,Object>>(response, HttpStatus.INTERNAL_SERVER_ERROR);
		}
		
		
	}
	
	
	@PutMapping("/piso/{clave}")
	@ResponseStatus(HttpStatus.OK)
	public ResponseEntity<Piso> updatePiso(@PathVariable("clave") String clave, @RequestBody Piso piso) {
	  Optional<Piso> pisoData = pisoRepository.findById(clave);

	  if (pisoData.isPresent()) {
	    Piso _piso = pisoData.get();
	    _piso.setClave(piso.getClave());
	    _piso.setDescripcion(piso.getDescripcion());
	    	    
	    
	    
	    return new ResponseEntity<>(pisoRepository.save(_piso), HttpStatus.OK);
	  } else {
	    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
	  }
	}
	
	
	@DeleteMapping("/piso/{clave}")
	@ResponseStatus(HttpStatus.NO_CONTENT)
	public void deleteUsuario(@PathVariable String clave) {
		pisoRepository.deleteById(clave);
	}
	
	

}
  
  
  
     
   

Creamos la clase EmpresaController
 
  
  
  package com.tutosoftware.coapi.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.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.coapi.domain.Empresa;
import com.tutosoftware.coapi.repository.EmpresaRepository;

@RestController
@RequestMapping(value="/api")
@CrossOrigin("*")
public class EmpresaController {
	
	@Autowired
	EmpresaRepository empresaRepository;
	
	@ResponseStatus(HttpStatus.OK)
    @GetMapping("/empresa/{clave}")
	public ResponseEntity<Empresa> getEmpresaById(@PathVariable("clave") String  clave) {
	  Optional<Empresa> empresaData = empresaRepository.findById(clave);
   
	
	  
	  
	  if (empresaData.isPresent()) {
	    return new ResponseEntity<>(empresaData.get(), HttpStatus.OK);
	  } else {
	    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
	  }
	}
	
	
	
	@ResponseStatus(HttpStatus.OK)
	@GetMapping("/empresas")
	public ResponseEntity<?> getEmpresaAll(){
		List<Empresa> empresas = new ArrayList<Empresa>();
		
		
		 empresas = empresaRepository.findAll();
		
	
		
		return new ResponseEntity<>(empresas,HttpStatus.OK);
		
		
	}
	
	
	@PostMapping("/empresa")
	@ResponseStatus(HttpStatus.CREATED)
	public ResponseEntity<?> crearEmpresa(@RequestBody Empresa empresa){
		
		Map<String,Object> response = new HashMap<>();

		try {
			Empresa _empresa= empresaRepository.save(new Empresa(empresa.getClave(),empresa.getNombre(),
					empresa.getExtension(),empresa.getUbicacion()));
			return new ResponseEntity<Empresa>(_empresa, HttpStatus.CREATED);
		}catch(Exception e) {
			
			response.put("mensaje","La empresa no ha sido creada");
			
			return new ResponseEntity<Map<String,Object>>(response, HttpStatus.INTERNAL_SERVER_ERROR);
		}
		
		
	}
	
	
	@PutMapping("/empresa/{clave}")
	@ResponseStatus(HttpStatus.OK)
	public ResponseEntity<Empresa> updatePiso(@PathVariable("clave") String clave, @RequestBody Empresa empresa) {
	  Optional<Empresa> empresaData = empresaRepository.findById(clave);

	  if (empresaData.isPresent()) {
	    Empresa _empresa = empresaData.get();
	    _empresa.setClave(empresa.getClave());
	    _empresa.setNombre(empresa.getNombre());
	    _empresa.setExtension(empresa.getExtension());
	    _empresa.setUbicacion(empresa.getUbicacion());
	    	    
	    
	    
	    return new ResponseEntity<>(empresaRepository.save(_empresa), HttpStatus.OK);
	  } else {
	    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
	  }
	}
	
	
	@DeleteMapping("/empresa/{clave}")
	@ResponseStatus(HttpStatus.NO_CONTENT)
	public void deleteEmpresa(@PathVariable String clave) {
		empresaRepository.deleteById(clave);
	}
	

}
  
  
  
    
   

Creamos la clase VisitantesController
 
  
  
 package com.tutosoftware.coapi.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.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.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.coapi.domain.Visitantes;
import com.tutosoftware.coapi.dto.VisitantesDTO;
import com.tutosoftware.coapi.repository.VisitantesRepository;

@RestController
@RequestMapping(value="/api")
@CrossOrigin("*")
public class VisitantesController {
	
	@Autowired
	VisitantesRepository visitantesRepository;
	
	
	@PostMapping("/visitante")
	@ResponseStatus(HttpStatus.CREATED)
	public ResponseEntity<?> crearVisitante(@RequestBody VisitantesDTO visitantes){
		
		Map<String,Object> response = new HashMap<>();
		
		
		      
		      
		      
		      

		try {
			Visitantes visitante = new Visitantes();
		      LocalDateTime fechaEntrada =LocalDateTime.now();
		      
		      
		     
		      
		      
		      //System.out.println(visitantes.getFoto());
		      
		     visitante.setIdVisitante(visitantes.getIdVisitante());
		     visitante.setGafete(visitantes.getGafete()); 
		     
		      LocalDateTime fechaHora =LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0));
		      visitante.setFechaEntrada(fechaEntrada);
		     
		      
		      
		      visitante.setNombre(visitantes.getNombre());
		      visitante.setApellidoPaterno(visitantes.getApellidoPaterno());
		      visitante.setApellidoMaterno(visitantes.getApellidoMaterno());
		      visitante.setIdentificacion(visitantes.getIdentificacion());
		      visitante.setNumIdentificacion(visitantes.getNumIdentificacion());
		      visitante.setPiso(visitantes.getPiso());
		      visitante.setEmpresa(visitantes.getEmpresa());
		      visitante.setAsunto(visitantes.getAsunto());
		      visitante.setaQuienVisita(visitantes.getaQuienVisita());
		      visitante.setFoto(visitantes.getFoto());
		      visitante.setFechaSalida(fechaHora);
		      visitante.setSalida(false);
			Visitantes _visitantes= visitantesRepository.save(visitante);
			return new ResponseEntity<Visitantes>(_visitantes, HttpStatus.CREATED);
		}catch(Exception e) {
			e.printStackTrace();
			response.put("mensaje","El visitante no ha sido creado");
			
			return new ResponseEntity<Map<String,Object>>(response, HttpStatus.INTERNAL_SERVER_ERROR);
		}
		
		
	}
	
	
	
	
	@ResponseStatus(HttpStatus.OK)
	@GetMapping("/visitantes")
	public ResponseEntity<?> getVisitantesAll(){
		List<Visitantes> v = new ArrayList<Visitantes>();
		
       LocalDateTime fechaHora =LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0));
		
		LocalDateTime fechaHora2=fechaHora.plusDays(1);
		
		
		
		
		
		
		 v = visitantesRepository.findByKeyFechaEntradaAndKeyFechaEntrada(fechaHora, fechaHora2);
		
				
		return new ResponseEntity<>(v,HttpStatus.OK);
		
		
	}
	
	
	@ResponseStatus(HttpStatus.OK)
	@GetMapping("/visitantes/{fecha}")
	public ResponseEntity<?> getVisitantesforDay(@PathVariable("fecha") String  fecha1){
		List<Visitantes> v = new ArrayList<Visitantes>(); 
		
		DateTimeFormatter format = DateTimeFormatter.ofPattern("dd-MM-yyyy");
		LocalDate localDate =  LocalDate.parse(fecha1, format);
		
		LocalDateTime fecha =LocalDateTime.of(localDate, LocalTime.of(0, 0, 0));
		
		//DateTimeFormatter formatter= DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
		 
		   //LocalDateTime fecha = LocalDateTime.parse(fecha1, formatter);
			
		   
		   
		   
		   
		    LocalDateTime fecha2=fecha.plusDays(1);
			
			
			

		    v = visitantesRepository.findByKeyFechaEntradaAndKeyFechaEntrada(fecha, fecha2);
			
			
			return new ResponseEntity<>(v,HttpStatus.OK);
		    
		    
		    
		    
		    
		    
		    
		    
		    
		    
		
	}
	
	
	
	@PutMapping("/visitantes")
	@ResponseStatus(HttpStatus.OK)
	public ResponseEntity<?> registrarSalida(@RequestBody String idVisitante) {
	     	    	    
	    if(idVisitante != null) {
	    	
	    	LocalDateTime fechaSalida =LocalDateTime.now();
	    	
	    	visitantesRepository.updateKeyFechaSalidaAndSalida(fechaSalida,true, idVisitante);
	    	
	    
	    return new ResponseEntity<>(idVisitante, HttpStatus.OK);
	  } else {
	    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
	  }
	}
	
	
	
	
	
	
	

}