@ -1,14 +1,12 @@
using Marco.Pms.DataAccess.Data ;
using Marco.Pms.Model.Dtos.Activities ;
using Marco.Pms.Model.Dtos. Master ;
using Marco.Pms.Model.Dtos. Forum ;
using Marco.Pms.Model.Entitlements ;
using Marco.Pms.Model.Forum ;
using Marco.Pms.Model.Mapper ;
using Marco.Pms.Model.Master ;
using Marco.Pms.Model.Utilities ;
using Marco.Pms.Model.ViewModels.Activities ;
using Marco.Pms.Model.ViewModels.Forum ;
using Marco.Pms.Model.ViewModels.Master ;
using MarcoBMS.Services.Helpers ;
using MarcoBMS.Services.Service ;
using Microsoft.AspNetCore.Authorization ;
@ -31,8 +29,6 @@ namespace Marco.Pms.Services.Controllers
_userHelper = userHelper ;
_logger = logger ;
}
// -------------------------------- Activity --------------------------------
[HttpGet]
[Route("activities")]
public async Task < IActionResult > GetActivitiesMaster ( )
@ -182,9 +178,6 @@ namespace Marco.Pms.Services.Controllers
_logger . LogInfo ( "Activity Deleted Successfully from tenant {tenantId}" , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( new { } , "Activity Deleted Successfully" , 200 ) ) ;
}
// -------------------------------- Industry --------------------------------
[HttpGet]
[Route("industries")]
public async Task < IActionResult > GetIndustries ( )
@ -196,8 +189,6 @@ namespace Marco.Pms.Services.Controllers
return Ok ( ApiResponse < object > . SuccessResponse ( industries , System . String . Format ( "{0} industry records fetched successfully" , industries . Count ) , 200 ) ) ;
}
// -------------------------------- Ticket Status --------------------------------
[HttpGet("ticket-status")]
public async Task < IActionResult > GetTicketStatusMaster ( )
{
@ -213,6 +204,51 @@ namespace Marco.Pms.Services.Controllers
return Ok ( ApiResponse < object > . SuccessResponse ( statusVMs , System . String . Format ( "{0} Ticket Status records fetched successfully" , statusVMs . Count ) , 200 ) ) ;
}
[HttpGet("ticket-types")]
public async Task < IActionResult > GetTicketTypeMaster ( )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
List < TicketTypeVM > typeVMs = new List < TicketTypeVM > ( ) ;
List < TicketTypeMaster > typeMasters = await _context . TicketTypeMasters . Where ( s = > s . TenantId = = tenantId ) . ToListAsync ( ) ;
foreach ( var typeMaster in typeMasters )
{
typeVMs . Add ( typeMaster . ToTicketTypeVMFromTicketTypeMaster ( ) ) ;
}
_logger . LogInfo ( "{count} Ticket Type records fetched successfully from tenant {tenantId}" , typeVMs . Count , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVMs , System . String . Format ( "{0} Ticket Type records fetched successfully" , typeVMs . Count ) , 200 ) ) ;
}
[HttpGet("ticket-priorities")]
public async Task < IActionResult > GetTicketPriorityMaster ( )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
List < TicketPriorityVM > priorityVMs = new List < TicketPriorityVM > ( ) ;
List < TicketPriorityMaster > priorityMasters = await _context . TicketPriorityMasters . Where ( s = > s . TenantId = = tenantId ) . ToListAsync ( ) ;
foreach ( var priorityMaster in priorityMasters )
{
priorityVMs . Add ( priorityMaster . ToTicketPriorityVMFromTicketPriorityMaster ( ) ) ;
}
_logger . LogInfo ( "{count} Ticket Priority records fetched successfully from tenant {tenantId}" , priorityVMs . Count , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( priorityVMs , System . String . Format ( "{0} Ticket Priority records fetched successfully" , priorityVMs . Count ) , 200 ) ) ;
}
[HttpGet("ticket-tags")]
public async Task < IActionResult > GetTicketTagMaster ( )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
List < TicketTagVM > tagVMs = new List < TicketTagVM > ( ) ;
List < TicketTagMaster > tagMasters = await _context . TicketTagMasters . Where ( s = > s . TenantId = = tenantId ) . ToListAsync ( ) ;
foreach ( var tagMaster in tagMasters )
{
tagVMs . Add ( tagMaster . ToTicketTagVMFromTicketTagMaster ( ) ) ;
}
_logger . LogInfo ( "{count} Ticket Tag records fetched successfully from tenant {tenantId}" , tagVMs . Count , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( tagVMs , System . String . Format ( "{0} Ticket Tag records fetched successfully" , tagVMs . Count ) , 200 ) ) ;
}
[HttpPost("ticket-status")]
public async Task < IActionResult > CreateTicketStatusMaster ( TicketStatusMasterDto statusMasterDto )
{
@ -231,6 +267,63 @@ namespace Marco.Pms.Services.Controllers
return BadRequest ( ApiResponse < object > . ErrorResponse ( "Sent Empty payload" , "Sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-types")]
public async Task < IActionResult > CreateTicketTypeMaster ( TicketTypeMasterDto typeMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( typeMasterDto ! = null )
{
TicketTypeMaster ? typeMaster = typeMasterDto . ToTicketTypeMasterFromTicketTypeMasterDto ( tenantId ) ;
_context . TicketTypeMasters . Update ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTypeVM typeVM = typeMaster . ToTicketTypeVMFromTicketTypeMaster ( ) ;
_logger . LogInfo ( "Ticket Type master {TicketTypeId} added successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket type master added successfully" , 200 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-priorities")]
public async Task < IActionResult > CreateTicketPriorityMaster ( TicketPriorityMasterDto priorityMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( priorityMasterDto ! = null )
{
TicketPriorityMaster ? typeMaster = priorityMasterDto . ToTicketPriorityMasterFromTicketPriorityMasterDto ( tenantId ) ;
_context . TicketPriorityMasters . Update ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketPriorityVM typeVM = typeMaster . ToTicketPriorityVMFromTicketPriorityMaster ( ) ;
_logger . LogInfo ( "Ticket Priority master {TicketPriorityId} added successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket Priority master added successfully" , 200 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-tags")]
public async Task < IActionResult > CreateTicketTagMaster ( TicketTagMasterDto tagMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( tagMasterDto ! = null )
{
TicketTagMaster ? tagMaster = tagMasterDto . ToTicketTagMasterFromTicketTagMasterDto ( tenantId ) ;
_context . TicketTagMasters . Update ( tagMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTagVM typeVM = tagMaster . ToTicketTagVMFromTicketTagMaster ( ) ;
_logger . LogInfo ( "Ticket Tag master {TicketTypeId} added successfully from tenant {tenantId}" , tagMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket tag master added successfully" , 200 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-status/edit")]
public async Task < IActionResult > UpdateTicketStatusMaster ( TicketStatusMasterDto statusMasterDto )
{
@ -255,6 +348,78 @@ namespace Marco.Pms.Services.Controllers
return BadRequest ( ApiResponse < object > . ErrorResponse ( "Sent Empty payload" , "Sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-types/edit")]
public async Task < IActionResult > UpdateTicketTypeMaster ( TicketTypeMasterDto typeMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( typeMasterDto ! = null )
{
TicketTypeMaster ? typeMaster = await _context . TicketTypeMasters . AsNoTracking ( ) . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = typeMasterDto . Id ) ;
if ( typeMaster ! = null )
{
typeMaster = typeMasterDto . ToTicketTypeMasterFromTicketTypeMasterDto ( tenantId ) ;
_context . TicketTypeMasters . Update ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTypeVM typeVM = typeMaster . ToTicketTypeVMFromTicketTypeMaster ( ) ;
_logger . LogInfo ( "Ticket Type master {TicketTypeId} updated successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket type master updated successfully" , 200 ) ) ;
}
_logger . LogError ( "Ticket type master {TicketTypeId} not found in database" , typeMasterDto . Id ! = null ? typeMasterDto . Id . Value : Guid . Empty ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Ticket type master not found" , "Ticket type master not found" , 404 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-priorities/edit")]
public async Task < IActionResult > UpdateTicketPriorityMaster ( TicketPriorityMasterDto priorityMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( priorityMasterDto ! = null )
{
TicketPriorityMaster ? typeMaster = await _context . TicketPriorityMasters . AsNoTracking ( ) . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = priorityMasterDto . Id ) ;
if ( typeMaster ! = null )
{
typeMaster = priorityMasterDto . ToTicketPriorityMasterFromTicketPriorityMasterDto ( tenantId ) ;
_context . TicketPriorityMasters . Update ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketPriorityVM typeVM = typeMaster . ToTicketPriorityVMFromTicketPriorityMaster ( ) ;
_logger . LogInfo ( "Ticket Priority master {TicketPriorityId} updated successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket Priority master updated successfully" , 200 ) ) ;
}
_logger . LogError ( "Ticket Priority master {TicketPriorityId} not found in database" , priorityMasterDto . Id ! = null ? priorityMasterDto . Id . Value : Guid . Empty ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Ticket Priority master not found" , "Ticket Priority master not found" , 404 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-tags/edit")]
public async Task < IActionResult > UpdateTicketTagMaster ( TicketTagMasterDto tagMasterDto )
{
var tenantId = _userHelper . GetTenantId ( ) ;
if ( tagMasterDto ! = null )
{
TicketTagMaster ? tagMaster = await _context . TicketTagMasters . AsNoTracking ( ) . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = tagMasterDto . Id ) ;
if ( tagMaster ! = null )
{
tagMaster = tagMasterDto . ToTicketTagMasterFromTicketTagMasterDto ( tenantId ) ;
_context . TicketTagMasters . Update ( tagMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTagVM typeVM = tagMaster . ToTicketTagVMFromTicketTagMaster ( ) ;
_logger . LogInfo ( "Ticket Tag master {TicketTypeId} updated successfully from tenant {tenantId}" , tagMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket tag master updated successfully" , 200 ) ) ;
}
_logger . LogError ( "Ticket tag master {TicketTypeId} not found in database" , tagMasterDto . Id ! = null ? tagMasterDto . Id . Value : Guid . Empty ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Ticket tag master not found" , "Ticket tag master not found" , 404 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpDelete("ticket-status/{id}")]
public async Task < IActionResult > DeleteTicketStatusMaster ( Guid id )
{
@ -283,66 +448,6 @@ namespace Marco.Pms.Services.Controllers
}
}
// -------------------------------- Ticket Type --------------------------------
[HttpGet("ticket-types")]
public async Task < IActionResult > GetTicketTypeMaster ( )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
List < TicketTypeVM > typeVMs = new List < TicketTypeVM > ( ) ;
List < TicketTypeMaster > typeMasters = await _context . TicketTypeMasters . Where ( s = > s . TenantId = = tenantId ) . ToListAsync ( ) ;
foreach ( var typeMaster in typeMasters )
{
typeVMs . Add ( typeMaster . ToTicketTypeVMFromTicketTypeMaster ( ) ) ;
}
_logger . LogInfo ( "{count} Ticket Type records fetched successfully from tenant {tenantId}" , typeVMs . Count , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVMs , System . String . Format ( "{0} Ticket Type records fetched successfully" , typeVMs . Count ) , 200 ) ) ;
}
[HttpPost("ticket-types")]
public async Task < IActionResult > CreateTicketTypeMaster ( TicketTypeMasterDto typeMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( typeMasterDto ! = null )
{
TicketTypeMaster ? typeMaster = typeMasterDto . ToTicketTypeMasterFromTicketTypeMasterDto ( tenantId ) ;
_context . TicketTypeMasters . Add ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTypeVM typeVM = typeMaster . ToTicketTypeVMFromTicketTypeMaster ( ) ;
_logger . LogInfo ( "Ticket Type master {TicketTypeId} added successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket type master added successfully" , 200 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-types/edit")]
public async Task < IActionResult > UpdateTicketTypeMaster ( TicketTypeMasterDto typeMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( typeMasterDto ! = null )
{
TicketTypeMaster ? typeMaster = await _context . TicketTypeMasters . AsNoTracking ( ) . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = typeMasterDto . Id ) ;
if ( typeMaster ! = null )
{
typeMaster = typeMasterDto . ToTicketTypeMasterFromTicketTypeMasterDto ( tenantId ) ;
_context . TicketTypeMasters . Update ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTypeVM typeVM = typeMaster . ToTicketTypeVMFromTicketTypeMaster ( ) ;
_logger . LogInfo ( "Ticket Type master {TicketTypeId} updated successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket type master updated successfully" , 200 ) ) ;
}
_logger . LogError ( "Ticket type master {TicketTypeId} not found in database" , typeMasterDto . Id ! = null ? typeMasterDto . Id . Value : Guid . Empty ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Ticket type master not found" , "Ticket type master not found" , 404 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpDelete("ticket-types/{id}")]
public async Task < IActionResult > DeleteTicketTypeMaster ( Guid id )
{
@ -371,66 +476,6 @@ namespace Marco.Pms.Services.Controllers
}
}
// -------------------------------- Ticket Priority --------------------------------
[HttpGet("ticket-priorities")]
public async Task < IActionResult > GetTicketPriorityMaster ( )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
List < TicketPriorityVM > priorityVMs = new List < TicketPriorityVM > ( ) ;
List < TicketPriorityMaster > priorityMasters = await _context . TicketPriorityMasters . Where ( s = > s . TenantId = = tenantId ) . ToListAsync ( ) ;
foreach ( var priorityMaster in priorityMasters )
{
priorityVMs . Add ( priorityMaster . ToTicketPriorityVMFromTicketPriorityMaster ( ) ) ;
}
_logger . LogInfo ( "{count} Ticket Priority records fetched successfully from tenant {tenantId}" , priorityVMs . Count , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( priorityVMs , System . String . Format ( "{0} Ticket Priority records fetched successfully" , priorityVMs . Count ) , 200 ) ) ;
}
[HttpPost("ticket-priorities")]
public async Task < IActionResult > CreateTicketPriorityMaster ( TicketPriorityMasterDto priorityMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( priorityMasterDto ! = null )
{
TicketPriorityMaster ? typeMaster = priorityMasterDto . ToTicketPriorityMasterFromTicketPriorityMasterDto ( tenantId ) ;
_context . TicketPriorityMasters . Add ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketPriorityVM typeVM = typeMaster . ToTicketPriorityVMFromTicketPriorityMaster ( ) ;
_logger . LogInfo ( "Ticket Priority master {TicketPriorityId} added successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket Priority master added successfully" , 200 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-priorities/edit")]
public async Task < IActionResult > UpdateTicketPriorityMaster ( TicketPriorityMasterDto priorityMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( priorityMasterDto ! = null )
{
TicketPriorityMaster ? typeMaster = await _context . TicketPriorityMasters . AsNoTracking ( ) . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = priorityMasterDto . Id ) ;
if ( typeMaster ! = null )
{
typeMaster = priorityMasterDto . ToTicketPriorityMasterFromTicketPriorityMasterDto ( tenantId ) ;
_context . TicketPriorityMasters . Update ( typeMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketPriorityVM typeVM = typeMaster . ToTicketPriorityVMFromTicketPriorityMaster ( ) ;
_logger . LogInfo ( "Ticket Priority master {TicketPriorityId} updated successfully from tenant {tenantId}" , typeMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket Priority master updated successfully" , 200 ) ) ;
}
_logger . LogError ( "Ticket Priority master {TicketPriorityId} not found in database" , priorityMasterDto . Id ! = null ? priorityMasterDto . Id . Value : Guid . Empty ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Ticket Priority master not found" , "Ticket Priority master not found" , 404 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpDelete("ticket-priorities/{id}")]
public async Task < IActionResult > DeleteTicketPriorityMaster ( Guid id )
{
@ -459,66 +504,6 @@ namespace Marco.Pms.Services.Controllers
}
}
// -------------------------------- Ticket Tag --------------------------------
[HttpGet("ticket-tags")]
public async Task < IActionResult > GetTicketTagMaster ( )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
List < TicketTagVM > tagVMs = new List < TicketTagVM > ( ) ;
List < TicketTagMaster > tagMasters = await _context . TicketTagMasters . Where ( s = > s . TenantId = = tenantId ) . ToListAsync ( ) ;
foreach ( var tagMaster in tagMasters )
{
tagVMs . Add ( tagMaster . ToTicketTagVMFromTicketTagMaster ( ) ) ;
}
_logger . LogInfo ( "{count} Ticket Tag records fetched successfully from tenant {tenantId}" , tagVMs . Count , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( tagVMs , System . String . Format ( "{0} Ticket Tag records fetched successfully" , tagVMs . Count ) , 200 ) ) ;
}
[HttpPost("ticket-tags")]
public async Task < IActionResult > CreateTicketTagMaster ( TicketTagMasterDto tagMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( tagMasterDto ! = null )
{
TicketTagMaster ? tagMaster = tagMasterDto . ToTicketTagMasterFromTicketTagMasterDto ( tenantId ) ;
_context . TicketTagMasters . Add ( tagMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTagVM typeVM = tagMaster . ToTicketTagVMFromTicketTagMaster ( ) ;
_logger . LogInfo ( "Ticket Tag master {TicketTypeId} added successfully from tenant {tenantId}" , tagMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket tag master added successfully" , 200 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("ticket-tags/edit")]
public async Task < IActionResult > UpdateTicketTagMaster ( TicketTagMasterDto tagMasterDto )
{
var tenantId = _userHelper . GetTenantId ( ) ;
if ( tagMasterDto ! = null )
{
TicketTagMaster ? tagMaster = await _context . TicketTagMasters . AsNoTracking ( ) . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = tagMasterDto . Id ) ;
if ( tagMaster ! = null )
{
tagMaster = tagMasterDto . ToTicketTagMasterFromTicketTagMasterDto ( tenantId ) ;
_context . TicketTagMasters . Update ( tagMaster ) ;
await _context . SaveChangesAsync ( ) ;
TicketTagVM typeVM = tagMaster . ToTicketTagVMFromTicketTagMaster ( ) ;
_logger . LogInfo ( "Ticket Tag master {TicketTypeId} updated successfully from tenant {tenantId}" , tagMaster . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( typeVM , "Ticket tag master updated successfully" , 200 ) ) ;
}
_logger . LogError ( "Ticket tag master {TicketTypeId} not found in database" , tagMasterDto . Id ! = null ? tagMasterDto . Id . Value : Guid . Empty ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Ticket tag master not found" , "Ticket tag master not found" , 404 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpDelete("ticket-tags/{id}")]
public async Task < IActionResult > DeleteTicketTagMaster ( Guid id )
{
@ -546,126 +531,5 @@ namespace Marco.Pms.Services.Controllers
return NotFound ( ApiResponse < object > . ErrorResponse ( "Ticket tag not found" , "Ticket tag not found" , 404 ) ) ;
}
}
// -------------------------------- Work Category --------------------------------
[HttpGet("work-categories")]
public async Task < IActionResult > GetWorkCategoryMasterList ( )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
List < WorkCategoryMasterVM > workCategoryMasterVMs = new List < WorkCategoryMasterVM > ( ) ;
List < WorkCategoryMaster > workCategories = await _context . WorkCategoryMasters . Where ( s = > s . TenantId = = tenantId ) . ToListAsync ( ) ;
foreach ( var workCategory in workCategories )
{
workCategoryMasterVMs . Add ( workCategory . ToWorkCategoryMasterVMFromWorkCategoryMaster ( ) ) ;
}
_logger . LogInfo ( "{count} Work Category records fetched successfully from tenant {tenantId}" , workCategoryMasterVMs . Count , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( workCategoryMasterVMs , System . String . Format ( "{0} Work Category records fetched successfully" , workCategoryMasterVMs . Count ) , 200 ) ) ;
}
[HttpGet("work-category/{id})")]
public async Task < IActionResult > GetWorkCategoryMaster ( Guid id )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
WorkCategoryMaster ? workCategory = await _context . WorkCategoryMasters . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = id ) ;
if ( workCategory ! = null )
{
WorkCategoryMasterVM workCategoryMasterVM = workCategory . ToWorkCategoryMasterVMFromWorkCategoryMaster ( ) ;
_logger . LogInfo ( "{WorkCategoryId} Work Category fetched successfully from tenant {tenantId}" , workCategoryMasterVM . Id ? ? Guid . Empty , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( workCategoryMasterVM , "Work Category fetched successfully" , 200 ) ) ;
}
_logger . LogInfo ( "{WorkCategoryId} Work Category not found in database" , id ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Work Category not found" , "Work Category not found" , 404 ) ) ;
}
[HttpPost("work-category")]
public async Task < IActionResult > CreateWorkCategoryMaster ( WorkCategoryMasterDto workCategoryMasterDto )
{
Guid tenantId = _userHelper . GetTenantId ( ) ;
if ( workCategoryMasterDto ! = null )
{
WorkCategoryMaster ? existingWorkCategory = await _context . WorkCategoryMasters . FirstOrDefaultAsync ( w = > w . Name = = workCategoryMasterDto . Name ) ;
if ( existingWorkCategory ! = null )
{
_logger . LogWarning ( "Work Category of name {WorkCategoryName} already exist" , existingWorkCategory . Name ) ;
return Conflict ( ApiResponse < object > . ErrorResponse ( "Work Category already exist" , "Work Category already exist" , 409 ) ) ;
}
WorkCategoryMaster ? workCategory = workCategoryMasterDto . ToWorkCategoryMasterFromWorkCategoryMasterDto ( tenantId ) ;
WorkCategoryMasterVM workCategoryMasterVM = new WorkCategoryMasterVM ( ) ;
if ( workCategory ! = null & & workCategory . Id = = Guid . Empty )
{
_context . WorkCategoryMasters . Add ( workCategory ) ;
await _context . SaveChangesAsync ( ) ;
workCategoryMasterVM = workCategory . ToWorkCategoryMasterVMFromWorkCategoryMaster ( ) ;
}
_logger . LogInfo ( "Work category master {WorkCategoryId} added successfully from tenant {tenantId}" , workCategoryMasterVM . Id ? ? Guid . Empty , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( workCategoryMasterVM , "Work category master added successfully" , 200 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpPost("work-category/edit")]
public async Task < IActionResult > UpdateWorkCategoryMaster ( WorkCategoryMasterDto workCategoryMasterDto )
{
var tenantId = _userHelper . GetTenantId ( ) ;
if ( workCategoryMasterDto ! = null )
{
WorkCategoryMaster ? workCategory = await _context . WorkCategoryMasters . AsNoTracking ( ) . FirstOrDefaultAsync ( s = > s . TenantId = = tenantId & & s . Id = = workCategoryMasterDto . Id ) ;
if ( workCategory ! = null )
{
if ( workCategory . IsSystem )
{
_logger . LogError ( "User tries to update system-defined work category" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "Cannot update system-defined work" , "Cannot update system-defined work" , 400 ) ) ;
}
workCategory = workCategoryMasterDto . ToWorkCategoryMasterFromWorkCategoryMasterDto ( tenantId ) ;
_context . WorkCategoryMasters . Update ( workCategory ) ;
await _context . SaveChangesAsync ( ) ;
WorkCategoryMasterVM workCategoryMasterVM = workCategory . ToWorkCategoryMasterVMFromWorkCategoryMaster ( ) ;
_logger . LogInfo ( "Work category master {WorkCategoryId} updated successfully from tenant {tenantId}" , workCategory . Id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( workCategoryMasterVM , "Work category master updated successfully" , 200 ) ) ;
}
_logger . LogError ( "Work category master {WorkCategoryId} not found in database" , workCategoryMasterDto . Id ? ? Guid . Empty ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Work category master not found" , "Work category master not found" , 404 ) ) ;
}
_logger . LogError ( "User sent empyt payload" ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "User sent Empty payload" , "User sent Empty payload" , 400 ) ) ;
}
[HttpDelete("work-category/{id}")]
public async Task < IActionResult > DeleteWorkCategoryMaster ( Guid id )
{
var tenantId = _userHelper . GetTenantId ( ) ;
var LoggedEmployee = await _userHelper . GetCurrentEmployeeAsync ( ) ;
WorkCategoryMaster ? workCategory = await _context . WorkCategoryMasters . FirstOrDefaultAsync ( t = > t . TenantId = = tenantId & & t . Id = = id ) ;
if ( workCategory ! = null )
{
if ( workCategory . IsSystem = = false )
{
_context . WorkCategoryMasters . Remove ( workCategory ) ;
await _context . SaveChangesAsync ( ) ;
_logger . LogInfo ( "Work category {WorkCategoryId} deleted successfully from tenant {tenantId}" , id , tenantId ) ;
return Ok ( ApiResponse < object > . SuccessResponse ( new { } , "Work category deleted successfully" , 200 ) ) ;
}
else
{
_logger . LogWarning ( "Employee with {LoggedEmployeeId} tries to delete system-defined work category {WorkCategoryId}" , LoggedEmployee . Id , id ) ;
return BadRequest ( ApiResponse < object > . ErrorResponse ( "Can not delete system-defined work category" , "Can not delete system-defined work category" , 400 ) ) ;
}
}
else
{
_logger . LogError ( "Work category {WorkCategoryId} not found in database" , id ) ;
return NotFound ( ApiResponse < object > . ErrorResponse ( "Work category not found" , "Work category not found" , 404 ) ) ;
}
}
}
}