Distribution_GL Initialization
This commit is contained in:
@@ -0,0 +1,274 @@
|
||||
using System.Text.Json;
|
||||
using Asp.Versioning;
|
||||
using General_Ledger_Service.DTOs.Accounts;
|
||||
using General_Ledger_Service.DTOs.CostCenters;
|
||||
using General_Ledger_Service.DTOs.FiscalCalendar;
|
||||
using General_Ledger_Service.DTOs.AuditLog;
|
||||
using General_Ledger_Service.DTOs.Bank;
|
||||
using General_Ledger_Service.DTOs.Budget;
|
||||
using General_Ledger_Service.DTOs.Cheques;
|
||||
using General_Ledger_Service.DTOs.Common;
|
||||
using General_Ledger_Service.DTOs.FixedAssets;
|
||||
using General_Ledger_Service.DTOs.JournalEntries;
|
||||
using General_Ledger_Service.DTOs.RecurringTemplates;
|
||||
using General_Ledger_Service.DTOs.Reports;
|
||||
using General_Ledger_Service.DTOs.SystemConfig;
|
||||
using General_Ledger_Service.DTOs.Tax;
|
||||
using General_Ledger_Service.Interfaces.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace General_Ledger_Service.Controllers
|
||||
{
|
||||
[ApiVersion("1.0")]
|
||||
[ApiController]
|
||||
[Route("api/v{version:apiVersion}")]
|
||||
public class GeneralLedgerController(
|
||||
IAccountService accountService,
|
||||
IFiscalCalendarService fiscalCalendarService,
|
||||
ICurrencyService currencyService,
|
||||
ICostCenterService costCenterService,
|
||||
IJournalEntryService journalEntryService,
|
||||
IRecurringTemplateService recurringTemplateService,
|
||||
IReportService reportService,
|
||||
ITaxService taxService,
|
||||
IFixedAssetService fixedAssetService,
|
||||
IBankService bankService,
|
||||
IBudgetService budgetService,
|
||||
ISystemConfigService systemConfigService,
|
||||
IAuditLogService auditLogService,
|
||||
IChequeService chequeService,
|
||||
IDevToolsService devToolsService) : ControllerBase
|
||||
{
|
||||
private readonly IAccountService _accountService = accountService;
|
||||
private readonly IFiscalCalendarService _fiscalCalendarService = fiscalCalendarService;
|
||||
private readonly ICurrencyService _currencyService = currencyService;
|
||||
private readonly ICostCenterService _costCenterService = costCenterService;
|
||||
private readonly IJournalEntryService _journalEntryService = journalEntryService;
|
||||
private readonly IRecurringTemplateService _recurringTemplateService = recurringTemplateService;
|
||||
private readonly IReportService _reportService = reportService;
|
||||
private readonly ITaxService _taxService = taxService;
|
||||
private readonly IFixedAssetService _fixedAssetService = fixedAssetService;
|
||||
private readonly IBankService _bankService = bankService;
|
||||
private readonly IBudgetService _budgetService = budgetService;
|
||||
private readonly ISystemConfigService _systemConfigService = systemConfigService;
|
||||
private readonly IAuditLogService _auditLogService = auditLogService;
|
||||
private readonly IChequeService _chequeService = chequeService;
|
||||
private readonly IDevToolsService _devToolsService = devToolsService;
|
||||
|
||||
private IActionResult Respond(ApiResponse response) => StatusCode(response.StatusCode, response);
|
||||
|
||||
[HttpGet("status")]
|
||||
public IActionResult GetStatus()
|
||||
{
|
||||
return Ok(new
|
||||
{
|
||||
service = "General Ledger Service",
|
||||
status = "Running",
|
||||
timestampUtc = DateTime.UtcNow
|
||||
});
|
||||
}
|
||||
|
||||
[HttpPost("accounts")]
|
||||
public async Task<IActionResult> CreateAccount([FromBody] CreateAccountRequest request) =>
|
||||
Respond(await _accountService.CreateAccountAsync(request));
|
||||
|
||||
[HttpGet("accounts/{accountCode}")]
|
||||
public async Task<IActionResult> GetAccount(string accountCode, [FromQuery] string? expand) =>
|
||||
Respond(await _accountService.GetAccountByCodeAsync(accountCode, expand));
|
||||
|
||||
[HttpGet("accounts")]
|
||||
public async Task<IActionResult> ListAccounts([FromQuery] ListAccountsRequest request) =>
|
||||
Respond(await _accountService.ListAccountsAsync(request));
|
||||
|
||||
[HttpPut("accounts/{accountCode}")]
|
||||
public async Task<IActionResult> UpdateAccount(string accountCode, [FromBody] Dictionary<string, JsonElement> payload) =>
|
||||
Respond(await _accountService.UpdateAccountAsync(accountCode, payload));
|
||||
|
||||
[HttpPost("fiscal-years")]
|
||||
public async Task<IActionResult> CreateFiscalYear([FromBody] CreateFiscalYearRequest request) =>
|
||||
Respond(await _fiscalCalendarService.CreateFiscalYearAsync(request));
|
||||
|
||||
[HttpPost("fiscal-years/{id}/periods")]
|
||||
public async Task<IActionResult> GeneratePeriods(int id, [FromBody] GeneratePeriodsRequest request) =>
|
||||
Respond(await _fiscalCalendarService.GeneratePeriodsAsync(id, request));
|
||||
|
||||
[HttpPut("periods/{id}/lock")]
|
||||
public async Task<IActionResult> LockPeriod(int id, [FromBody] Dictionary<string, JsonElement> payload) =>
|
||||
Respond(await _fiscalCalendarService.LockPeriodAsync(id, payload));
|
||||
|
||||
[HttpGet("fiscal-years/periods/by-date")]
|
||||
public async Task<IActionResult> GetPeriodByDate([FromQuery] DateOnly date) =>
|
||||
Respond(await _fiscalCalendarService.GetPeriodByDateAsync(date));
|
||||
|
||||
[HttpGet("currencies")]
|
||||
public async Task<IActionResult> ListCurrencies() =>
|
||||
Respond(await _currencyService.ListCurrenciesAsync());
|
||||
|
||||
[HttpPost("cost-centers")]
|
||||
public async Task<IActionResult> CreateCostCenter([FromBody] CreateCostCenterRequest request) =>
|
||||
Respond(await _costCenterService.CreateCostCenterAsync(request));
|
||||
|
||||
[HttpGet("cost-centers/{costCenterCode}")]
|
||||
public async Task<IActionResult> GetCostCenter(string costCenterCode, [FromQuery] string? expand) =>
|
||||
Respond(await _costCenterService.GetCostCenterByCodeAsync(costCenterCode, expand));
|
||||
|
||||
[HttpPost("journal-entries")]
|
||||
public async Task<IActionResult> CreateJournalEntry([FromBody] CreateJournalEntryRequest request) =>
|
||||
Respond(await _journalEntryService.CreateAsync(request));
|
||||
|
||||
[HttpGet("journal-entries/{journalNo}")]
|
||||
public async Task<IActionResult> GetJournalEntry(string journalNo) =>
|
||||
Respond(await _journalEntryService.GetByJournalNoAsync(journalNo));
|
||||
|
||||
[HttpPost("recurring-templates")]
|
||||
public async Task<IActionResult> CreateRecurringTemplate([FromBody] CreateRecurringTemplateRequest request) =>
|
||||
Respond(await _recurringTemplateService.CreateAsync(request));
|
||||
|
||||
[HttpPost("recurring-templates/{id}/generate")]
|
||||
public async Task<IActionResult> GenerateRecurringTemplate(long id) =>
|
||||
Respond(await _recurringTemplateService.GenerateAsync(id));
|
||||
|
||||
[HttpGet("reports")]
|
||||
public async Task<IActionResult> GetReport([FromQuery] ListReportsRequest request) =>
|
||||
Respond(await _reportService.GenerateAsync(request));
|
||||
|
||||
[HttpPost("tax-codes")]
|
||||
public async Task<IActionResult> CreateTaxCode([FromBody] CreateTaxCodeRequest request) =>
|
||||
Respond(await _taxService.CreateTaxCodeAsync(request));
|
||||
|
||||
[HttpGet("tax-codes/calculate")]
|
||||
public async Task<IActionResult> CalculateTax([FromQuery] CalculateTaxRequest request) =>
|
||||
Respond(await _taxService.CalculateTaxAsync(request));
|
||||
|
||||
[HttpGet("tax-types")]
|
||||
public async Task<IActionResult> ListTaxTypes() =>
|
||||
Respond(await _taxService.ListTaxTypesAsync());
|
||||
|
||||
[HttpGet("tax-codes")]
|
||||
public async Task<IActionResult> ListTaxCodes() =>
|
||||
Respond(await _taxService.ListTaxCodesAsync());
|
||||
|
||||
[HttpPost("fixed-assets")]
|
||||
public async Task<IActionResult> CreateFixedAsset([FromBody] CreateFixedAssetRequest request) =>
|
||||
Respond(await _fixedAssetService.CreateAsync(request));
|
||||
|
||||
[HttpPost("fixed-assets/{assetCode}/transactions")]
|
||||
public async Task<IActionResult> CreateFixedAssetTransaction(string assetCode, [FromBody] CreateFixedAssetTransactionRequest request) =>
|
||||
Respond(await _fixedAssetService.CreateTransactionAsync(assetCode, request));
|
||||
|
||||
[HttpGet("fixed-assets")]
|
||||
public async Task<IActionResult> ListFixedAssets() =>
|
||||
Respond(await _fixedAssetService.ListAsync());
|
||||
|
||||
[HttpPost("bank-accounts")]
|
||||
public async Task<IActionResult> CreateBankAccount([FromBody] CreateBankAccountRequest request) =>
|
||||
Respond(await _bankService.CreateBankAccountAsync(request));
|
||||
|
||||
[HttpPost("bank-accounts/{id}/statement-lines/import")]
|
||||
public async Task<IActionResult> ImportBankStatementLines(long id, IFormFile file)
|
||||
{
|
||||
using var stream = file.OpenReadStream();
|
||||
return Respond(await _bankService.ImportStatementLinesAsync(id, stream));
|
||||
}
|
||||
|
||||
[HttpPut("bank-statement-lines/{id}/reconcile")]
|
||||
public async Task<IActionResult> ReconcileBankStatementLine(long id, [FromBody] ReconcileStatementLineRequest request) =>
|
||||
Respond(await _bankService.ReconcileStatementLineAsync(id, request));
|
||||
|
||||
[HttpGet("bank-accounts")]
|
||||
public async Task<IActionResult> ListCashAndBankAccounts([FromQuery] string? accountType) =>
|
||||
Respond(await _bankService.ListCashAndBankAccountsAsync(accountType));
|
||||
|
||||
[HttpPost("cash-accounts")]
|
||||
public async Task<IActionResult> CreateCashAccount([FromBody] CreateCashAccountRequest request) =>
|
||||
Respond(await _bankService.CreateCashAccountAsync(request));
|
||||
|
||||
[HttpGet("cash-account-types")]
|
||||
public async Task<IActionResult> ListCashAccountTypes() =>
|
||||
Respond(await _bankService.ListCashAccountTypesAsync());
|
||||
|
||||
[HttpPut("cash-accounts/{id}")]
|
||||
public async Task<IActionResult> UpdateCashAccount(long id, [FromBody] UpdateCashAccountRequest request) =>
|
||||
Respond(await _bankService.UpdateCashAccountAsync(id, request));
|
||||
|
||||
[HttpPatch("cash-accounts/{id}/status")]
|
||||
public async Task<IActionResult> SetCashAccountStatus(long id, [FromBody] SetCashAccountStatusRequest request) =>
|
||||
Respond(await _bankService.SetCashAccountStatusAsync(id, request));
|
||||
|
||||
[HttpDelete("cash-accounts/{id}")]
|
||||
public async Task<IActionResult> DeleteCashAccount(long id) =>
|
||||
Respond(await _bankService.DeleteCashAccountAsync(id));
|
||||
|
||||
[HttpPost("budgets")]
|
||||
public async Task<IActionResult> CreateBudget([FromBody] CreateBudgetRequest request) =>
|
||||
Respond(await _budgetService.CreateAsync(request));
|
||||
|
||||
[HttpPost("budgets/{id}/lines")]
|
||||
public async Task<IActionResult> AddBudgetLines(long id, [FromBody] List<BudgetLineRequest> request) =>
|
||||
Respond(await _budgetService.AddLinesAsync(id, request));
|
||||
|
||||
[HttpGet("budgets")]
|
||||
public async Task<IActionResult> ListBudgets() =>
|
||||
Respond(await _budgetService.ListAsync());
|
||||
|
||||
[HttpPut("system-config/{key}")]
|
||||
public async Task<IActionResult> UpdateSystemConfig(string key, [FromBody] UpdateSystemConfigRequest request) =>
|
||||
Respond(await _systemConfigService.UpdateAsync(key, request));
|
||||
|
||||
[HttpGet("system-config")]
|
||||
public async Task<IActionResult> ListSystemConfig() =>
|
||||
Respond(await _systemConfigService.ListAsync());
|
||||
|
||||
[HttpGet("audit-log")]
|
||||
public async Task<IActionResult> ListAuditLog([FromQuery] ListAuditLogRequest request) =>
|
||||
Respond(await _auditLogService.ListAsync(request));
|
||||
|
||||
[HttpPost("cheque-books")]
|
||||
public async Task<IActionResult> CreateChequeBook([FromBody] CreateChequeBookRequest request) =>
|
||||
Respond(await _chequeService.CreateChequeBookAsync(request));
|
||||
|
||||
[HttpGet("cheque-books/{chequeBookNo}")]
|
||||
public async Task<IActionResult> GetChequeBook(string chequeBookNo, [FromQuery] string? expand) =>
|
||||
Respond(await _chequeService.GetChequeBookByNoAsync(chequeBookNo, expand));
|
||||
|
||||
[HttpGet("cheque-books")]
|
||||
public async Task<IActionResult> ListChequeBooks([FromQuery] ListChequeBooksRequest request) =>
|
||||
Respond(await _chequeService.ListChequeBooksAsync(request));
|
||||
|
||||
[HttpPut("cheque-pages/{chequeNo}/issue")]
|
||||
public async Task<IActionResult> IssueChequePage(string chequeNo, [FromBody] IssueChequePageRequest request) =>
|
||||
Respond(await _chequeService.IssueChequePageAsync(chequeNo, request));
|
||||
|
||||
[HttpPut("cheque-pages/{chequeNo}/status")]
|
||||
public async Task<IActionResult> UpdateChequePageStatus(string chequeNo, [FromBody] Dictionary<string, JsonElement> payload) =>
|
||||
Respond(await _chequeService.UpdateChequePageStatusAsync(chequeNo, payload));
|
||||
|
||||
[HttpGet("cheque-pages/{chequeNo}")]
|
||||
public async Task<IActionResult> GetChequePage(string chequeNo) =>
|
||||
Respond(await _chequeService.GetChequePageByNoAsync(chequeNo));
|
||||
|
||||
[HttpGet("cheque-pages")]
|
||||
public async Task<IActionResult> ListChequePages([FromQuery] ListChequePagesRequest request) =>
|
||||
Respond(await _chequeService.ListChequePagesAsync(request));
|
||||
|
||||
[HttpPost("received-cheques")]
|
||||
public async Task<IActionResult> CreateReceivedCheque([FromBody] CreateReceivedChequeRequest request) =>
|
||||
Respond(await _chequeService.CreateReceivedChequeAsync(request));
|
||||
|
||||
[HttpPut("received-cheques/{id}/status")]
|
||||
public async Task<IActionResult> UpdateReceivedChequeStatus(long id, [FromBody] Dictionary<string, JsonElement> payload) =>
|
||||
Respond(await _chequeService.UpdateReceivedChequeStatusAsync(id, payload));
|
||||
|
||||
[HttpGet("received-cheques/{id}")]
|
||||
public async Task<IActionResult> GetReceivedCheque(long id) =>
|
||||
Respond(await _chequeService.GetReceivedChequeByIdAsync(id));
|
||||
|
||||
[HttpGet("received-cheques")]
|
||||
public async Task<IActionResult> ListReceivedCheques([FromQuery] ListReceivedChequesRequest request) =>
|
||||
Respond(await _chequeService.ListReceivedChequesAsync(request));
|
||||
|
||||
[HttpPost("dev-tools/generate-api-key")]
|
||||
public IActionResult GenerateApiKey() =>
|
||||
Respond(_devToolsService.GenerateApiKey());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user