public IHeyResponse Make(IScheduleType prototype, IHttpReturnType returnType) { HeyRememberDto heyRemember = _methodBinder.CreateDeferredExecution().HeyRemember; BinderCanCallTheMethod binderCanCall = new BinderCanCallTheMethod(_methodBinder); if (binderCanCall.Can) { return(new OkHeyResponse(_methodBinder, prototype.Prototype(), returnType)); } if (binderCanCall.ExecutionResultEnum == MethodExecutionResultEnum.Empty) { return(new MethodNotFoundHeyResponse(heyRemember)); } if (!binderCanCall.ParametersOk) { return(new ParametersErrorHeyResponse(heyRemember, binderCanCall.ParametersOkNum)); } return(new BindingFailedHeyResponse(heyRemember)); }
public IHttpActionResult Execute(HeyController controller) { HeyRememberDeferredExecution deferredExecution = _methodBinder.CreateDeferredExecution(); HeyRememberDto heyRemember = deferredExecution.HeyRemember; try { string jobId = _scheduleType.Schedule(deferredExecution); string heyId = $"{heyRemember.Domain}/{(heyRemember.Type != string.Empty ? heyRemember.Type + "/" : string.Empty)}{heyRemember.Name}/{heyRemember.Id}/{jobId}"; _log.Info($"{heyRemember} scheduled on {heyId}"); var heyRememberReturn = new HeyRememberDto(heyRemember); heyRememberReturn.When[0] = new FindDatesFromHeyRemember(heyRememberReturn).Next(); return(_returnType.Return(heyId, heyRememberReturn, controller)); } catch (Exception ex) { _log.Error($"{heyRemember}: Error while trying to schedule job", ex); return(controller.ExposedInternalServerError(ex)); } }