76 lines
2.0 KiB
C#
76 lines
2.0 KiB
C#
|
using FirmTracker_Server.nHibernate.Reports;
|
|||
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
using System.Text.Json.Serialization;
|
|||
|
using System.Text.Json;
|
|||
|
using NuGet.Protocol;
|
|||
|
|
|||
|
namespace FirmTracker_Server.Controllers
|
|||
|
{
|
|||
|
[Route("api/[controller]")]
|
|||
|
[ApiController]
|
|||
|
public class ReportController : ControllerBase
|
|||
|
{
|
|||
|
private readonly ReportCRUD _reportCRUD;
|
|||
|
|
|||
|
public ReportController()
|
|||
|
{
|
|||
|
_reportCRUD = new ReportCRUD();
|
|||
|
}
|
|||
|
[HttpPost]
|
|||
|
[ProducesResponseType(201)] //Created
|
|||
|
[ProducesResponseType(400)] //Bad request
|
|||
|
public IActionResult CreateReport([FromBody] Report.DateRangeDto dateRange)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
if (dateRange == null || dateRange.FromDate >= dateRange.ToDate)
|
|||
|
{
|
|||
|
return BadRequest("Invalid date range.");
|
|||
|
}
|
|||
|
|
|||
|
var report = _reportCRUD.AddReport(dateRange.FromDate, dateRange.ToDate);
|
|||
|
return CreatedAtAction(nameof(GetReport), new { id = report.Id }, report); // to change?
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return BadRequest(ex.Message);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet("{id}")]
|
|||
|
[ProducesResponseType(200)]
|
|||
|
[ProducesResponseType(404)]
|
|||
|
public IActionResult GetReport(int id)
|
|||
|
{
|
|||
|
var report = _reportCRUD.GetReport(id);
|
|||
|
if (report == null)
|
|||
|
return NotFound();
|
|||
|
|
|||
|
var options = new JsonSerializerOptions
|
|||
|
{
|
|||
|
ReferenceHandler = ReferenceHandler.Preserve // Obsługa cykli obiektów
|
|||
|
};
|
|||
|
|
|||
|
var json = JsonSerializer.Serialize(report, options);
|
|||
|
return Ok(json);
|
|||
|
}
|
|||
|
|
|||
|
[HttpGet]
|
|||
|
[ProducesResponseType(200)]
|
|||
|
[ProducesResponseType(404)]
|
|||
|
public IActionResult GetAllReports()
|
|||
|
{
|
|||
|
var reports = _reportCRUD.GetAllReports();
|
|||
|
if (reports == null)
|
|||
|
return NotFound();
|
|||
|
|
|||
|
return Ok(reports);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|