public async Task <IActionResult> Edit(int id, [Bind("SoftwareId,Name,Version,LicenseStart,LicenseEnd,UseCases,Description,TechAreaId,TipiId,AppUserId,Vendor,ItOwnerId,BusinessOwnerId,PurposeId,IsUsed,IsInternetFacing,IsMobile,TotalLicenses,LicensesInUse,ItOwnerName,ResellerId,Standardized,Confidentiality,Integrity,Availability,Traceability")] Software software, [Bind("LicenseInfo")] bool LicenseInfo, [Bind("TeamId")] int[] teams, [Bind("BusinessOwnerTeamId")] int[] businessTeams, string ResellerBox) { if (id != software.SoftwareId) { return(NotFound()); } //gets current user's id /* * var currentUser = _userManager.GetUserAsync(HttpContext.User).Result; * software.AppUser = currentUser; */ var currentUser = _userManager.FindByIdAsync(software.AppUserId).Result; var selectListTeams = _context.Teams; var vm = new EditVM(); software.Review = DateTime.Now; software.ItOwner = await _context.Teams.Where(t => t.TeamId == software.ItOwnerId).FirstOrDefaultAsync(); //Checks the dates, returns an error if dates are not good, fills the selected lists if (LicenseInfo == false || software.LicenseStart == null || software.LicenseEnd == null) { //Software thisSoftware = await _context.Softwares.FirstOrDefaultAsync(s => s == software); software.LicenseStart = DateTime.Now.AddYears(-1); software.LicenseEnd = DateTime.Now.AddYears(1); } if ((software.LicenseStart > software.LicenseEnd) || (software.TotalLicenses < software.LicensesInUse)) { ModelState.AddModelError(string.Empty, "End License Date cannot be smaller than Start License Date"); ModelState.AddModelError(string.Empty, "Or Number of Licenses in Use cannot be bigger than Total Licenses!"); software.TeamIds = new List <int>(); software.BusinessOwnerTeamIds = new List <int>(); foreach (var Id in teams) { software.TeamIds.Add(Id); } foreach (var Id in businessTeams) { software.BusinessOwnerTeamIds.Add(Id); } ViewData["TeamId"] = new MultiSelectList(selectListTeams, "TeamId", "Name", software.TeamIds); ViewData["BusinessOwnerTeamId"] = new MultiSelectList(selectListTeams, "TeamId", "Name", software.BusinessOwnerTeamIds); ViewData["ItOwnerId"] = new SelectList(selectListTeams, "TeamId", "Name", software.ItOwnerId); ViewData["TechAreaId"] = new SelectList(_context.TechAreas, "TechAreaId", "Name", software.TechAreaId); ViewData["TipiId"] = new SelectList(_context.Tipies, "TipiId", "Name", software.TipiId); ViewData["PurposeId"] = new SelectList(_context.Purposes, "PurposeId", "Name", software.PurposeId); ViewData["ResellerId"] = new SelectList(_context.Reseller, "ResellerId", "Name", software.ResellerId); vm.Software = software; return(View(vm)); } if (ModelState.IsValid) { try { if (software.ResellerId == null && ResellerBox != null) { var tempReseller = new Reseller { Name = ResellerBox }; _context.Reseller.Add(tempReseller); await _context.SaveChangesAsync(); software.Reseller = await _context.Reseller.LastAsync(); } _context.Update(software); await _context.SaveChangesAsync(); SoftwareTeam st = new SoftwareTeam(); SoftwareBusinessOwnerTeam sbot = new SoftwareBusinessOwnerTeam(); var currentSoftwareId = _context.Softwares.FirstOrDefault(s => s.SoftwareId == software.SoftwareId).SoftwareId; //Delte old records var oldSTs = _context.SoftwareTeams.Where(oldsts => oldsts.SoftwareId == id).ToList(); _context.SoftwareTeams.RemoveRange(oldSTs); await _context.SaveChangesAsync(); var oldsbot = _context.SoftwareBusinessOwnerTeams.Where(oldsbots => oldsbots.SoftwareId == id).ToList(); _context.SoftwareBusinessOwnerTeams.RemoveRange(oldsbot); /* * if (teams.Length == 0) * { * //st.TeamId = currentUser.TeamId ?? 0; --> this gets the team of the current logged in user * st.TeamId = _context.Teams.Where(t => t.Name == "Unknown").FirstOrDefault().TeamId; //gets the 'Uknwon Team' * st.SoftwareId = currentSoftwareId; * _context.SoftwareTeams.Add(st); * await _context.SaveChangesAsync(); * }*/ //SoftwareTeams if (teams.FirstOrDefault() == -1) { var tempTeams = _context.Teams.ToArray(); foreach (var t in tempTeams) { st.TeamId = t.TeamId; st.SoftwareId = currentSoftwareId; _context.SoftwareTeams.Add(st); await _context.SaveChangesAsync(); } } else { foreach (var t in teams) { st.TeamId = t; st.SoftwareId = currentSoftwareId; _context.SoftwareTeams.Add(st); await _context.SaveChangesAsync(); } } //SoftwareBusinessOwnerTeams if (businessTeams.FirstOrDefault() == -1) { var tempTeams = _context.Teams.ToArray(); foreach (var t in tempTeams) { sbot.BusinessOwnerTeamId = t.TeamId; sbot.SoftwareId = currentSoftwareId; _context.SoftwareBusinessOwnerTeams.Add(sbot); await _context.SaveChangesAsync(); } } else { foreach (var t in businessTeams) { sbot.BusinessOwnerTeamId = t; sbot.SoftwareId = currentSoftwareId; _context.SoftwareBusinessOwnerTeams.Add(sbot); await _context.SaveChangesAsync(); } } } catch (DbUpdateConcurrencyException) { if (!SoftwareExists(software.SoftwareId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } software.TeamIds = new List <int>(); software.BusinessOwnerTeamIds = new List <int>(); foreach (var Id in teams) { software.TeamIds.Add(Id); } foreach (var Id in businessTeams) { software.BusinessOwnerTeamIds.Add(Id); } vm.Software = software; ViewData["TeamId"] = new MultiSelectList(selectListTeams, "TeamId", "Name", software.TeamIds); ViewData["BusinessOwnerTeamId"] = new MultiSelectList(selectListTeams, "TeamId", "Name", software.BusinessOwnerTeamIds); ViewData["ItOwnerId"] = new SelectList(selectListTeams, "TeamId", "Name", software.ItOwnerId); ViewData["TechAreaId"] = new SelectList(_context.TechAreas, "TechAreaId", "Name", software.TechAreaId); ViewData["TipiId"] = new SelectList(_context.Tipies, "TipiId", "Name", software.TipiId); ViewData["PurposeId"] = new SelectList(_context.Purposes, "PurposeId", "Name", software.PurposeId); ViewData["ResellerId"] = new SelectList(_context.Reseller, "ResellerId", "Name", software.ResellerId); return(View(vm)); }
public async Task <IActionResult> Create([Bind("SoftwareId,Name,Version,LicenseStart,LicenseEnd,UseCases,Description,TechAreaId,TipiId,Vendor,ItOwnerId,BusinessOwnerId,PurposeId,IsUsed,IsInternetFacing,IsMobile,TotalLicenses,LicensesInUse,ItOwnerName,ResellerId,Confidentiality,Integrity,Availability,Traceability")] Software software, [Bind("LicenseInfo")] bool LicenseInfo, [Bind("TeamId")] int[] teams, [Bind("BusinessOwnerTeamId")] int[] businessTeams, string ResellerBox ) { var currentUser = _userManager.GetUserAsync(HttpContext.User).Result; var vm = new CreateVM(); software.Standardized = DateTime.Now; software.AppUser = currentUser; software.ItOwner = await _context.Teams.Where(t => t.TeamId == software.ItOwnerId).FirstOrDefaultAsync(); var selectListTeams = _context.Teams.Include(it => it.ItSoftwares); var selectListItOnly = _context.Teams.Where(t => t.Department.Name == "Infrastructure"); var selectListBusinessOnly = _context.Teams.Where(t => t.Department.Name != "Infrastructure"); if (LicenseInfo == false || software.LicenseStart == null || software.LicenseEnd == null) { software.LicenseStart = DateTime.Now.AddYears(-1); software.LicenseEnd = DateTime.Now.AddYears(1); } if ((software.LicenseStart > software.LicenseEnd) || (software.TotalLicenses < software.LicensesInUse)) { ModelState.AddModelError(string.Empty, "End License Date cannot be smaller than Start License Date!"); ModelState.AddModelError(string.Empty, "Or Number of Licenses in Use cannot be bigger than Total Licenses!"); software.TeamIds = new List <int>(); software.BusinessOwnerTeamIds = new List <int>(); foreach (var id in teams) { software.TeamIds.Add(id); } foreach (var id in businessTeams) { software.BusinessOwnerTeamIds.Add(id); } ViewData["TeamId"] = new MultiSelectList(selectListTeams, "TeamId", "Name", software.TeamIds); ViewData["BusinessOwnerTeamId"] = new MultiSelectList(_context.Teams, "TeamId", "Name", software.BusinessOwnerTeamIds); ViewData["TechAreaId"] = new SelectList(_context.TechAreas, "TechAreaId", "Name", software.TechAreaId); ViewData["ItOwnerId"] = new SelectList(selectListTeams, "TeamId", "Name", software.ItOwner.TeamId); ViewData["TipiId"] = new SelectList(_context.Tipies, "TipiId", "Name", software.TipiId); ViewData["PurposeId"] = new SelectList(_context.Purposes, "PurposeId", "Name", software.PurposeId); ViewData["ResellerId"] = new SelectList(_context.Reseller, "ResellerId", "Name", software.ResellerId); vm.Software = software; return(View(vm)); } if (ModelState.IsValid) { if (software.ResellerId == null && ResellerBox != null) { var tempReseller = new Reseller { Name = ResellerBox }; _context.Reseller.Add(tempReseller); await _context.SaveChangesAsync(); software.Reseller = await _context.Reseller.LastAsync(); } _context.Add(software); await _context.SaveChangesAsync(); SoftwareTeam st = new SoftwareTeam(); SoftwareBusinessOwnerTeam sbot = new SoftwareBusinessOwnerTeam(); var currentSoftwareId = _context.Softwares.Last().SoftwareId; /* * if (teams.Length == 0) * { * //st.TeamId = currentUser.TeamId ?? 0; --> this gets the team of the current logged in user * st.TeamId = _context.Teams.Where(t => t.Name == "Unknown").FirstOrDefault().TeamId; //gets the 'Uknwon Team' * st.SoftwareId = currentSoftwareId; * _context.SoftwareTeams.Add(st); * await _context.SaveChangesAsync(); * }*/ if (teams.FirstOrDefault() == -1) { var tempTeams = _context.Teams.ToArray(); foreach (var t in tempTeams) { st.TeamId = t.TeamId; st.SoftwareId = currentSoftwareId; _context.SoftwareTeams.Add(st); await _context.SaveChangesAsync(); } } else { foreach (var t in teams) { st.TeamId = t; st.SoftwareId = currentSoftwareId; _context.SoftwareTeams.Add(st); await _context.SaveChangesAsync(); } } if (businessTeams.FirstOrDefault() == -1) { var tempTeams = _context.Teams.ToArray(); foreach (var t in tempTeams) { sbot.BusinessOwnerTeamId = t.TeamId; sbot.SoftwareId = currentSoftwareId; _context.SoftwareBusinessOwnerTeams.Add(sbot); await _context.SaveChangesAsync(); } } else { foreach (var t in businessTeams) { sbot.BusinessOwnerTeamId = t; sbot.SoftwareId = currentSoftwareId; _context.SoftwareBusinessOwnerTeams.Add(sbot); await _context.SaveChangesAsync(); } } return(RedirectToAction(nameof(Index))); } software.TeamIds = new List <int>(); software.BusinessOwnerTeamIds = new List <int>(); foreach (var id in teams) { software.TeamIds.Add(id); } foreach (var id in businessTeams) { software.BusinessOwnerTeamIds.Add(id); } vm.Software = software; ViewData["TeamId"] = new MultiSelectList(selectListTeams, "TeamId", "Name", software.TeamIds); ViewData["BusinessOwnerTeamId"] = new MultiSelectList(_context.Teams, "TeamId", "Name", software.BusinessOwnerTeamIds); ViewData["ItOwnerId"] = new SelectList(selectListTeams, "TeamId", "Name", software.ItOwnerId); ViewData["TechAreaId"] = new SelectList(_context.TechAreas, "TechAreaId", "Name", software.TechAreaId); ViewData["TipiId"] = new SelectList(_context.Tipies, "TipiId", "Name", software.TipiId); ViewData["PurposeId"] = new SelectList(_context.Purposes, "PurposeId", "Name", software.PurposeId); ViewData["ResellerId"] = new SelectList(_context.Reseller, "ResellerId", "Name", software.ResellerId); return(View(vm)); }