package com.nisum.employeeservice.controller;

import com.nisum.employeeservice.model.Employee;
import com.nisum.employeeservice.repository.EmployeeRepository;
import com.nisum.employeeservice.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/api/v1")
public class EmployeeController {

  @Autowired EmployeeService employeeService;
  @Autowired
  EmployeeRepository empRepo;

  @GetMapping("/employees")
  public List<Employee> getAllEmployees() {
    return employeeService.findAllEmployees();
  }
  
  @GetMapping("/employees/{id}")
  public Employee findEmployeeById(@PathVariable long id) {
	  return employeeService.findEmployeeById(id);
  }

  @PostMapping("/employees")
  public Employee createEmployee(@RequestBody Employee employee) {
    return employeeService.addEmployee(employee);
  }
  
  @DeleteMapping("/employees/{id}")
  public void deleteEmployee(@PathVariable long id) {
	  employeeService.deleteEmployeeById(id);
  }
  
  @PutMapping("/employees/{id}")
  public void updateEmployee(@PathVariable long id, Employee newEmp) {
    Employee old = findEmployeeById(id);
    old.setFirstName(newEmp.getFirstName());
    old.setFirstName(newEmp.getLastName());
    empRepo.save(old);
  }
}