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> GetExpenseTypeListAsync() { var typeList = await _context.ExpensesTypeMaster.Where(et => et.TenantId == tenantId).ToListAsync(); return ApiResponse.SuccessResponse(typeList); } public async Task> 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.ErrorResponse("Access Denied.", "You do not have permission to Upload expenses for this project", 403); } var expensesType = _mapper.Map(dto); return ApiResponse.SuccessResponse(expensesType); } #endregion #region =================================================================== Expenses Status APIs =================================================================== public async Task> GetExpenseStatusListAsync() { var typeList = await _context.ExpensesStatusMaster.Where(et => et.TenantId == tenantId).ToListAsync(); return ApiResponse.SuccessResponse(typeList); } #endregion #region =================================================================== Payment mode APIs =================================================================== public async Task> GetPaymentModeListAsync() { var typeList = await _context.PaymentModeMatser.Where(et => et.TenantId == tenantId).ToListAsync(); return ApiResponse.SuccessResponse(typeList); } #endregion } }