39 lines
930 B
C#
39 lines
930 B
C#
using System;
|
|
using LeafWeb.Core.Entities;
|
|
using LeafWeb.Core.Remote;
|
|
|
|
namespace LeafWeb.Web.Services
|
|
{
|
|
public abstract class PiscalQueueWorker : PiscalQueueBase
|
|
{
|
|
public void DoWork(int leafInputId)
|
|
{
|
|
LeafInput leafInput = null;
|
|
try
|
|
{
|
|
leafInput = DataService.GetLeafInput(leafInputId);
|
|
DoWorkInternal(leafInput);
|
|
}
|
|
catch (PiscalClientException ex)
|
|
{
|
|
PiscalExceptionHandle(ex, leafInput);
|
|
|
|
if (leafInput != null)
|
|
{
|
|
DataService.SetLeafInputStatus(leafInput, LeafInputStatusType.Exception, "Error occurred processing LeafInput",
|
|
ex.Message);
|
|
}
|
|
// signal to process next item
|
|
HangfireStartup.TriggerPiscalProcessQueue();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
var errorMessage = FormatException(ex, leafInputId);
|
|
Logger.Error(errorMessage);
|
|
throw; // this will retry via HangFire
|
|
}
|
|
}
|
|
|
|
protected abstract void DoWorkInternal(LeafInput leafInputId);
|
|
}
|
|
} |