public IActionResult Euler(ParametersViewModel pvm) { var viewModel = new ParametersViewModel(); var list = new List <Point>(); var xt = pvm.xt; var t = pvm.a; float predictor; Console.WriteLine($"Cuando t es: {t} / x es: {xt}"); list.Add(new Point { x = t, y = xt }); while (t < pvm.b) { predictor = xt + pvm.h * func(xt, t, pvm.function); xt = xt + (0.5f) * (func(xt, t, pvm.function) + func(predictor, t + pvm.h, pvm.function)) * pvm.h; t = t + pvm.h; Console.WriteLine($"Cuando t es: {t} / x es: {xt}"); list.Add(new Point { x = (float)Math.Round(t, 2), y = xt }); } viewModel.EulerMejoradoPoints = list; var listEuler = EulerOrden1(pvm); viewModel.EulerPoints = listEuler; return(View(viewModel)); }
public DataTypeViewModel(DocumentIdViewModel id, DocumentUriViewModel uri, TitlesViewModel titlesViewModel, SyntaxViewModel syntaxViewModel, DocumentReferenceViewModel @base, LocationViewModel location, InheritanceViewModel inheritance, ParametersViewModel parameters, ReturnsViewModel returns, UxClassPropertiesViewModel uxProperties, ValuesViewModel values, CommentViewModel comment, DocumentReferenceViewModel declaredIn, ImplementedInterfacesViewModel implementedInterfaces, AttributesViewModel attributes, IEntity underlyingEntity) : base(id, uri, titlesViewModel, syntaxViewModel, comment, declaredIn, underlyingEntity) { Base = @base; Location = location; Inheritance = inheritance; Parameters = parameters; Returns = returns; UxProperties = uxProperties; Values = values; ImplementedInterfaces = implementedInterfaces; Attributes = attributes; }
public MainWindowViewModel() { ParametersVM = new ParametersViewModel(this); Dome2DVM = new Dome2DViewModel(this); Dome3DVM = new Dome3DViewModel(this); ColorChooserVM = new ColorChooserViewModel(this); }
/// <summary> /// Graba la dimensión /// </summary> public void SaveDetails(bool newName) { if (ValidateData()) { // Añade el origen de datos si es nuevo if (DataSource.DataWarehouse.DataSources[DataSource.Id] == null) { DataSource.DataWarehouse.DataSources.Add(DataSource); } // Asigna las propiedades DataSource.Id = Key; DataSource.Sql = Sql; // Asigna las columnas DataSource.Columns.Clear(); DataSource.Columns.AddRange(ColumnsViewModel.GetColumns()); // Asigna los parámetros DataSource.Parameters.Clear(); DataSource.Parameters.AddRange(ParametersViewModel.GetParameters()); // Graba la solución ReportingSolutionViewModel.SaveDataWarehouse(DataSource.DataWarehouse); // Cambia la cabecera Header = DataSource.Id; // Indica que no ha habido modificaciones IsUpdated = false; } }
public MainViewModel() { Login = new LoginViewModel(); Models = new ModelsViewModel(); Parameters = new ParametersViewModel(); Reports = new ReportsViewModel(); Entry = new EntryViewModel(); Years = new ObservableCollection <int>(); AddYearCommand = new RoutedUICommand("AddYear", "AddYear", typeof(MainViewModel)); BackupCommand = new RoutedUICommand("Backup", "Backup", typeof(MainViewModel)); DeleteYearCommand = new RoutedUICommand("DeleteYear", "DeleteYear", typeof(MainViewModel)); LoginCommand = new RoutedUICommand("Login", "Login", typeof(MainViewModel)); RefreshCommand = new RoutedUICommand("Refresh", "Refresh", typeof(MainViewModel)); HelpCommand = new RoutedUICommand("Help", "Help", typeof(MainViewModel)); Bindings = new CommandBindingCollection() { new CommandBinding(AddYearCommand, AddYearExecuted, AddYearCanExecute), new CommandBinding(BackupCommand, BackupExecuted, BackupCanExecute), new CommandBinding(DeleteYearCommand, DeleteYearExecuted, DeleteYearCanExecute), new CommandBinding(LoginCommand, LoginExecuted), new CommandBinding(RefreshCommand, RefreshExecuted), new CommandBinding(HelpCommand, HelpExecuted), }; LoadYears(); }
/// <summary> /// Sets the scheduling parameters. /// If true, parent controller method must truncate the Colors table t (optional), and notify the user that the current /// schedule is redundant /// If false, parent controller method must notify the user that a better schedule may be possible, and suggest /// rescheduling /// </summary> /// <param name="parameters">The parameters.</param> /// <returns>Whether or not any of the parameters became stricter.</returns> public static bool SetSchedulingParameters(ParametersViewModel parameters) { return((parameters.Days != Color.MaxDays && Color.SetMaxDays(parameters.Days)) | (parameters.TimeSlots != Color.MaxTimeSlots && Color.SetMaxTimeSlots(parameters.TimeSlots)) | (parameters.ConcurrencyLimit != Color.ConcurrencyLimit && Color.SetConcurrencyLimit(parameters.ConcurrencyLimit))); }
public KeyValuePair<ContentControl, Action> GetConfigurationView() { var view = new ParametersView(); var viewModel = new ParametersViewModel(); view.DataContext = viewModel; return new KeyValuePair<ContentControl, Action>(view, viewModel.SaveAction); }
public ActionResult Set(ParametersViewModel parameters) { if (!ModelState.IsValid) { return(View(parameters)); } try { if (EntityModifier.SetSchedulingParameters(parameters)) { TempData["messageState"] = 2; //0-success 1-warning 2-danger TempData["message"] = @"Due to the parameters becoming stricter, the old schedule is now redundant, press the Reschedule button to generate a schedule that satisfies the new parameters"; } else { TempData["messageState"] = 1; //0-success 1-warning 2-danger TempData["message"] = @"The parameters did not become stricter, so the current schedule (if it exists) is valid. Also, a more optimal schedule may be possible, try by pressing Reschedule"; } TempData["paramSuccess"] = true; } catch (Exception e) { ModelState.AddModelError("", e.Message); return(View(parameters)); } return(RedirectToAction("Index", "Home")); }
public ActionResult RerenderIndex(int ReportId) { List <DB.ReportSPParameter> reportPara = DB_MSBDW.ReportSPParameters.Where(sp => sp.SSRSReportId == ReportId).OrderByDescending(sp => sp.RowCreateDate).ToList(); ParametersViewModel parametersViewModel = new ParametersViewModel(reportPara); ViewData["selectedReportId"] = ReportId; ViewData["buttonName"] = "PA"; ViewData["selectedReportName"] = DB_MSBDW.SSRSReport1.FirstOrDefault(re => re.id == ReportId).rpt_name; return(View(parametersViewModel.reportSPParameters)); }
private void SaveParameter(EditingFormModel form) { form.parameter.MetaData.Variants = form.Variants; var model = new ParametersViewModel() { EditingForm = form }; model.SaveParentsAndChildren(); Get <IParameterRepository>().Edit(form.parameter); }
public IChildView GetInstrumentationView() { var model = new ParametersViewModel(); var command = new WeaveFileCommand(new CodeWeaverService(), model); model.Clear(); var view = new AssemblyInstrumentationView { AssemblyServices = this.GetAssemblyServices(), WeaveCommand = command, Parameter = model }; return(view); }
// GET: Parameters public ActionResult Index(int id, string name) { int selectedReport = id; string selectedReportName = name; List <DB.ReportSPParameter> reportPara = DB_MSBDW.ReportSPParameters.Where(sp => sp.SSRSReportId == selectedReport).OrderByDescending(sp => sp.RowCreateDate).ToList(); ParametersViewModel parametersViewModel = new ParametersViewModel(reportPara); ViewData["selectedReportId"] = selectedReport; ViewData["buttonName"] = "PA"; ViewData["selectedReportName"] = selectedReportName; return(View(parametersViewModel.reportSPParameters)); }
public AttachedMemberViewModel(DocumentIdViewModel id, DocumentUriViewModel uri, TitlesViewModel titles, DocumentReferenceViewModel declaredIn, ParametersViewModel parameters, ReturnsViewModel returns, ValuesViewModel values, AttachedMemberSourceViewModel source, CommentViewModel comment, IEntity underlyingEntity) : base(id, uri, titles, null, comment, declaredIn, underlyingEntity) { Parameters = parameters; Returns = returns; Values = values; Source = source; }
public ActionResult AddingParameter(AddFormModel form) { ParametersViewModel viewModel = new ParametersViewModel(); if (ModelState.IsValid) { if (form != null) { viewModel.AddForm = form; viewModel.AddForm.Parameters = Get <IParameterRepository>().GetAllParam(); viewModel.SetPropertiesAndMetadata(); if (!form.parameter.MetaData.Is_var) { var flag = Get <IParameterRepository>().Add(form.parameter); return(RedirectTo <ParametersController>(a => a.AddConfirm())); } else { if (form.NumValue == 0) { return(RedirectTo <ParametersController>(a => a.AddParameter(form))); } else { TempData["newParameter"] = form.parameter; var varForm = new VarFormModel() { NumVariant = form.NumValue, Variants = new Variant[form.NumValue], Parameter = form.parameter }; return(RedirectTo <ParametersController>(a => a.Var(varForm))); } } } else { throw new Exception("Отсутствует форма с данными,необходимы для создания параметра здоровья."); } } else { throw new Exception("Форма с входными данными не прошла валидацию."); } }
public async Task <IActionResult> DailyParameters(ParametersViewModel viewModel) { if (ModelState.IsValid) { var user = HttpContext.User; string userId = userManager.GetUserId(user); var userParam = appContext.Params.Where(x => x.UserId.Equals(userId) & x.Date.Date.Equals(viewModel.Date.ToUniversalTime().Date)).FirstOrDefault(); if (userParam == null) { await appContext.Params.AddAsync( new Param { UserId = userId, Date = viewModel.Date.ToUniversalTime(), Weight = viewModel.Weight, Breast = viewModel.Breast, Waist = viewModel.Waist, Buttock = viewModel.Pelvis, Thigh = viewModel.Thigh }); } else { userParam.Date = viewModel.Date.ToUniversalTime(); userParam.Weight = viewModel.Weight; userParam.Breast = viewModel.Breast; userParam.Waist = viewModel.Waist; userParam.Buttock = viewModel.Pelvis; userParam.Thigh = viewModel.Thigh; appContext.Params.Update(userParam); } await appContext.SaveChangesAsync(); return(RedirectToAction("BodyStat", "Statistic")); } else { return(View(viewModel)); } }
private void SourceButton_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog { DefaultExt = Const.DafaultExtention, Filter = Const.DefaultFilter }; if (openFileDialog.ShowDialog() == true) { SourceLbl.Content = openFileDialog.FileName; SourceParametersList = OpenFile(openFileDialog.FileName); } if (SourceParametersList != null && TargetParametersList != null) { TableGrid.Visibility = Visibility.Visible; DataGrid.ItemsSource = GetList(SourceParametersList, TargetParametersList); ResultLbl.Content = ParametersViewModel.TotalStatusResult(SourceParametersList, TargetParametersList); } }
private List <Point> EulerOrden1(ParametersViewModel pvm) { var list = new List <Point>(); var xt = pvm.xt; var t = pvm.a; list.Add(new Point { x = t, y = xt }); while (t < pvm.b) { xt = xt + pvm.h * func(xt, t, pvm.function); t = t + pvm.h; Console.WriteLine($"Cuando t es: {t} / x es: {xt}"); list.Add(new Point { x = (float)Math.Round(t, 2), y = xt }); } return(list); }
public async Task <IActionResult> RunNow([FromBody] RunNowViewModel request) { try { ParametersViewModel.VerifyParameterNameAvailability(request.JobParameters); Guid AutomationId = request.AutomationId; Guid AgentId = request.AgentId; Guid AgentGroupId = request.AgentGroupId; Schedule schedule = new Schedule(); schedule.AgentId = AgentId; schedule.AgentGroupId = AgentGroupId; schedule.CRONExpression = ""; schedule.LastExecution = DateTime.UtcNow; schedule.NextExecution = DateTime.UtcNow; schedule.IsDisabled = false; schedule.ProjectId = null; schedule.StartingType = "RunNow"; schedule.Status = "New"; schedule.ExpiryDate = DateTime.UtcNow.AddDays(1); schedule.StartDate = DateTime.UtcNow; schedule.AutomationId = AutomationId; schedule.CreatedOn = DateTime.UtcNow; schedule.CreatedBy = applicationUser?.UserName; var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(schedule); _hubManager.ExecuteJob(jsonScheduleObj, request.JobParameters); return(Ok()); } catch (Exception ex) { return(ex.GetActionResult()); } }
public IActionResult DailyParameters() { var user = HttpContext.User; ParametersViewModel viewModel = new ParametersViewModel { Date = DateTime.Now }; string userId = userManager.GetUserId(user); var currentUserParam = appContext.Params.Where(x => x.UserId.Equals(userId) & x.Date.Date.Equals(DateTime.UtcNow.Date)).FirstOrDefault(); if (currentUserParam != null) // на эту дату есть уже внесенные данные в базе данных { viewModel = new ParametersViewModel { Date = currentUserParam.Date.ToLocalTime(), Breast = currentUserParam.Breast, Pelvis = currentUserParam.Buttock, Thigh = currentUserParam.Thigh, Waist = currentUserParam.Waist, Weight = currentUserParam.Weight }; } return(View(viewModel)); }
public MemberViewModel(DocumentIdViewModel id, DocumentUriViewModel uri, TitlesViewModel titles, SyntaxViewModel syntax, LocationViewModel location, DocumentReferenceViewModel declaredIn, ParametersViewModel parameters, ReturnsViewModel returns, UxMemberPropertiesViewModel uxProperties, ValuesViewModel values, MemberFlagsViewModel flags, CommentViewModel comment, AttributesViewModel attributes, IEntity underlyingEntity) : base(id, uri, titles, syntax, comment, declaredIn, underlyingEntity) { Location = location; Parameters = parameters; Returns = returns; UxProperties = uxProperties; Flags = flags; Values = values; Attributes = attributes; }
/// <summary> /// Comprueba los datos introducidos /// </summary> private bool ValidateData() { bool validated = false; // Comprueba los datos if (string.IsNullOrWhiteSpace(Key)) { ReportingSolutionViewModel.SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca la clave del origen de datos"); } else if (string.IsNullOrWhiteSpace(Sql)) { ReportingSolutionViewModel.SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el comando SQL del origen de datos"); } else if (ColumnsViewModel.Items.Count == 0) { ReportingSolutionViewModel.SolutionViewModel.MainController.SystemController.ShowMessage("No se ha definido ninguna columna"); } else if (ColumnsViewModel.ValidateData() && ParametersViewModel.ValidateData()) { validated = true; } // Devuelve el valor que indica si se ha podido grabar return(validated); }
public string CreateJob(string scheduleSerializeObject, IEnumerable <ParametersViewModel>?parameters) { var schedule = JsonSerializer.Deserialize <Schedule>(scheduleSerializeObject); if (organizationSettingManager.HasDisallowedExecution()) { return("DisallowedExecution"); } var automationVersion = automationVersionRepository.Find(null, a => a.AutomationId == schedule.AutomationId).Items?.FirstOrDefault(); //if this is a scheduled job get the schedule parameters if (schedule.StartingType.Equals("RunNow") == false) { List <ParametersViewModel> parametersList = new List <ParametersViewModel>(); var scheduleParameters = scheduleParameterRepository.Find(null, p => p.ScheduleId == schedule.Id).Items; foreach (var scheduleParameter in scheduleParameters) { ParametersViewModel parametersViewModel = new ParametersViewModel { Name = scheduleParameter.Name, DataType = scheduleParameter.DataType, Value = scheduleParameter.Value, CreatedBy = scheduleParameter.CreatedBy, CreatedOn = DateTime.UtcNow }; parametersList.Add(parametersViewModel); } parameters = parametersList.AsEnumerable(); } Job job = new Job(); job.AgentId = schedule.AgentId == null ? Guid.Empty : schedule.AgentId.Value; job.CreatedBy = schedule.CreatedBy; job.CreatedOn = DateTime.UtcNow; job.EnqueueTime = DateTime.UtcNow; job.JobStatus = JobStatusType.New; job.AutomationId = schedule.AutomationId == null ? Guid.Empty : schedule.AutomationId.Value; job.AutomationVersion = automationVersion != null ? automationVersion.VersionNumber : 0; job.AutomationVersionId = automationVersion != null ? automationVersion.Id : Guid.Empty; job.Message = "Job is created through internal system logic."; foreach (var parameter in parameters ?? Enumerable.Empty <ParametersViewModel>()) { JobParameter jobParameter = new JobParameter { Name = parameter.Name, DataType = parameter.DataType, Value = parameter.Value, JobId = job.Id ?? Guid.Empty, CreatedBy = schedule.CreatedBy, CreatedOn = DateTime.UtcNow, Id = Guid.NewGuid() }; jobParameterRepository.Add(jobParameter); } jobRepository.Add(job); _hub.Clients.All.SendAsync("botnewjobnotification", job.AgentId.ToString()); webhookPublisher.PublishAsync("Jobs.NewJobCreated", job.Id.ToString()).ConfigureAwait(false); return("Success"); }
public ParametersPage(ParametersViewModel model) { InitializeComponent(); _model = model; BindingContext = _model; }
public async Task <IActionResult> Put(string id, [FromBody] CreateScheduleViewModel request) { try { ParametersViewModel.VerifyParameterNameAvailability(request.Parameters); //validate the cron expression if (!string.IsNullOrWhiteSpace(request.CRONExpression)) { try { CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard); } catch (Exception ex) { ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message)); return(BadRequest(ModelState)); } } Guid entityId = new Guid(id); var existingSchedule = repository.GetOne(entityId); if (existingSchedule == null) { return(NotFound()); } existingSchedule.Name = request.Name; existingSchedule.AgentId = request.AgentId; existingSchedule.AgentGroupId = request.AgentGroupId; existingSchedule.CRONExpression = request.CRONExpression; existingSchedule.LastExecution = request.LastExecution; existingSchedule.NextExecution = request.NextExecution; existingSchedule.IsDisabled = request.IsDisabled; existingSchedule.ProjectId = request.ProjectId; existingSchedule.StartingType = request.StartingType; existingSchedule.Status = request.Status; existingSchedule.ExpiryDate = request.ExpiryDate; existingSchedule.StartDate = request.StartDate; existingSchedule.AutomationId = request.AutomationId; var response = await base.PutEntity(id, existingSchedule); _manager.DeleteExistingParameters(entityId); var set = new HashSet <string>(); foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>()) { if (!set.Add(parameter.Name)) { ModelState.AddModelError("ScheduleParameter", "ScheduleParameter Name Already Exists"); return(BadRequest(ModelState)); } ScheduleParameter scheduleParameter = new ScheduleParameter { Name = parameter.Name, DataType = parameter.DataType, Value = parameter.Value, ScheduleId = entityId, CreatedBy = applicationUser?.UserName, CreatedOn = DateTime.UtcNow, Id = Guid.NewGuid() }; _scheduleParameterRepository.Add(scheduleParameter); } _recurringJobManager.RemoveIfExists(existingSchedule.Id?.ToString()); if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual")) { var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(existingSchedule); _backgroundJobClient.Schedule(() => _hubManager.ScheduleNewJob(jsonScheduleObj), new DateTimeOffset(existingSchedule.StartDate.Value)); } return(response); } catch (Exception ex) { return(ex.GetActionResult()); } }
public ParametersWindow(ObservableCollection <Parameter> parameterList) { InitializeComponent(); DataContext = new ParametersViewModel(parameterList); }
public ParametersWindow() { InitializeComponent(); DataContext = new ParametersViewModel(); }
public ParametersView(ParametersViewModel parametersViewModel) { InitializeComponent(); DataContext = parametersViewModel; }
public ViewModelLocator() { _main = new MainViewModel(); _parameters = new ParametersViewModel(); _parameterValues = new ParameterValuesViewModel(); }
public async Task <IActionResult> Post([FromBody] CreateScheduleViewModel request) { ParametersViewModel.VerifyParameterNameAvailability(request.Parameters); if (request == null) { ModelState.AddModelError("Save", "No data passed"); return(BadRequest(ModelState)); } //validate the cron expression if (!string.IsNullOrWhiteSpace(request.CRONExpression)) { try { CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard); } catch (Exception ex) { ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message)); return(BadRequest(ModelState)); } } Guid entityId = Guid.NewGuid(); if (request.Id == null || !request.Id.HasValue || request.Id.Equals(Guid.Empty)) { request.Id = entityId; } try { Schedule requestObj = request.Map(request); //assign request to schedule entity foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>()) { ScheduleParameter scheduleParameter = new ScheduleParameter { Name = parameter.Name, DataType = parameter.DataType, Value = parameter.Value, ScheduleId = entityId, CreatedBy = applicationUser?.UserName, CreatedOn = DateTime.UtcNow, Id = Guid.NewGuid() }; _scheduleParameterRepository.Add(scheduleParameter); } var response = await base.PostEntity(requestObj); _recurringJobManager.RemoveIfExists(requestObj.Id?.ToString()); if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual")) { var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(requestObj); _backgroundJobClient.Schedule(() => _hubManager.ScheduleNewJob(jsonScheduleObj), new DateTimeOffset(requestObj.StartDate.Value)); } return(response); } catch (Exception ex) { return(ex.GetActionResult()); } }
public string CreateJob(string scheduleSerializeObject, IEnumerable<ParametersViewModel>? parameters) { var schedule = JsonSerializer.Deserialize<Schedule>(scheduleSerializeObject); //if schedule has expired if (DateTime.UtcNow > schedule.ExpiryDate) { _recurringJobManager.RemoveIfExists(schedule.Id.Value.ToString());//removes an existing recurring job return "ScheduleExpired"; } if (_organizationSettingManager.HasDisallowedExecution()) { return "DisallowedExecution"; } //if this is not a "RunNow" job, then use the schedule parameters if (schedule.StartingType.Equals("RunNow") == false) { if (schedule.MaxRunningJobs != null) { if (ActiveJobLimitReached(schedule.Id, schedule.MaxRunningJobs)) { return "ActiveJobLimitReached"; } } List<ParametersViewModel> parametersList = new List<ParametersViewModel>(); var scheduleParameters = _scheduleParameterRepository.Find(null, p => p.ScheduleId == schedule.Id).Items; foreach (var scheduleParameter in scheduleParameters) { ParametersViewModel parametersViewModel = new ParametersViewModel { Name = scheduleParameter.Name, DataType = scheduleParameter.DataType, Value = scheduleParameter.Value, CreatedBy = scheduleParameter.CreatedBy, CreatedOn = DateTime.UtcNow }; parametersList.Add(parametersViewModel); } parameters = parametersList.AsEnumerable(); } var automationVersion = _automationVersionRepository.Find(null, a => a.AutomationId == schedule.AutomationId).Items?.FirstOrDefault(); Job job = new Job(); job.AgentId = schedule.AgentId == null ? Guid.Empty : schedule.AgentId.Value; job.AgentGroupId = schedule.AgentGroupId == null ? Guid.Empty : schedule.AgentGroupId.Value; job.CreatedBy = schedule.CreatedBy; job.CreatedOn = DateTime.UtcNow; job.EnqueueTime = DateTime.UtcNow; job.JobStatus = JobStatusType.New; job.AutomationId = schedule.AutomationId == null ? Guid.Empty : schedule.AutomationId.Value; job.AutomationVersion = automationVersion != null ? automationVersion.VersionNumber : 0; job.AutomationVersionId = automationVersion != null ? automationVersion.Id : Guid.Empty; job.Message = "Job is created through internal system logic."; job.ScheduleId = schedule.Id; foreach (var parameter in parameters ?? Enumerable.Empty<ParametersViewModel>()) { JobParameter jobParameter = new JobParameter { Name = parameter.Name, DataType = parameter.DataType, Value = parameter.Value, JobId = job.Id ?? Guid.Empty, CreatedBy = schedule.CreatedBy, CreatedOn = DateTime.UtcNow, Id = Guid.NewGuid() }; _jobParameterRepository.Add(jobParameter); } _jobRepository.Add(job); if (job.AgentGroupId == null || job.AgentGroupId == Guid.Empty) { _hub.Clients.All.SendAsync("botnewjobnotification", job.AgentId.ToString()); } else //notify all group members { var agentsInGroup = _agentGroupManager.GetAllMembersInGroup(job.AgentGroupId.ToString()); foreach (var groupMember in agentsInGroup ?? Enumerable.Empty<AgentGroupMember>()) { _hub.Clients.All.SendAsync("botnewjobnotification", groupMember.AgentId.ToString()); } } _webhookPublisher.PublishAsync("Jobs.NewJobCreated", job.Id.ToString()).ConfigureAwait(false); return "Success"; }