public IReturnModel <bool> OnSync <T>(HubSyncDataModel <T> data, string group = "") { IReturnModel <bool> rtn = new ReturnModel <bool>(_logger); try { var globalHub = _serviceProvider.GetService <IHubContext <GlobalHub> >(); if (!string.IsNullOrWhiteSpace(group)) { globalHub.Clients.Group(group).SendAsync("HubSyncData", data).ConfigureAwait(false); } else { globalHub.Clients.All.SendAsync("HubSyncData", data).ConfigureAwait(false); } } catch (Exception ex) { rtn = rtn.SendError(GlobalErrors.TechnicalError, ex); } return(rtn); }
public IReturnModel <TResult> RunAction <TResult, TServiceParamsWithIdentifier, TSocketSyncDataType>( ServiceParamsWithIdentifier <TServiceParamsWithIdentifier> args, string actionName, string serviceName, string moduleName, Func <ServiceParamsWithIdentifier <TServiceParamsWithIdentifier>, IReturnModel <TResult>, IReturnModel <TResult> > invoker, HubSyncDataModel <TSocketSyncDataType> hubSyncDataModel ) where TServiceParamsWithIdentifier : class { IReturnModel <TResult> rtn = new ReturnModel <TResult>(_logger); try { var modelValidation = args.Param.ModelValidation(); if (modelValidation.Any()) { rtn = rtn.SendError(GlobalErrors.ModelValidationFail); return(rtn); } #region Before Event Handler var beforeEventHandler = _eventService.GetEvent(moduleName, $"{serviceName}.{actionName}.Before").EventHandler <bool, ServiceParamsWithIdentifier <TServiceParamsWithIdentifier> >(args); if (beforeEventHandler != null) { if (beforeEventHandler.Error.Status) { rtn.Error = beforeEventHandler.Error; return(rtn); } } #endregion Before Event Handler #region Action Body if (invoker != null) { rtn = invoker(args, rtn); } _hubSyncDataService.OnSync(hubSyncDataModel); #endregion #region After Event Handler var afterEventParameterModel = new AfterEventParameterModel <IReturnModel <TResult>, ServiceParamsWithIdentifier <TServiceParamsWithIdentifier> > { DataToBeSent = rtn, ActionParameter = args, ModuleName = moduleName, ServiceName = serviceName, ActionName = actionName }; var afterEventHandler = _eventService.GetEvent(moduleName, $"{serviceName}.{actionName}.After") .EventHandler <TResult, IAfterEventParameterModel <IReturnModel <TResult>, ServiceParamsWithIdentifier <TServiceParamsWithIdentifier> > >(afterEventParameterModel); if (afterEventHandler != null) { if (afterEventHandler.Error.Status) { rtn.Error = afterEventHandler.Error; return(rtn); } else { rtn.Result = afterEventHandler.Result; } } #endregion After Event Handler } catch (Exception ex) { rtn = rtn.SendError(GlobalErrors.TechnicalError, ex); } return(rtn); }