public void UpdateInitiativeBusiness(InitiativeContext context, string[] selectedBusiness, Initiative initiativeToUpdate) { if (selectedBusiness == null) { initiativeToUpdate.InitiativeBusiness = new List <InitiativeBusiness>(); return; } var selectedBusinessHS = new HashSet <string>(selectedBusiness); var initiativeBusiness = new HashSet <int> (initiativeToUpdate.InitiativeBusiness.Select(c => c.Business.BusinessId)); foreach (var business in context.Business) { // This is the add a meta tag condition from UI if (selectedBusinessHS.Contains(business.BusinessId.ToString())) { if (!initiativeBusiness.Contains(business.BusinessId)) { initiativeToUpdate.InitiativeBusiness.Add ( new InitiativeBusiness { InitiativeId = initiativeToUpdate.InitiativeId, BusinessId = business.BusinessId }); } } else { //This is the delete a meta tag conditon if (initiativeBusiness.Contains(business.BusinessId)) { InitiativeBusiness businessToRemove = initiativeToUpdate .InitiativeBusiness .SingleOrDefault(i => i.BusinessId == business.BusinessId); context.Remove(businessToRemove); } } } }
public async Task <IActionResult> OnPostAsync(string[] selectedBusiness, string[] selectedFacility, string[] selectedMetaTags) { if (!ModelState.IsValid) { return(Page()); } /*******************************************/ //Get the entity var newInitiative = new Initiative(); // Add Business if (selectedBusiness != null) { newInitiative.InitiativeBusiness = new List <InitiativeBusiness>(); foreach (var business in selectedBusiness) { var initiativeBusinessToAdd = new InitiativeBusiness { BusinessId = int.Parse(business) }; newInitiative.InitiativeBusiness.Add(initiativeBusinessToAdd); } } // Add Facility if (selectedFacility != null) { newInitiative.InitiativeFacility = new List <InitiativeFacility>(); foreach (var facility in selectedFacility) { var initiativeFacilityToAdd = new InitiativeFacility { FacilityId = int.Parse(facility) }; newInitiative.InitiativeFacility.Add(initiativeFacilityToAdd); } } // Add Meta Tags if (selectedMetaTags != null) { newInitiative.InitiativeMetaTag = new List <InitiativeMetaTag>(); foreach (var metaTag in selectedMetaTags) { var initiativeMetaTagToAdd = new InitiativeMetaTag { MetaTagId = int.Parse(metaTag) }; newInitiative.InitiativeMetaTag.Add(initiativeMetaTagToAdd); } } // Add Facility //the method of updating below is used as a security measure and to prevent over posting if (await TryUpdateModelAsync <Initiative>( newInitiative, "Initiative", i => i.ARBDate, i => i.EngagementName, i => i.EngagementIdentifier, i => i.EngagementTypeId, i => i.CurrentStatusId, i => i.SolutionTypeId, i => i.LocationId, i => i.PHI, i => i.PCI, i => i.UpStreamSystem, i => i.DownStreamSystem, i => i.ProjectStartDate, i => i.Resource, i => i.ReceiveDate, i => i.StartDate, i => i.CompleteDate, i => i.LastModifiedDate, i => i.ModifiedUserName, i => i.IsActive)) { _context.Initiative.Add(newInitiative); await _context.SaveChangesAsync(); return(RedirectToPage("./Index")); } PopulateAssignedMetaTagData(_context, newInitiative); return(Page()); /*************************************** * _context.Initiative.Add(Initiative); * await _context.SaveChangesAsync(); * * return RedirectToPage("./Index");*/ }