diff --git a/back/Controllers/Controllers/ChangeRecordController.cs b/back/Controllers/Controllers/ChangeRecordController.cs new file mode 100644 index 0000000..8ae218a --- /dev/null +++ b/back/Controllers/Controllers/ChangeRecordController.cs @@ -0,0 +1,86 @@ +using Contracts.DTO; +using Contracts.SearchModels; +using Contracts.Services; +using Contracts.ViewModels; +using Microsoft.AspNetCore.Mvc; +using Services.Support.Exceptions; + +namespace Controllers.Controllers; + +[Route("api/[controller]")] +[ApiController] +public class ChangeRecordController : ControllerBase +{ + private readonly IChangeRecordService _changeRecordService; + + public ChangeRecordController(IChangeRecordService changeRecordService) + { + _changeRecordService = changeRecordService; + } + + [HttpPost] + public async Task> CreateChangeRecord( + [FromBody] ChangeRecordDto dto) + { + try + { + var record = await _changeRecordService.Create(dto); + return CreatedAtAction(nameof(GetChangeRecords), record); + } + catch (Exception ex) + { + return StatusCode(500, ex.Message); + } + } + + [HttpGet] + public async Task>> GetChangeRecords( + [FromQuery] ChangeRecordSearch search) + { + try + { + var records = await _changeRecordService.GetList(search); + return Ok(records); + } + catch (Exception ex) + { + return StatusCode(500, ex.Message); + } + } + + [HttpPatch] + public async Task> UpdateChangeRecord([FromBody] ChangeRecordDto dto) + { + try + { + var record = await _changeRecordService.Update(dto); + return Ok(record); + } + catch (EntityNotFoundException ex) + { + return NotFound(ex.Message); + } + catch (Exception ex) + { + return StatusCode(500, ex.Message); + } + } + + [HttpDelete] + public async Task DeleteChangeRecord([FromQuery] ChangeRecordSearch search) + { + try + { + var record = await _changeRecordService.Delete(search); + return Ok(record); + } + catch (EntityNotFoundException ex) + { + return NotFound(ex.Message); + } + catch (Exception ex) + { + return StatusCode(500, ex.Message); + } + } +} \ No newline at end of file diff --git a/back/Controllers/Controllers/SpendingGroupController.cs b/back/Controllers/Controllers/SpendingGroupController.cs index 36ad45b..635c06a 100644 --- a/back/Controllers/Controllers/SpendingGroupController.cs +++ b/back/Controllers/Controllers/SpendingGroupController.cs @@ -17,12 +17,16 @@ public class SpendingGroupController : ControllerBase { _spendingGroupService = spendingGroupService; } - [HttpGet("details")] + [HttpGet("{id}")] public async Task> GetSpendingGroup( + Guid id, [FromQuery] SpendingGroupSearch search) { try { + search ??= new(); + search.Id = id; + var group = await _spendingGroupService.GetDetails(search); return Ok(group); } @@ -74,6 +78,10 @@ public class SpendingGroupController : ControllerBase var group = await _spendingGroupService.Create(dto); return CreatedAtAction(nameof(GetSpendingGroup), new { id = group.Id }, group); } + catch (EntityNotFoundException ex) + { + return NotFound(ex.Message); + } catch (Exception ex) { return StatusCode(500, ex.Message); diff --git a/back/Controllers/Extensions/AddDomainServicesExt.cs b/back/Controllers/Extensions/AddDomainServicesExt.cs index 575d50a..97d9065 100644 --- a/back/Controllers/Extensions/AddDomainServicesExt.cs +++ b/back/Controllers/Extensions/AddDomainServicesExt.cs @@ -11,5 +11,7 @@ public static class AddDomainServicesExtension services.AddTransient(); services.AddTransient(); + + services.AddTransient(); } } \ No newline at end of file diff --git a/back/Controllers/Extensions/AddReposExt.cs b/back/Controllers/Extensions/AddReposExt.cs index d019ce0..9793b6e 100644 --- a/back/Controllers/Extensions/AddReposExt.cs +++ b/back/Controllers/Extensions/AddReposExt.cs @@ -11,5 +11,6 @@ public static class AddReposExtension { services.AddTransient(); services.AddTransient(); + services.AddTransient(); } } \ No newline at end of file