Added an API to modify isActive parameter in Expense type master table for that tenant
This commit is contained in:
parent
e31e19ed74
commit
b4931aafd6
@ -875,21 +875,31 @@ namespace Marco.Pms.Services.Controllers
|
||||
var response = await _masterService.GetExpenseTypeListAsync(loggedInEmployee, tenantId);
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
[HttpPost("expenses-type")]
|
||||
public async Task<IActionResult> CreateExpenseType(ExpensesTypeMasterDto dto)
|
||||
public async Task<IActionResult> CreateExpenseType([FromBody] ExpensesTypeMasterDto dto)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.CreateExpenseTypeAsync(dto, loggedInEmployee, tenantId);
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
[HttpPut("expenses-type/edit/{id}")]
|
||||
public async Task<IActionResult> UpdateExpenseType(Guid id, ExpensesTypeMasterDto dto)
|
||||
public async Task<IActionResult> UpdateExpenseType(Guid id, [FromBody] ExpensesTypeMasterDto dto)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.UpdateExpenseTypeAsync(id, dto, loggedInEmployee, tenantId);
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
[HttpDelete("expenses-type/delete/{id}")]
|
||||
public async Task<IActionResult> DeleteExpenseType(Guid id, [FromQuery] bool isActive = false)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.DeleteExpenseTypeAsync(id, isActive, loggedInEmployee, tenantId);
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region =================================================================== Expenses Status APIs ===================================================================
|
||||
@ -901,15 +911,17 @@ namespace Marco.Pms.Services.Controllers
|
||||
var response = await _masterService.GetExpensesStatusListAsync(loggedInEmployee, tenantId);
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
[HttpPost("expenses-status")]
|
||||
public async Task<IActionResult> CreateExpensesStatus(ExpensesStatusMasterDto dto)
|
||||
public async Task<IActionResult> CreateExpensesStatus([FromBody] ExpensesStatusMasterDto dto)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.CreateExpensesStatusAsync(dto, loggedInEmployee, tenantId);
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
[HttpPut("expenses-status/edit/{id}")]
|
||||
public async Task<IActionResult> UpdateExpensesStatus(Guid id, ExpensesStatusMasterDto dto)
|
||||
public async Task<IActionResult> UpdateExpensesStatus(Guid id, [FromBody] ExpensesStatusMasterDto dto)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.UpdateExpensesStatusAsync(id, dto, loggedInEmployee, tenantId);
|
||||
@ -929,7 +941,7 @@ namespace Marco.Pms.Services.Controllers
|
||||
}
|
||||
|
||||
[HttpPost("payment-mode")]
|
||||
public async Task<IActionResult> CreatePaymentMode(PaymentModeMatserDto dto)
|
||||
public async Task<IActionResult> CreatePaymentMode([FromBody] PaymentModeMatserDto dto)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.CreatePaymentModeAsync(dto, loggedInEmployee, tenantId);
|
||||
@ -937,7 +949,7 @@ namespace Marco.Pms.Services.Controllers
|
||||
}
|
||||
|
||||
[HttpPut("payment-mode/edit/{id}")]
|
||||
public async Task<IActionResult> UpdatePaymentMode(Guid id, PaymentModeMatserDto dto)
|
||||
public async Task<IActionResult> UpdatePaymentMode(Guid id, [FromBody] PaymentModeMatserDto dto)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.UpdatePaymentModeAsync(id, dto, loggedInEmployee, tenantId);
|
||||
|
@ -181,6 +181,68 @@ namespace Marco.Pms.Services.Service
|
||||
return ApiResponse<object>.ErrorResponse("Internal Error occured", ExceptionMapper(ex), 500);
|
||||
}
|
||||
}
|
||||
public async Task<ApiResponse<object>> DeleteExpenseTypeAsync(Guid id, bool isActive, Employee loggedInEmployee, Guid tenantId)
|
||||
{
|
||||
string action = isActive ? "delete" : "restore";
|
||||
try
|
||||
{
|
||||
// Validation if employee is taking action in same tenant
|
||||
if (tenantId != loggedInEmployee.TenantId)
|
||||
{
|
||||
_logger.LogWarning("Employee {EmployeeId} attempted to {Action} expense type in different tenant", loggedInEmployee.Id, action);
|
||||
return ApiResponse<object>.ErrorResponse("Access Denied", "User do not have access for this information", 403);
|
||||
}
|
||||
|
||||
// Checking permssion for managing masters
|
||||
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 Manage masters", 403);
|
||||
}
|
||||
|
||||
var expensesType = await _context.ExpensesTypeMaster.FirstOrDefaultAsync(et => et.Id == id && et.TenantId == tenantId);
|
||||
|
||||
// Checking if expense type exists
|
||||
if (expensesType == null)
|
||||
{
|
||||
_logger.LogWarning("Employee {EmployeeId} tries to {Action} expense type, but not found in database", loggedInEmployee.Id, action);
|
||||
return ApiResponse<object>.ErrorResponse("Expense Type not found", "Expense Type not found", 404);
|
||||
}
|
||||
|
||||
// Mapping ExpensesTypeMaster to BsonDocument
|
||||
var existingEntityBson = _updateLogHelper.EntityToBsonDocument(expensesType);
|
||||
|
||||
expensesType.IsActive = isActive;
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
_logger.LogInfo("Expense Type {ExpensesTypeId} was {Action}d by employee {EmployeeId}", expensesType.Id, action, loggedInEmployee.Id);
|
||||
|
||||
// Saving the old entity in mongoDB
|
||||
|
||||
var mongoDBTask = _updateLogHelper.PushToUpdateLogsAsync(new UpdateLogsObject
|
||||
{
|
||||
EntityId = expensesType.Id.ToString(),
|
||||
UpdatedById = loggedInEmployee.Id.ToString(),
|
||||
OldObject = existingEntityBson,
|
||||
UpdatedAt = DateTime.UtcNow
|
||||
}, "ExpensesTypeMasterModificationLog");
|
||||
|
||||
// Mapping ExpensesTypeMaster to ExpensesTypeMasterVM
|
||||
var response = _mapper.Map<ExpensesTypeMasterVM>(expensesType);
|
||||
return ApiResponse<object>.SuccessResponse(response, $"Expense type {action}d Successfully", 200);
|
||||
}
|
||||
catch (DbUpdateException dbEx)
|
||||
{
|
||||
_logger.LogError(dbEx, "Database Exception occured while {Action}ing expense type by employee {EmployeeId}", action, loggedInEmployee.Id);
|
||||
return ApiResponse<object>.ErrorResponse("Internal Error occured", ExceptionMapper(dbEx), 500);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Exception occured while {Action}ing expense type by employee {EmployeeId}", action, loggedInEmployee.Id);
|
||||
return ApiResponse<object>.ErrorResponse("Internal Error occured", ExceptionMapper(ex), 500);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -10,6 +10,7 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces
|
||||
Task<ApiResponse<object>> GetExpenseTypeListAsync(Employee loggedInEmployee, Guid tenantId);
|
||||
Task<ApiResponse<object>> CreateExpenseTypeAsync(ExpensesTypeMasterDto model, Employee loggedInEmployee, Guid tenantId);
|
||||
Task<ApiResponse<object>> UpdateExpenseTypeAsync(Guid id, ExpensesTypeMasterDto model, Employee loggedInEmployee, Guid tenantId);
|
||||
Task<ApiResponse<object>> DeleteExpenseTypeAsync(Guid id, bool isActive, Employee loggedInEmployee, Guid tenantId);
|
||||
|
||||
#endregion
|
||||
#region =================================================================== Expenses Status APIs ===================================================================
|
||||
|
Loading…
x
Reference in New Issue
Block a user