Composer Composer.Compensate(Func <Compensation, CompensationResult> compensation) { _composer.Compensate(x => { var taskCompensation = new CompensationProxy <Unit>(x); CompensationResult compensationResult = compensation(taskCompensation); var result = compensationResult as CompensationResult <Unit>; if (result != null) { return(result); } Func <Task <Unit> > awaiter = async() => { await compensationResult.Task; return(x.Payload); }; return(x.Task(awaiter())); }); return(this); }
public async Task Send(CompensateActivityContext <TLog> context, IPipe <CompensateActivityContext <TLog> > next) { if (_log.IsDebugEnabled) { _log.DebugFormat("Compensating: {0}", context.TrackingNumber); } try { try { CompensationResult result = await context.Activity.Compensate(context); await result.Evaluate(); await next.Send(context); } catch (Exception ex) { CompensationResult result = context.Failed(ex); await result.Evaluate(); } } catch (Exception ex) { _log.Error($"The activity {TypeMetadataCache.GetShortName(context.Activity.GetType())} threw an exception", ex); throw; } }
public IActionResult CreateCompensation([FromBody] Compensation compensation) { compensation.Employee = GetEmployeeById(compensation.Employee.EmployeeId); _logger.LogDebug($"Received Compensation create request for '{compensation.Employee.FirstName} {compensation.Employee.LastName}'"); _employeeService.CreateCompensation(compensation); CompensationResult result = new CompensationResult(); result.Employee = compensation.Employee; result.EffectiveDate = compensation.EffectiveDate; result.Salary = compensation.Salary; return(CreatedAtRoute("getCompensationByEmployeeId", new { id = compensation.Employee.EmployeeId }, result)); }
public IActionResult GetCompensationEmployeeById(String id) { _logger.LogDebug($"Received Compensation get request for '{id}'"); var compensation = _employeeService.GetCompensationByEmployeeId(id); if (compensation == null) { return(NotFound()); } CompensationResult result = new CompensationResult(); result.Employee = compensation.Employee; result.EffectiveDate = compensation.EffectiveDate; result.Salary = compensation.Salary; return(Ok(result)); }
void Consumes <IConsumeContext <RoutingSlip> > .All.Consume(IConsumeContext <RoutingSlip> context) { Compensation <TLog> compensation = new HostCompensation <TLog>(context); if (_log.IsDebugEnabled) { _log.DebugFormat("Host: {0} Compensating: {1}", compensation.Bus.Endpoint.Address, compensation.TrackingNumber); } try { CompensationResult result = _activityFactory.CompensateActivity(compensation); } catch (Exception ex) { compensation.Failed(ex); } }
public CompensationResultProxy(CompensationResult <T> result) { _result = result; }