Exemplo n.º 1
0
        public async Task <IActionResult> Configure(int?id = null)
        {
            ConfigureJobModel model = CreateModel <ConfigureJobModel>();

            if (id.HasValue && id > 0)
            {
                BackupJob job = await backupJobRepository.Get(id.Value);

                if (job == null)
                {
                    return(NotFound());
                }

                var providers = job.Providers.OrderBy(p => p.Order);

                model.ID           = job.ID;
                model.Name         = job.Name;
                model.CronSchedule = await schedulerService.GetCronSchedule(id.Value);

                model.BackupProvider     = providers.FirstOrDefault().Provider.ID;
                model.StorageProvider    = providers.LastOrDefault().Provider.ID;
                model.TransformProviders = providers.Where(p => p.Provider.Type == ProviderType.Transform).Select(tp => tp.Provider.ID).ToArray();

                model.ProviderInstances = job.Providers.ToDictionary(k => k.Provider.ID, v => v.ID);
            }

            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Configure(ConfigureJobModel model)
        {
            // TODO: find out why ModelState is invalid with unvalidated state (probably because of the IEnumerable/Dictionary Providers property)
            if (ModelState.ErrorCount == 0)
            {
                try
                {
                    int[] providerIDs = model.GetProviderIDs();

                    List <ProviderInstance> providerInstances = new List <ProviderInstance>(providerIDs.Length);
                    for (int i = 0; i < providerIDs.Length; i++)
                    {
                        Provider provider = await providerRepository.Get(providerIDs[i]);

                        ProviderInstance providerInstance = await providerMappingService.CreateProviderInstance(provider, model.Providers.ElementAt(i));

                        providerInstance.Order = i;
                        providerInstances.Add(providerInstance);
                    }

                    int jobId = await backupJobRepository.AddOrUpdate(model.ID, model.Name, providerInstances);

                    await schedulerService.CreateOrUpdate(jobId, model.CronSchedule);
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, $"Failed to save job '{model.Name}' to database");
                }
            }

            return(RedirectToAction("Index"));
        }