81 lines
3.3 KiB
C#

using AutoMapper;
using Marco.Pms.DataAccess.Data;
using Marco.Pms.Model.Dtos.Master;
using Marco.Pms.Model.Entitlements;
using Marco.Pms.Model.Master;
using Marco.Pms.Model.Utilities;
using Marco.Pms.Services.Service.ServiceInterfaces;
using MarcoBMS.Services.Helpers;
using MarcoBMS.Services.Service;
using Microsoft.EntityFrameworkCore;
namespace Marco.Pms.Services.Service
{
public class MasterService : IMasterService
{
private readonly ApplicationDbContext _context;
private readonly ILoggingService _logger;
private readonly UserHelper _userHelper;
private readonly PermissionServices _permission;
private readonly IMapper _mapper;
private readonly Guid tenantId;
public MasterService(
ApplicationDbContext context,
ILoggingService logger,
UserHelper userHelper,
PermissionServices permission,
IMapper mapper)
{
_context = context;
_logger = logger;
_userHelper = userHelper;
_permission = permission;
_mapper = mapper;
tenantId = userHelper.GetTenantId();
}
#region =================================================================== Expenses Type APIs ===================================================================
public async Task<ApiResponse<object>> GetExpenseTypeListAsync()
{
var typeList = await _context.ExpensesTypeMaster.Where(et => et.TenantId == tenantId).ToListAsync();
return ApiResponse<object>.SuccessResponse(typeList);
}
public async Task<ApiResponse<object>> CreateExpenseTypeAsync(ExpensesTypeMasterDto dto)
{
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
var hasManagePermission = await _permission.HasPermission(PermissionsMaster.ManageMasters, loggedInEmployee.Id);
if (!hasManagePermission)
{
_logger.LogWarning("Access DENIED for employee {EmployeeId} for managing EXPANSES TYPE MASTER.", loggedInEmployee.Id);
return ApiResponse<object>.ErrorResponse("Access Denied.", "You do not have permission to Upload expenses for this project", 403);
}
var expensesType = _mapper.Map<ExpensesTypeMaster>(dto);
return ApiResponse<object>.SuccessResponse(expensesType);
}
#endregion
#region =================================================================== Expenses Status APIs ===================================================================
public async Task<ApiResponse<object>> GetExpenseStatusListAsync()
{
var typeList = await _context.ExpensesStatusMaster.Where(et => et.TenantId == tenantId).ToListAsync();
return ApiResponse<object>.SuccessResponse(typeList);
}
#endregion
#region =================================================================== Payment mode APIs ===================================================================
public async Task<ApiResponse<object>> GetPaymentModeListAsync()
{
var typeList = await _context.PaymentModeMatser.Where(et => et.TenantId == tenantId).ToListAsync();
return ApiResponse<object>.SuccessResponse(typeList);
}
#endregion
}
}