Added an API to add new Expense type to master table for that tenant
This commit is contained in:
parent
c2fe726f0c
commit
e1102c2978
@ -879,7 +879,7 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
public async Task<IActionResult> CreateExpenseType(ExpensesTypeMasterDto dto)
|
public async Task<IActionResult> CreateExpenseType(ExpensesTypeMasterDto dto)
|
||||||
{
|
{
|
||||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||||
var response = await _masterService.GetExpenseTypeListAsync(loggedInEmployee, tenantId);
|
var response = await _masterService.CreateExpenseTypeAsync(dto, loggedInEmployee, tenantId);
|
||||||
return StatusCode(response.StatusCode, response);
|
return StatusCode(response.StatusCode, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,22 +58,44 @@ namespace Marco.Pms.Services.Service
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public async Task<ApiResponse<object>> CreateExpenseTypeAsync(ExpensesTypeMasterDto dto, Employee loggedInEmployee, Guid tenantId)
|
public async Task<ApiResponse<object>> CreateExpenseTypeAsync(ExpensesTypeMasterDto model, Employee loggedInEmployee, Guid tenantId)
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Validation if employee is taking action in same tenant
|
||||||
|
if (tenantId != loggedInEmployee.TenantId)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Employee {EmployeeId} attempted to add new expense type in different tenant", loggedInEmployee.Id);
|
||||||
|
return ApiResponse<object>.ErrorResponse("Access Denied", "User do not have access for this information", 403);
|
||||||
|
}
|
||||||
var hasManagePermission = await _permission.HasPermission(PermissionsMaster.ManageMasters, loggedInEmployee.Id);
|
var hasManagePermission = await _permission.HasPermission(PermissionsMaster.ManageMasters, loggedInEmployee.Id);
|
||||||
if (!hasManagePermission)
|
if (!hasManagePermission)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Access DENIED for employee {EmployeeId} for managing EXPANSES TYPE MASTER.", loggedInEmployee.Id);
|
_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);
|
return ApiResponse<object>.ErrorResponse("Access Denied.", "You do not have permission to Upload expenses for this project", 403);
|
||||||
}
|
}
|
||||||
var expensesType = _mapper.Map<ExpensesTypeMaster>(dto);
|
var expensesType = _mapper.Map<ExpensesTypeMaster>(model);
|
||||||
|
expensesType.TenantId = tenantId;
|
||||||
|
|
||||||
_context.ExpensesTypeMaster.Add(expensesType);
|
_context.ExpensesTypeMaster.Add(expensesType);
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
_logger.LogInfo("New Expense Type {ExpensesTypeId} was added by employee {EmployeeId}", expensesType.Id, loggedInEmployee.Id);
|
_logger.LogInfo("New Expense Type {ExpensesTypeId} was added by employee {EmployeeId}", expensesType.Id, loggedInEmployee.Id);
|
||||||
|
|
||||||
var response = _mapper.Map<ExpensesTypeMasterVM>(expensesType);
|
var response = _mapper.Map<ExpensesTypeMasterVM>(expensesType);
|
||||||
return ApiResponse<object>.SuccessResponse(response, "Expense type craeted Successfully", 201);
|
return ApiResponse<object>.SuccessResponse(response, "Expense type craeted Successfully", 201);
|
||||||
}
|
}
|
||||||
|
catch (DbUpdateException dbEx)
|
||||||
|
{
|
||||||
|
_logger.LogError(dbEx, "Database Exception occured while adding new expense type by employee {EmployeeId}", loggedInEmployee.Id);
|
||||||
|
return ApiResponse<object>.ErrorResponse("Internal Error occured", ExceptionMapper(dbEx), 500);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Exception occured while adding new expense type by employee {EmployeeId}", loggedInEmployee.Id);
|
||||||
|
return ApiResponse<object>.ErrorResponse("Internal Error occured", ExceptionMapper(ex), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -148,7 +170,6 @@ namespace Marco.Pms.Services.Service
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region =================================================================== Helper Function ===================================================================
|
#region =================================================================== Helper Function ===================================================================
|
||||||
|
|||||||
@ -1,12 +1,23 @@
|
|||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Dtos.Master;
|
||||||
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
namespace Marco.Pms.Services.Service.ServiceInterfaces
|
namespace Marco.Pms.Services.Service.ServiceInterfaces
|
||||||
{
|
{
|
||||||
public interface IMasterService
|
public interface IMasterService
|
||||||
{
|
{
|
||||||
|
#region =================================================================== Expenses Type APIs ===================================================================
|
||||||
Task<ApiResponse<object>> GetExpenseTypeListAsync(Employee loggedInEmployee, Guid tenantId);
|
Task<ApiResponse<object>> GetExpenseTypeListAsync(Employee loggedInEmployee, Guid tenantId);
|
||||||
|
Task<ApiResponse<object>> CreateExpenseTypeAsync(ExpensesTypeMasterDto model, Employee loggedInEmployee, Guid tenantId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
#region =================================================================== Expenses Status APIs ===================================================================
|
||||||
Task<ApiResponse<object>> GetExpenseStatusListAsync(Employee loggedInEmployee, Guid tenantId);
|
Task<ApiResponse<object>> GetExpenseStatusListAsync(Employee loggedInEmployee, Guid tenantId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
#region =================================================================== Payment mode APIs ===================================================================
|
||||||
Task<ApiResponse<object>> GetPaymentModeListAsync(Employee loggedInEmployee, Guid tenantId);
|
Task<ApiResponse<object>> GetPaymentModeListAsync(Employee loggedInEmployee, Guid tenantId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user