private void UpdateSubscriptionJobs(string[] selectedJobs, Subscription subscriptionToUpdate) { if (selectedJobs == null) { subscriptionToUpdate.SubscriptionJobs = new List <SubscriptionJobs>(); return; } var selectedJobsHS = new HashSet <string>(selectedJobs); var subscriptionJobs = new HashSet <int> (subscriptionToUpdate.SubscriptionJobs.Select(j => j.Job.JobId)); foreach (var job in _context.Job) { if (selectedJobsHS.Contains(job.JobId.ToString())) { if (!subscriptionJobs.Contains(job.JobId)) { subscriptionToUpdate.SubscriptionJobs.Add(new SubscriptionJobs { SubscriptionId = subscriptionToUpdate.SubscriptionId, JobId = job.JobId }); } } else { if (subscriptionJobs.Contains(job.JobId)) { SubscriptionJobs jobToRemove = subscriptionToUpdate.SubscriptionJobs.FirstOrDefault(i => i.JobId == job.JobId); _context.Remove(jobToRemove); } } } }
public async Task <IActionResult> Create([Bind("SubscriptionId,SubscriptionName,CustomerId,HardwareId")] Subscription subscription, string[] selectedK_Admins, string[] selectedJobs) { if (selectedK_Admins != null) { subscription.K_AdminSubscriptions = new List <K_AdminSubscriptions>(); foreach (var k_admin in selectedK_Admins) { var k_adminToAdd = new K_AdminSubscriptions { SubscriptionId = subscription.SubscriptionId, K_AdminId = int.Parse(k_admin) }; subscription.K_AdminSubscriptions.Add(k_adminToAdd); } } if (selectedJobs != null) { subscription.SubscriptionJobs = new List <SubscriptionJobs>(); foreach (var job in selectedJobs) { var jobToAdd = new SubscriptionJobs { SubscriptionId = subscription.SubscriptionId, JobId = int.Parse(job) }; subscription.SubscriptionJobs.Add(jobToAdd); } } if (ModelState.IsValid) { _context.Add(subscription); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } //ViewData["CustomerId"] = new SelectList(_context.Customer, "CustomerId", "CompanyName", subscription.CustomerId); //ViewData["HardwareId"] = new SelectList(_context.Hardware, "HardwareId", "HardwareName", subscription.HardwareId); PopulateCompanyDropDownList(subscription.CustomerId); PopulateHardwareDropDownList(subscription.HardwareId); PopulateAssignedK_AdminData(subscription); PopulateAssignedJobData(subscription); return(View(subscription)); }