174 lines
8.0 KiB
C#
174 lines
8.0 KiB
C#
using Marco.Pms.Model.Dtos.ServiceProject;
|
|
using Marco.Pms.Model.Employees;
|
|
using Marco.Pms.Model.ViewModels.ServiceProject;
|
|
using Marco.Pms.Services.Service.ServiceInterfaces;
|
|
using MarcoBMS.Services.Helpers;
|
|
using MarcoBMS.Services.Service;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Marco.Pms.Services.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
[Authorize]
|
|
public class ServiceProjectController : Controller
|
|
{
|
|
private readonly IServiceProject _serviceProject;
|
|
private readonly UserHelper _userHelper;
|
|
private readonly ILoggingService _logger;
|
|
private readonly ISignalRService _signalR;
|
|
private readonly Guid tenantId;
|
|
public ServiceProjectController(IServiceProject serviceProject, UserHelper userHelper, ILoggingService logger, ISignalRService signalR)
|
|
{
|
|
_serviceProject = serviceProject;
|
|
_userHelper = userHelper;
|
|
_logger = logger;
|
|
_signalR = signalR;
|
|
tenantId = userHelper.GetTenantId();
|
|
|
|
}
|
|
|
|
#region =================================================================== Service Project Functions ===================================================================
|
|
|
|
[HttpGet("list")]
|
|
public async Task<IActionResult> GetServiceProjectList([FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 20)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.GetServiceProjectListAsync(pageNumber, pageSize, loggedInEmploee, tenantId);
|
|
return StatusCode(response.StatusCode, response);
|
|
|
|
}
|
|
|
|
[HttpGet("details/{id}")]
|
|
public async Task<IActionResult> GetServiceProjectDetails(Guid id)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.GetServiceProjectDetailsAsync(id, loggedInEmploee, tenantId);
|
|
return StatusCode(response.StatusCode, response);
|
|
|
|
}
|
|
|
|
[HttpPost("create")]
|
|
public async Task<IActionResult> CreateProject([FromBody] ServiceProjectDto serviceProject)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.CreateServiceProjectAsync(serviceProject, loggedInEmploee, tenantId);
|
|
if (response.Success)
|
|
{
|
|
var notification = new { LoggedInUserId = loggedInEmploee.Id, Keyword = "Service_Project", Response = response.Data };
|
|
await _signalR.SendNotificationAsync(notification);
|
|
}
|
|
return StatusCode(response.StatusCode, response);
|
|
|
|
|
|
}
|
|
|
|
[HttpPut("edit/{id}")]
|
|
public async Task<IActionResult> UpdateServicecProject(Guid id, [FromBody] ServiceProjectDto serviceProject)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.UpdateServiceProjectAsync(id, serviceProject, loggedInEmploee, tenantId);
|
|
if (response.Success)
|
|
{
|
|
var notification = new { LoggedInUserId = loggedInEmploee.Id, Keyword = "Service_Project", Response = response.Data };
|
|
await _signalR.SendNotificationAsync(notification);
|
|
}
|
|
return StatusCode(response.StatusCode, response);
|
|
|
|
}
|
|
|
|
[HttpDelete("delete/{id}")]
|
|
public async Task<IActionResult> DeActivateServiceProject(Guid id, bool isActive = false)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.DeActivateServiceProjectAsync(id, isActive, loggedInEmploee, tenantId);
|
|
if (response.Success)
|
|
{
|
|
var notification = new { LoggedInUserId = loggedInEmploee.Id, Keyword = "Service_Project", Response = response.Data };
|
|
await _signalR.SendNotificationAsync(notification);
|
|
}
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
#endregion
|
|
|
|
#region =================================================================== Job Tickets Functions ===================================================================
|
|
|
|
[HttpGet("job/list")]
|
|
public async Task<IActionResult> GetJobTicketsList([FromQuery] Guid? projectId, [FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 20, [FromQuery] bool isActive = true)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.GetJobTicketsListAsync(projectId, pageNumber, pageSize, isActive, loggedInEmploee, tenantId);
|
|
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
|
|
[HttpGet("job/details/{id}")]
|
|
public async Task<IActionResult> GetJobTicketDetails(Guid id)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.GetJobTicketDetailsAsync(id, loggedInEmploee, tenantId);
|
|
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
|
|
[HttpGet("job/comment/list")]
|
|
public async Task<IActionResult> GetCommentListByJobTicket([FromQuery] Guid? jobTicketId, [FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 20)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.GetCommentListByJobTicketAsync(jobTicketId, pageNumber, pageSize, loggedInEmploee, tenantId);
|
|
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
|
|
[HttpGet("job/tag/list")]
|
|
public async Task<IActionResult> GetJobTagList()
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.GetJobTagListAsync(loggedInEmploee, tenantId);
|
|
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
|
|
[HttpPost("job/create")]
|
|
public async Task<IActionResult> CreateJobTicket(CreateJobTicketDto model)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.CreateJobTicketAsync(model, loggedInEmploee, tenantId);
|
|
if (response.Success)
|
|
{
|
|
var notification = new { LoggedInUserId = loggedInEmploee.Id, Keyword = "Job_Ticket", Response = response.Data };
|
|
await _signalR.SendNotificationAsync(notification);
|
|
}
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
|
|
[HttpPost("job/status-change")]
|
|
public async Task<IActionResult> ChangeJobsStatus(ChangeJobStatusDto model)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.ChangeJobsStatusAsync(model, loggedInEmploee, tenantId);
|
|
if (response.Success)
|
|
{
|
|
var notification = new { LoggedInUserId = loggedInEmploee.Id, Keyword = "Job_Ticket", Response = response.Data };
|
|
await _signalR.SendNotificationAsync(notification);
|
|
}
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
|
|
[HttpPost("job/add/comment")]
|
|
public async Task<IActionResult> AddCommentToJobTicket(JobCommentDto model)
|
|
{
|
|
Employee loggedInEmploee = await _userHelper.GetCurrentEmployeeAsync();
|
|
var response = await _serviceProject.AddCommentToJobTicketAsync(model, loggedInEmploee, tenantId);
|
|
if (response.Success)
|
|
{
|
|
var notification = new { LoggedInUserId = loggedInEmploee.Id, Keyword = "Job_Ticket_Comment", Response = response.Data };
|
|
await _signalR.SendNotificationAsync(notification);
|
|
}
|
|
return StatusCode(response.StatusCode, response);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|