Return ticket IDs and resolve external links
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
<TicketConfiguration>
|
||||
<DisableAutomaticTimeTracking Policy="Mandatory" Value="true" />
|
||||
<CompletitionPolicy Policy="Mandatory" Value="ifRequired" />
|
||||
<UseSimplifiedCaseCompletionDialog Policy="Hidden" Value="false" />
|
||||
<SimplifiedCaseCompletionTicketOpenMode Policy="Hidden" Value="Preview" />
|
||||
<NotesMandatory Policy="Mandatory" Value="true" />
|
||||
<ShowOverview Policy="Mandatory" Value="false" />
|
||||
<TicketProcessing Policy="Mandatory" Value="extern">
|
||||
|
||||
@@ -18,32 +18,55 @@ namespace F4SDwebService.Controllers.Matrix42
|
||||
public async Task<IHttpActionResult> Matrix42TicketFinalization([FromBody] cApiM42Ticket jsonRequest)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
var requestInfo = new cF4sdWebRequestInfo("Matrix42TicketFinalization", jsonRequest.Action?.ToString() + " + " + jsonRequest.Ticket?.ToString() ?? "", cAuthentication.GetUserInfo(ActionContext));
|
||||
var requestInfo = new cF4sdWebRequestInfo("Matrix42TicketFinalization", jsonRequest?.Action?.ToString() + " + " + jsonRequest?.Ticket?.ToString() ?? "", cAuthentication.GetUserInfo(ActionContext));
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceStart(0, requestInfo.requestName, requestInfo.id, requestInfo.created); }
|
||||
var apiError = 0;
|
||||
|
||||
try
|
||||
{
|
||||
if (jsonRequest == null)
|
||||
return BadRequest();
|
||||
|
||||
if (string.Equals(jsonRequest.StatusIdValue, "Closed", StringComparison.InvariantCultureIgnoreCase))
|
||||
await WebApiApplication.Collector.M42WpmCollector.ReopenM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None);
|
||||
|
||||
string operationResult = null;
|
||||
switch (jsonRequest.Action)
|
||||
{
|
||||
case enumCloseCaseTicketStatus.Save:
|
||||
if (jsonRequest.Ticket == null || jsonRequest.Ticket.HasValue && jsonRequest.Ticket.Equals(Guid.Empty))
|
||||
return Ok(await WebApiApplication.Collector.M42WpmCollector.CreateM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None));
|
||||
operationResult = await WebApiApplication.Collector.M42WpmCollector.CreateM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None);
|
||||
else
|
||||
return Ok(await WebApiApplication.Collector.M42WpmCollector.UpdateM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None));
|
||||
operationResult = await WebApiApplication.Collector.M42WpmCollector.UpdateM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None);
|
||||
break;
|
||||
case enumCloseCaseTicketStatus.Close:
|
||||
return Ok(await WebApiApplication.Collector.M42WpmCollector.CloseM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None));
|
||||
operationResult = await WebApiApplication.Collector.M42WpmCollector.CloseM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None);
|
||||
break;
|
||||
case enumCloseCaseTicketStatus.OnHold:
|
||||
return Ok(await WebApiApplication.Collector.M42WpmCollector.PauseM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None));
|
||||
operationResult = await WebApiApplication.Collector.M42WpmCollector.PauseM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None);
|
||||
break;
|
||||
case enumCloseCaseTicketStatus.Forward:
|
||||
return Ok(await WebApiApplication.Collector.M42WpmCollector.ForwardM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None));
|
||||
|
||||
default: break;
|
||||
operationResult = await WebApiApplication.Collector.M42WpmCollector.ForwardM42TicketAsync(jsonRequest, requestInfo, 1, CancellationToken.None);
|
||||
break;
|
||||
default:
|
||||
return BadRequest();
|
||||
}
|
||||
return Ok(jsonRequest);
|
||||
|
||||
if (operationResult == null)
|
||||
return InternalServerError();
|
||||
|
||||
var ticketId = jsonRequest.Ticket;
|
||||
if ((!ticketId.HasValue || ticketId.Value == Guid.Empty) && Guid.TryParse(operationResult, out var createdTicketId))
|
||||
ticketId = createdTicketId;
|
||||
|
||||
if (!ticketId.HasValue || ticketId.Value == Guid.Empty)
|
||||
return InternalServerError();
|
||||
|
||||
return Ok(new cTicketFinalizationResult
|
||||
{
|
||||
Success = true,
|
||||
TicketId = ticketId
|
||||
});
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
@@ -60,4 +83,4 @@ namespace F4SDwebService.Controllers.Matrix42
|
||||
return BadRequest();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
58
F4SDwebService/Controllers/TicketingController.cs
Normal file
58
F4SDwebService/Controllers/TicketingController.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using C4IT.DataHistoryProvider;
|
||||
using C4IT.FASD.Base;
|
||||
using C4IT.Logging;
|
||||
using F4SDwebService;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace FasdWebService.Controllers
|
||||
{
|
||||
[RoutePrefix("api/Ticketing")]
|
||||
public class TicketingController : ApiController
|
||||
{
|
||||
[HttpGet]
|
||||
[Route("GetExternalLink")]
|
||||
public async Task<IHttpActionResult> GetExternalLink(Guid ticketId, enumTicketExternalOpenMode mode)
|
||||
{
|
||||
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
||||
|
||||
var requestInfo = new cF4sdWebRequestInfo("Ticketing.GetExternalLink", ticketId.ToString(), cAuthentication.GetUserInfo(ActionContext));
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceStart(0, requestInfo.requestName, requestInfo.id, requestInfo.created); }
|
||||
|
||||
var apiError = 0;
|
||||
try
|
||||
{
|
||||
if (ticketId == Guid.Empty || mode == enumTicketExternalOpenMode.None)
|
||||
return BadRequest();
|
||||
|
||||
var result = await WebApiApplication.Collector.GetTicketExternalLinkAsync(ticketId, mode, requestInfo, 1, CancellationToken.None);
|
||||
return Ok(result ?? new cTicketExternalLinkResult
|
||||
{
|
||||
Success = false,
|
||||
Mode = enumTicketExternalOpenMode.None
|
||||
});
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
apiError = E.HResult;
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (WebApiApplication.Debug_apiTiming) WebApiApplication.SaveApiTimingEntry(requestInfo.requestName, requestInfo.id, requestInfo.created, apiError);
|
||||
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(0, requestInfo.requestName, requestInfo.id, requestInfo.created, requestInfo.created, ErrorCode: apiError); }
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
return Ok(new cTicketExternalLinkResult
|
||||
{
|
||||
Success = false,
|
||||
Mode = enumTicketExternalOpenMode.None
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -324,6 +324,7 @@
|
||||
<Compile Include="Controllers\RemoteDesktopController.cs" />
|
||||
<Compile Include="Controllers\SearchDefault.cs" />
|
||||
<Compile Include="Controllers\F4SDAnalyticsDataController.cs" />
|
||||
<Compile Include="Controllers\TicketingController.cs" />
|
||||
<Compile Include="Controllers\TicketOverviewController.cs" />
|
||||
<Compile Include="Controllers\StagedSearchRelationController.cs" />
|
||||
<Compile Include="Controllers\UsageController.cs" />
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<TicketConfiguration>
|
||||
<DisableAutomaticTimeTracking Policy="Mandatory" Value="true" />
|
||||
<CompletitionPolicy Policy="Mandatory" Value="ifRequired" />
|
||||
<UseSimplifiedCaseCompletionDialog Policy="Hidden" Value="false" />
|
||||
<SimplifiedCaseCompletionTicketOpenMode Policy="Hidden" Value="Preview" />
|
||||
<NotesMandatory Policy="Mandatory" Value="true" />
|
||||
<ShowOverview Policy="Mandatory" Value="false" />
|
||||
<TicketProcessing Policy="Mandatory" Value="extern">
|
||||
|
||||
@@ -44,6 +44,14 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="TicketExternalOpenModeEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="None"/>
|
||||
<xs:enumeration value="Preview"/>
|
||||
<xs:enumeration value="Edit"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="HorizontalAlignmentEnum">
|
||||
<xs:restriction base="xs:NCName">
|
||||
<xs:enumeration value="Default"/>
|
||||
@@ -150,6 +158,22 @@
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="UseSimplifiedCaseCompletionDialog" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="BoolNode"></xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="SimplifiedCaseCompletionTicketOpenMode" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="PolicyNode">
|
||||
<xs:attribute name="Value" type="TicketExternalOpenModeEnum" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="ShowOverview" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
@@ -187,7 +211,7 @@
|
||||
<xs:attribute name="Value" type="xs:boolean" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="OverviewPollingPersonal" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
|
||||
Reference in New Issue
Block a user