Added an API to add new payment mode to master table for that tenant
This commit is contained in:
parent
e1102c2978
commit
1834c103f0
9
Marco.Pms.Model/Dtos/Master/PaymentModeMatserDto.cs
Normal file
9
Marco.Pms.Model/Dtos/Master/PaymentModeMatserDto.cs
Normal file
@ -0,0 +1,9 @@
|
||||
namespace Marco.Pms.Model.Dtos.Master
|
||||
{
|
||||
public class PaymentModeMatserDto
|
||||
{
|
||||
public Guid? Id { get; set; }
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string Description { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
@ -908,6 +908,13 @@ namespace Marco.Pms.Services.Controllers
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
[HttpPost("payment-mode")]
|
||||
public async Task<IActionResult> CreatePaymentMode(PaymentModeMatserDto dto)
|
||||
{
|
||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var response = await _masterService.CreatePaymentModeAsync(dto, loggedInEmployee, tenantId);
|
||||
return StatusCode(response.StatusCode, response);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
@ -188,6 +188,9 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
#endregion
|
||||
|
||||
#region ======================================================= Master =======================================================
|
||||
|
||||
#region ======================================================= Expenses Type Master =======================================================
|
||||
|
||||
CreateMap<ExpensesTypeMasterDto, ExpensesTypeMaster>()
|
||||
.ForMember(
|
||||
dest => dest.Id,
|
||||
@ -195,8 +198,6 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
opt => opt.MapFrom(src => src.Id != null ? src.Id : Guid.Empty)
|
||||
);
|
||||
CreateMap<ExpensesTypeMaster, ExpensesTypeMasterVM>();
|
||||
CreateMap<ExpensesStatusMaster, ExpensesStatusMasterVM>();
|
||||
CreateMap<PaymentModeMatser, PaymentModeMatserVM>();
|
||||
|
||||
CreateMap<ExpensesTypeMaster, ExpensesTypeMasterMongoDB>()
|
||||
.ForMember(
|
||||
@ -205,10 +206,16 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
.ForMember(
|
||||
dest => dest.TenantId,
|
||||
opt => opt.MapFrom(src => src.TenantId.ToString()));
|
||||
|
||||
CreateMap<ExpensesTypeMasterMongoDB, ExpensesTypeMasterVM>()
|
||||
.ForMember(
|
||||
dest => dest.Id,
|
||||
opt => opt.MapFrom(src => Guid.Parse(src.Id)));
|
||||
#endregion
|
||||
|
||||
#region ======================================================= Expenses Status Master =======================================================
|
||||
|
||||
CreateMap<ExpensesStatusMaster, ExpensesStatusMasterVM>();
|
||||
|
||||
CreateMap<ExpensesStatusMaster, ExpensesStatusMasterMongoDB>()
|
||||
.ForMember(
|
||||
@ -217,10 +224,22 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
.ForMember(
|
||||
dest => dest.TenantId,
|
||||
opt => opt.MapFrom(src => src.TenantId.ToString()));
|
||||
|
||||
CreateMap<ExpensesStatusMasterMongoDB, ExpensesStatusMasterVM>()
|
||||
.ForMember(
|
||||
dest => dest.Id,
|
||||
opt => opt.MapFrom(src => Guid.Parse(src.Id)));
|
||||
#endregion
|
||||
|
||||
#region ======================================================= Payment Mode Matser =======================================================
|
||||
|
||||
CreateMap<PaymentModeMatserDto, PaymentModeMatser>()
|
||||
.ForMember(
|
||||
dest => dest.Id,
|
||||
// Explicitly and safely convert nullable Guid to non-nullable Guid
|
||||
opt => opt.MapFrom(src => src.Id != null ? src.Id : Guid.Empty)
|
||||
);
|
||||
CreateMap<PaymentModeMatser, PaymentModeMatserVM>();
|
||||
|
||||
CreateMap<PaymentModeMatser, PaymentModeMatserMongoDB>()
|
||||
.ForMember(
|
||||
@ -229,11 +248,13 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
.ForMember(
|
||||
dest => dest.TenantId,
|
||||
opt => opt.MapFrom(src => src.TenantId.ToString()));
|
||||
|
||||
CreateMap<PaymentModeMatserMongoDB, PaymentModeMatserVM>()
|
||||
.ForMember(
|
||||
dest => dest.Id,
|
||||
opt => opt.MapFrom(src => Guid.Parse(src.Id)));
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -169,6 +169,47 @@ namespace Marco.Pms.Services.Service
|
||||
return ApiResponse<object>.ErrorResponse("Internal Error occured while featching list of payment modes list", ExceptionMapper(ex), 500);
|
||||
}
|
||||
}
|
||||
public async Task<ApiResponse<object>> CreatePaymentModeAsync(PaymentModeMatserDto 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 payment mode 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);
|
||||
if (!hasManagePermission)
|
||||
{
|
||||
_logger.LogWarning("Access DENIED for employee {EmployeeId} for managing PAYMENT MODE MASTER.", loggedInEmployee.Id);
|
||||
return ApiResponse<object>.ErrorResponse("Access Denied.", "You do not have permission to Upload expenses for this project", 403);
|
||||
|
||||
}
|
||||
// Mapping the DTO to PaymentModeMatser Model
|
||||
var paymentMode = _mapper.Map<PaymentModeMatser>(model);
|
||||
paymentMode.TenantId = tenantId;
|
||||
|
||||
_context.PaymentModeMatser.Add(paymentMode);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
_logger.LogInfo("New Payment Mode {PaymentModeId} was added by employee {EmployeeId}", paymentMode.Id, loggedInEmployee.Id);
|
||||
|
||||
// Mapping the PaymentModeMatser Model to View Model
|
||||
var response = _mapper.Map<PaymentModeMatserVM>(paymentMode);
|
||||
return ApiResponse<object>.SuccessResponse(response, "Payment Mode craeted Successfully", 201);
|
||||
}
|
||||
catch (DbUpdateException dbEx)
|
||||
{
|
||||
_logger.LogError(dbEx, "Database Exception occured while adding new payment mode 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 payment mode by employee {EmployeeId}", loggedInEmployee.Id);
|
||||
return ApiResponse<object>.ErrorResponse("Internal Error occured", ExceptionMapper(ex), 500);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -17,6 +17,7 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces
|
||||
#endregion
|
||||
#region =================================================================== Payment mode APIs ===================================================================
|
||||
Task<ApiResponse<object>> GetPaymentModeListAsync(Employee loggedInEmployee, Guid tenantId);
|
||||
Task<ApiResponse<object>> CreatePaymentModeAsync(PaymentModeMatserDto model, Employee loggedInEmployee, Guid tenantId);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user