Files
aviq-second-boilerplate/BethanysPieShopHRM.Api/Controllers/EmployeeController.cs
T
2026-03-22 00:29:34 +01:00

101 lines
3.3 KiB
C#

using BethanysPieShopHRM.Api.Models;
using BethanysPieShopHRM.Shared.Domain;
using Microsoft.AspNetCore.Mvc;
namespace BethanysPieShopHRM.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class EmployeeController : Controller
{
private readonly IEmployeeRepository _employeeRepository;
private readonly IWebHostEnvironment _webHostEnvironment;
private readonly IHttpContextAccessor _httpContextAccessor;
public EmployeeController(IEmployeeRepository employeeRepository, IWebHostEnvironment webHostEnvironment, IHttpContextAccessor httpContextAccessor)
{
_employeeRepository = employeeRepository;
_webHostEnvironment = webHostEnvironment;
_httpContextAccessor = httpContextAccessor;
}
[HttpGet]
public IActionResult GetAllEmployees()
{
return Ok(_employeeRepository.GetAllEmployees());
}
[HttpGet("{id}")]
public IActionResult GetEmployeeById(int id)
{
return Ok(_employeeRepository.GetEmployeeById(id));
}
[HttpPost]
public IActionResult CreateEmployee([FromBody] Employee employee)
{
if (employee == null)
return BadRequest();
if (employee.FirstName == string.Empty || employee.LastName == string.Empty)
{
ModelState.AddModelError("Name/FirstName", "The name or first name shouldn't be empty");
}
if (!ModelState.IsValid)
return BadRequest(ModelState);
//handle image upload
string currenturl = _httpContextAccessor.HttpContext.Request.Host.Value;
var path = $"{_webHostEnvironment.WebRootPath}\\uploads\\{employee.ImageName}";
var filestream = System.IO.File.Create(path);
filestream.Write(employee.ImageContent, 0, employee.ImageContent.Length);
filestream.Close();
employee.ImageName = $"https://{currenturl}/uploads/{employee.ImageName}";
var createdEmployee = _employeeRepository.AddEmployee(employee);
return Created("employee", createdEmployee);
}
[HttpPut]
public IActionResult UpdateEmployee([FromBody] Employee employee)
{
if (employee == null)
return BadRequest();
if (employee.FirstName == string.Empty || employee.LastName == string.Empty)
{
ModelState.AddModelError("Name/FirstName", "The name or first name shouldn't be empty");
}
if (!ModelState.IsValid)
return BadRequest(ModelState);
var employeeToUpdate = _employeeRepository.GetEmployeeById(employee.EmployeeId);
if (employeeToUpdate == null)
return NotFound();
_employeeRepository.UpdateEmployee(employee);
return NoContent(); //success
}
[HttpDelete("{id}")]
public IActionResult DeleteEmployee(int id)
{
if (id == 0)
return BadRequest();
var employeeToDelete = _employeeRepository.GetEmployeeById(id);
if (employeeToDelete == null)
return NotFound();
_employeeRepository.DeleteEmployee(id);
return NoContent();//success
}
}
}