public async Task <IActionResult> ConfigureJobProvider(CreateJobProviderModel model) { CreateJob createJob = HttpContext.Session.GetObject <CreateJob>(JOB_STORAGE_KEY); if (createJob == null) { return(RedirectToAction("Index", "Home")); } if (ModelState.IsValid) { createJob.Providers.Add(model); HttpContext.Session.SetObject(JOB_STORAGE_KEY, createJob); int nextIndex = model.CurrentIndex + 1; if (nextIndex >= createJob.ProviderIDs.Length) { await SaveJob(createJob); HttpContext.Session.Clear(); return(RedirectToAction("Index")); } else { int?nextId = await providerRepository.GetInstanceID(createJob.Base.ID, nextIndex); return(RedirectToAction("ConfigureJobProvider", new { index = nextIndex, id = nextId })); } } return(View(model)); }
public async Task <IActionResult> ConfigureJobProvider(int index = 0, int id = 0) { CreateJob createJob = HttpContext.Session.GetObject <CreateJob>(JOB_STORAGE_KEY); if (createJob == null) { return(RedirectToAction("Index", "Home")); } CreateJobProviderModel model = null; Provider provider = await providerRepository.Get(createJob.ProviderIDs[index]); Dictionary <int, object> values = new Dictionary <int, object>(); if (id > 0) { model = CreateModel <ModifyJobProviderModel>("Modify Schedule"); model.ID = id; IEnumerable <ProviderInstanceProperty> propertyValues = await providerRepository.GetProviderValues(id); foreach (ProviderInstanceProperty propertyValue in propertyValues) { object parsedValue = await providerMappingService.GetPresentationValue(propertyValue); values.Add(propertyValue.Property.ID, parsedValue); } } else { model = CreateModel <CreateJobProviderModel>("Create Schedule"); } model.CurrentIndex = index; model.ProviderName = provider.Name; model.Properties = provider.Properties.Select(x => new ProviderPropertyModel(x.Name, x.Description, providerMappingService.GetTemplateFromType(x.Type), values.ContainsKey(x.ID) ? values[x.ID] : null, x.Attributes?.ToDictionary(k => k.Name.ToString(), v => v.Value))).ToList(); return(View(model)); }