Skip to content

Commit

Permalink
Merge pull request #44 from Brunobento1990/develop
Browse files Browse the repository at this point in the history
fix
  • Loading branch information
Brunobento1990 authored Oct 27, 2024
2 parents ef316db + f5c56bb commit 88529b8
Show file tree
Hide file tree
Showing 26 changed files with 285 additions and 60 deletions.
50 changes: 7 additions & 43 deletions OpenAdm.Api/Controllers/FaturaController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,55 +17,19 @@ namespace OpenAdm.Api.Controllers;
[AutenticaParceiro]
public class FaturaController : ControllerBase
{
private readonly IParcelaService _faturaContasAReceberService;
private readonly IFaturaService _faturaService;

public FaturaController(IParcelaService faturaContasAReceberService)
public FaturaController(IFaturaService faturaService)
{
_faturaContasAReceberService = faturaContasAReceberService;
_faturaService = faturaService;
}

[HttpPost("paginacao")]
[HttpPost("criar")]
[ProducesResponseType<PaginacaoViewModel<FaturaViewModel>>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> Paginacao(PaginacaoParcelaDto paginacaoFaturaAReceberDto)
public async Task<IActionResult> Criar(FaturaCriarAdmDto faturaCriarAdmDto)
{
var paginacaoViewModel = await _faturaContasAReceberService.PaginacaoAsync(paginacaoFaturaAReceberDto);
return Ok(paginacaoViewModel);
}

[HttpGet("pedido")]
[ProducesResponseType<IList<FaturaViewModel>>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> ByPedido([FromQuery] Guid pedidoId, [FromQuery] StatusParcelaEnum statusFatura)
{
var faturas = await _faturaContasAReceberService.GetByPedidoIdAsync(pedidoId, statusFatura);
return Ok(faturas);
}

[HttpGet("get-by-id")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> GetById([FromQuery] Guid id)
{
var fatura = await _faturaContasAReceberService.GetByIdAsync(id);
return Ok(fatura);
}

[HttpPut("pagar")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> Pagar(PagarParcelaDto pagarFaturaAReceberDto)
{
var fatura = await _faturaContasAReceberService.PagarAsync(pagarFaturaAReceberDto);
return Ok(fatura);
}

[HttpPut("edit")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> Edit(FaturaEdit faturaAReceberEdit)
{
var fatura = await _faturaContasAReceberService.EditAsync(faturaAReceberEdit);
return Ok(fatura);
var result = await _faturaService.CriarAdmAsync(faturaCriarAdmDto);
return Ok(result);
}
}
71 changes: 71 additions & 0 deletions OpenAdm.Api/Controllers/ParcelaController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
using Microsoft.AspNetCore.Mvc;
using OpenAdm.Api.Attributes;
using OpenAdm.Application.Dtos.FaturasDtos;
using OpenAdm.Application.Dtos.Response;
using OpenAdm.Application.Interfaces;
using OpenAdm.Application.Models.ContasAReceberModel;
using OpenAdm.Domain.Enuns;
using OpenAdm.Domain.Model;
using OpenAdm.Infra.Paginacao;

namespace OpenAdm.Api.Controllers;

[ApiController]
[Route("parcela")]
[IsFuncionario]
[AutenticaParceiro]
[Autentica]
public class ParcelaController : ControllerBase
{
private readonly IParcelaService _parcelaService;

public ParcelaController(IParcelaService parcelaService)
{
_parcelaService = parcelaService;
}

[HttpPost("paginacao")]
[ProducesResponseType<PaginacaoViewModel<FaturaViewModel>>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> Paginacao(PaginacaoParcelaDto paginacaoFaturaAReceberDto)
{
var paginacaoViewModel = await _parcelaService.PaginacaoAsync(paginacaoFaturaAReceberDto);
return Ok(paginacaoViewModel);
}

[HttpGet("pedido")]
[ProducesResponseType<IList<FaturaViewModel>>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> ByPedido([FromQuery] Guid pedidoId, [FromQuery] StatusParcelaEnum statusFatura)
{
var faturas = await _parcelaService.GetByPedidoIdAsync(pedidoId, statusFatura);
return Ok(faturas);
}

[HttpGet("get-by-id")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> GetById([FromQuery] Guid id)
{
var fatura = await _parcelaService.GetByIdAsync(id);
return Ok(fatura);
}

[HttpPut("pagar")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> Pagar(PagarParcelaDto pagarFaturaAReceberDto)
{
var fatura = await _parcelaService.PagarAsync(pagarFaturaAReceberDto);
return Ok(fatura);
}

[HttpPut("edit")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> Edit(FaturaEdit faturaAReceberEdit)
{
var fatura = await _parcelaService.EditAsync(faturaAReceberEdit);
return Ok(fatura);
}
}
9 changes: 9 additions & 0 deletions OpenAdm.Api/Controllers/UsuarioController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,15 @@ public async Task<IActionResult> GetContaAdm(Guid id)
return Ok(usuarioViewModel);
}

[Autentica]
[IsFuncionario]
[HttpPost("paginacao-drop-down")]
public async Task<IActionResult> PaginacaoDropDown(PaginacaoUsuarioDropDown paginacaoUsuarioDropDown)
{
var usuarioViewModel = await _usuarioService.PaginacaoDropDownAsync(paginacaoUsuarioDropDown);
return Ok(usuarioViewModel);
}

[Autentica]
[IsFuncionario]
[HttpGet("list")]
Expand Down
26 changes: 26 additions & 0 deletions OpenAdm.Application/Dtos/FaturasDtos/FaturaCriarAdmDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using OpenAdm.Domain.Enuns;
using OpenAdm.Domain.Exceptions;

namespace OpenAdm.Application.Dtos.FaturasDtos;

public class FaturaCriarAdmDto
{
public Guid UsuarioId { get; set; }
public Guid? PedidoId { get; set; }
public TipoFaturaEnum Tipo { get; set; }
public IList<ParcelaCriarAdmDto> Parcelas { get; set; } = [];

public void Validar()
{
if (Parcelas.Count == 0)
{
throw new ExceptionApi("Informe as parcelas!");
}

var temParcelaZerada = Parcelas.Any(x => x.Valor == 0);
if (temParcelaZerada)
{
throw new ExceptionApi("Não é possível informar parcelas com o valor zero!");
}
}
}
13 changes: 13 additions & 0 deletions OpenAdm.Application/Dtos/FaturasDtos/ParcelaCriarAdmDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using OpenAdm.Domain.Enuns;

namespace OpenAdm.Application.Dtos.FaturasDtos;

public class ParcelaCriarAdmDto
{
public DateTime DataDeVencimento { get; set; }
public int NumeroDaFatura { get; set; }
public MeioDePagamentoEnum? MeioDePagamento { get; set; }
public decimal Valor { get; set; }
public decimal? Desconto { get; set; }
public string? Observacao { get; set; }
}
2 changes: 2 additions & 0 deletions OpenAdm.Application/Interfaces/IFaturaService.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using OpenAdm.Application.Dtos.FaturasDtos;
using OpenAdm.Application.Models.ContasAReceberModel;
using OpenAdm.Application.Models.Pagamentos;
using OpenAdm.Domain.Enuns;

Expand All @@ -9,4 +10,5 @@ public interface IFaturaService
Task CriarContasAReceberAsync(CriarFaturaDto contasAReceberDto);
Task VerificarFechamentoAsync(Guid id);
Task<PagamentoViewModel> GerarPagamentoAsync(MeioDePagamentoEnum meioDePagamento, Guid pedidoId);
Task<FaturaViewModel> CriarAdmAsync(FaturaCriarAdmDto faturaCriarAdmDto);
}
1 change: 1 addition & 0 deletions OpenAdm.Application/Interfaces/IUsuarioService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ public interface IUsuarioService
Task<ResponseLoginUsuarioViewModel> UpdateUsuarioAsync(UpdateUsuarioDto updateUsuarioDto);
Task TrocarSenhaAsync(UpdateSenhaUsuarioDto updateSenhaUsuarioDto);
Task<PaginacaoViewModel<UsuarioViewModel>> PaginacaoAsync(PaginacaoUsuarioDto paginacaoUsuarioDto);
Task<IList<UsuarioViewModel>> PaginacaoDropDownAsync(PaginacaoUsuarioDropDown paginacaoUsuarioDropDown);
}
45 changes: 44 additions & 1 deletion OpenAdm.Application/Services/FaturaService.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using OpenAdm.Application.Dtos.FaturasDtos;
using OpenAdm.Application.Interfaces;
using OpenAdm.Application.Models.ContasAReceberModel;
using OpenAdm.Application.Models.Pagamentos;
using OpenAdm.Domain.Entities;
using OpenAdm.Domain.Enuns;
Expand All @@ -13,15 +14,57 @@ public sealed class FaturaService : IFaturaService
private readonly IFaturaRepository _contasAReceberRepository;
private readonly IPagamentoFactory _pagamentoFactory;
private readonly IUsuarioAutenticado _usuarioAutenticado;
private readonly IUsuarioService _usuarioService;

public FaturaService(
IFaturaRepository contasAReceberRepository,
IPagamentoFactory pagamentoFactory,
IUsuarioAutenticado usuarioAutenticado)
IUsuarioAutenticado usuarioAutenticado,
IUsuarioService usuarioService)
{
_contasAReceberRepository = contasAReceberRepository;
_pagamentoFactory = pagamentoFactory;
_usuarioAutenticado = usuarioAutenticado;
_usuarioService = usuarioService;
}

public async Task<FaturaViewModel> CriarAdmAsync(FaturaCriarAdmDto faturaCriarAdmDto)
{
_ = await _usuarioService.GetUsuarioByIdAdmAsync(id: faturaCriarAdmDto.UsuarioId);

var fatura = new Fatura(
id: Guid.NewGuid(),
dataDeCriacao: DateTime.Now,
dataDeAtualizacao: DateTime.Now,
numero: 0,
status: StatusFaturaEnum.Aberta,
usuarioId: faturaCriarAdmDto.UsuarioId,
pedidoId: faturaCriarAdmDto.PedidoId,
dataDeFechamento: null,
tipo: faturaCriarAdmDto.Tipo);

foreach (var parcelaDto in faturaCriarAdmDto.Parcelas)
{
fatura.Parcelas.Add(new Parcela(
id: Guid.NewGuid(),
dataDeCriacao: DateTime.Now,
dataDeAtualizacao: DateTime.Now,
numero: 0,
status: StatusParcelaEnum.Pendente,
dataDeVencimento: parcelaDto.DataDeVencimento,
numeroDaFatura: parcelaDto.NumeroDaFatura,
meioDePagamento: parcelaDto.MeioDePagamento,
valor: parcelaDto.Valor,
desconto: parcelaDto.Desconto,
observacao: parcelaDto.Observacao,
faturaId: fatura.Id,
dataDePagamento: null,
idExterno: null));
}

await _contasAReceberRepository.AddAsync(fatura);

return (FaturaViewModel)fatura;
}

public async Task CriarContasAReceberAsync(CriarFaturaDto contasAReceberDto)
Expand Down
4 changes: 2 additions & 2 deletions OpenAdm.Application/Services/ParcelaService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public async Task<ParcelaViewModel> EditAsync(FaturaEdit faturaAReceberEdit)

public async Task<IList<ParcelaPagaDashBoardModel>> FaturasDashBoardAsync()
{
var faturas = await _faturaContasAReceberRepository.SumMesesAsync();
var faturas = await _faturaContasAReceberRepository.SumTotalMesesAsync(TipoFaturaEnum.A_Receber);
var faturasPagaDashBoardModel = new List<ParcelaPagaDashBoardModel>();
foreach (var item in faturas)
{
Expand Down Expand Up @@ -99,7 +99,7 @@ public async Task<IList<ParcelaViewModel>> GetByPedidoIdAsync(Guid pedidoId, Sta
}

public Task<decimal> GetSumAReceberAsync()
=> _faturaContasAReceberRepository.SumAReceberAsync();
=> _faturaContasAReceberRepository.SumTotalAsync(TipoFaturaEnum.A_Receber);

public async Task<ParcelaViewModel> PagarAsync(PagarParcelaDto pagarFaturaAReceberDto)
{
Expand Down
11 changes: 11 additions & 0 deletions OpenAdm.Application/Services/UsuarioService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,15 @@ public async Task<ResponseLoginUsuarioViewModel> UpdateUsuarioAsync(UpdateUsuari

return new(usuarioViewModel, token, refreshToken);
}

public async Task<IList<UsuarioViewModel>> PaginacaoDropDownAsync(PaginacaoUsuarioDropDown paginacaoUsuarioDropDown)
{
var usuarios = await _usuarioRepository.PaginacaoDropDownAsync(paginacaoUsuarioDropDown);
return usuarios.Select(x => new UsuarioViewModel()
{
Cnpj = string.IsNullOrWhiteSpace(x.Cnpj) ? x.Cpf : x.Cnpj,
Id = x.Id,
Nome = x.Nome
}).ToList();
}
}
5 changes: 3 additions & 2 deletions OpenAdm.Domain/Interfaces/IGenericRepository.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using OpenAdm.Domain.Entities.Bases;
using OpenAdm.Domain.Model;
using OpenAdm.Domain.Model;
using OpenAdm.Domain.PaginateDto;

namespace OpenAdm.Domain.Interfaces;

Expand All @@ -9,4 +9,5 @@ public interface IGenericRepository<T> where T : class
Task<T> UpdateAsync(T entity);
Task<bool> DeleteAsync(T entity);
Task<PaginacaoViewModel<T>> PaginacaoAsync(FilterModel<T> filterModel);
Task<IList<T>> PaginacaoDropDownAsync(PaginacaoDropDown<T> paginacaoDropDown);
}
4 changes: 2 additions & 2 deletions OpenAdm.Domain/Interfaces/IParcelaRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ namespace OpenAdm.Domain.Interfaces;

public interface IParcelaRepository : IGenericRepository<Parcela>
{
Task<decimal> SumAReceberAsync();
Task<IDictionary<int, decimal>> SumMesesAsync();
Task<decimal> SumTotalAsync(TipoFaturaEnum faturaEnum);
Task<IDictionary<int, decimal>> SumTotalMesesAsync(TipoFaturaEnum faturaEnum);
Task<Parcela?> GetByIdAsync(Guid id);
Task<Parcela?> GetByIdExternoAsync(string idExterno);
Task<IList<Parcela>> GetByPedidoIdAsync(Guid pedidoId, StatusParcelaEnum? statusFaturaContasAReceberEnum);
Expand Down
11 changes: 11 additions & 0 deletions OpenAdm.Domain/PaginateDto/PaginacaoDropDown.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Linq.Expressions;

namespace OpenAdm.Domain.PaginateDto;

public abstract class PaginacaoDropDown<T> where T : class
{
public string? Search { get; set; }
public string OrderBy { get; set; } = "DataDeAtualizacao";

public abstract Expression<Func<T, bool>>? Where();
}
4 changes: 4 additions & 0 deletions OpenAdm.Infra/Cached/Cached/BannerCached.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using OpenAdm.Domain.Entities;
using OpenAdm.Domain.Interfaces;
using OpenAdm.Domain.Model;
using OpenAdm.Domain.PaginateDto;
using OpenAdm.Infra.Cached.Interfaces;
using OpenAdm.Infra.Repositories;

Expand Down Expand Up @@ -77,4 +78,7 @@ public async Task<Banner> UpdateAsync(Banner entity)

public Task<PaginacaoViewModel<Banner>> PaginacaoAsync(FilterModel<Banner> filterModel)
=> _bannerRepository.PaginacaoAsync(filterModel);

public Task<IList<Banner>> PaginacaoDropDownAsync(PaginacaoDropDown<Banner> paginacaoDropDown)
=> _bannerRepository.PaginacaoDropDownAsync(paginacaoDropDown);
}
4 changes: 4 additions & 0 deletions OpenAdm.Infra/Cached/Cached/CategoriaCached.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using OpenAdm.Domain.Entities;
using OpenAdm.Domain.Interfaces;
using OpenAdm.Domain.Model;
using OpenAdm.Domain.PaginateDto;
using OpenAdm.Infra.Cached.Interfaces;
using OpenAdm.Infra.Repositories;

Expand Down Expand Up @@ -73,4 +74,7 @@ public Task<PaginacaoViewModel<Categoria>> GetPaginacaoCategoriaAsync(FilterMode

public Task<PaginacaoViewModel<Categoria>> PaginacaoAsync(FilterModel<Categoria> filterModel)
=> _categoriaRepository.PaginacaoAsync(filterModel);

public Task<IList<Categoria>> PaginacaoDropDownAsync(PaginacaoDropDown<Categoria> paginacaoDropDown)
=> _categoriaRepository.PaginacaoDropDownAsync(paginacaoDropDown);
}
Loading

0 comments on commit 88529b8

Please sign in to comment.