Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }