Files
familytree/API/FamilyTreeAPI/Controllers/PersonController.cs
T
2025-08-10 22:01:36 +10:00

111 lines
3.2 KiB
C#

using FamilyTreeAPI.Entities;
using FamilyTreeAPI.Interface;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
namespace FamilyTreeAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class PersonController : ControllerBase
{
private readonly IPerson _repo;
public PersonController(IPerson repo)
{
_repo = repo;
}
[HttpPost("[action]")]
public async Task<IActionResult> UploadImage(IFormFile file)
{
var keys = Request.Form;
var files = Request.Form.Files;
ResultModel<string> ret = new();
if (files.Count > 0)
{
StringValues familyId = "";
keys.TryGetValue("familyId", out familyId);
UploadCriteria criteria = new();
criteria.File = file;
criteria.FamilyId = familyId;
criteria.FileName = file.FileName;
ret = await _repo.UploadImage(criteria);
}
return Ok(ret);
}
//DeleteUploadFile
[HttpPost("[action]")]
public ActionResult DeleteUploadFile(DeleteFileCriteria criteria)
{
ResultModel<int> ret = new();
if (!string.IsNullOrEmpty(criteria.Filename))
{
ret = _repo.DeleteUploadFile(criteria);
}
return Ok(ret);
}
[HttpPost("[action]")]
public async Task<IActionResult> SearchPerson(PersonCriteria criteria)
{
var list = await _repo.GetPerson(criteria);
return Ok(list);
}
[HttpPost("[action]")]
public async Task<IActionResult> GetChildress(ChildCriteria criteria)
{
var list = await _repo.GetChildren(criteria);
return Ok(list);
}
[HttpPost("[action]")]
public async Task<IActionResult> GetFamilyTreeBy(FamilyCriteria criteria)
{
var list = await _repo.GetFamilyTreeBy(criteria);
return Ok(list);
}
[HttpGet("[action]/{id}")]
public async Task<IActionResult> GetByPersonFamily(int id)
{
var list = await _repo.GetByFamilyAsync(id);
return Ok(list);
}
[HttpGet("[action]/{id}")]
public async Task<IActionResult> GetById(int id)
{
var list = await _repo.GetByIdAsync(id);
return Ok(list);
}
[HttpPost("[action]")]
public async Task<IActionResult> DeleteById(DeleteCriteria<int> criteria)
{
var list = await _repo.DeleteAsync(criteria.Id);
return Ok(list);
}
[HttpPost("[action]")]
public async Task<IActionResult> SavePerson([FromBody] PersonForSave model)
{
//var currentUser = (User?)(HttpContext.Items["User"]);
//if (null == currentUser)
// return Unauthorized(new { message = "Unauthorized" });
var response = await _repo.SaveAsync(model);
return Ok(response);
}
}
}