public IActionResult EditTeamByCeo(int id)
        {
            Team    team    = context.Teams.FirstOrDefault(t => t.Id == id);
            Project project = null;

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

            EditTeamByCeoViewModel editTeamByCeoViewModel = new EditTeamByCeoViewModel
            {
                Id   = team.Id,
                Name = team.Name,
                TeamLeadFirstName = null,
                TeamLeadLastName  = null
            };

            if (team.Project != null)
            {
                project = context.Projects.FirstOrDefault(p => p.Id == team.ProjectId);
                editTeamByCeoViewModel.ProjectName = project.Name;
            }
            else
            {
                editTeamByCeoViewModel.ProjectName = null;
            }

            ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
            ViewData["CreatedUsers"]    = UserService.GetAllUsers();
            CheckLoggedUser();
            return(this.View(editTeamByCeoViewModel));
        }
        public IActionResult EditTeamByCeo(EditTeamByCeoViewModel model)
        {
            int result = TeamService.EditTeamByCeo(model);

            if (result > 0)
            {
            }
            else if (result <= 0)
            {
                if (result == 0)
                {
                    ViewBag.Message             = $"Such team name already exists!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -1)
                {
                    ViewBag.Message = $"Project does not exist!" + Environment.NewLine +
                                      $"First name does not exist!" + Environment.NewLine +
                                      $"Last name does not exist!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -2)
                {
                    ViewBag.Message = $"Project does not exist!" + Environment.NewLine +
                                      $"First name does not exist!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -3)
                {
                    ViewBag.Message = $"Project does not exist!" + Environment.NewLine +
                                      $"Last name does not exist!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -4)
                {
                    ViewBag.Message             = $"Project does not exist!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -5)
                {
                    ViewBag.Message = $"First name does not exist!" + Environment.NewLine +
                                      $"Last name does not exist!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -6)
                {
                    ViewBag.Message             = $"First name does not exist!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -7)
                {
                    ViewBag.Message             = $"Last name does not exist!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -8)
                {
                    ViewBag.Message             = $"This user already has a team!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
                else if (result == -9)
                {
                    ViewBag.Message             = $"There is no user with this combination of first and last names!";
                    ViewData["CreatedProjects"] = ProjectService.GetAllProjects();
                    ViewData["CreatedUsers"]    = UserService.GetAllUsers();
                    CheckLoggedUser();
                    return(View());
                }
            }

            ViewData["AllCreatedTeams"] = TeamService.GetAllTeams();
            CheckLoggedUser();
            return(RedirectToAction("ViewAllCreatedTeams", "Team"));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// This method is used when the CEO edits a given team.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int EditTeamByCeo(EditTeamByCeoViewModel model)
        {
            //Taking the correct team which is to be edited and the project associated with it.
            Team    takenTeam    = context.Teams.FirstOrDefault(t => t.Id == model.Id);
            Project takenProject = context.Projects.FirstOrDefault(p => p.Id == takenTeam.ProjectId);

            //Validating the new team information
            //If one of the properties are not edited, the validation it is skipped and vice versa.
            bool takenProjectInfo       = context.Projects.FirstOrDefault(p => p.Name == model.ProjectName) == null;
            bool takenUserFirstNameInfo = context.Users.FirstOrDefault(u => u.FirstName == model.TeamLeadFirstName) == null;
            bool takenUserLastNameInfo  = context.Users.FirstOrDefault(u => u.LastName == model.TeamLeadLastName) == null;
            bool takenTemaInfo          = context.Teams.FirstOrDefault(t => t.Name == model.Name) != null;


            if (takenTeam.Project != null)
            {
                if (!(takenTeam.Name == model.Name || takenProject.Name == model.ProjectName))
                {
                    int validationResult = ValidateData(takenProjectInfo, takenUserFirstNameInfo, takenUserLastNameInfo, takenTemaInfo);

                    if (validationResult <= 0)
                    {
                        return(validationResult);
                    }
                }
            }
            else
            {
                if (!(takenTeam.Name == model.Name))
                {
                    int validationResult = ValidateData(takenProjectInfo, takenUserFirstNameInfo, takenUserLastNameInfo, takenTemaInfo);

                    if (validationResult <= 0)
                    {
                        return(validationResult);
                    }
                }
            }

            //Taking the correct project based on the given projectname.
            takenProject = context.Projects.FirstOrDefault(p => p.Name == model.ProjectName);

            //Taking the cunnet team lead of the team base on the database
            //and the new team lead based on the given information in the method parameters.
            User teamLead     = context.Users.FirstOrDefault(u => u.FirstName == model.TeamLeadFirstName && u.LastName == model.TeamLeadLastName);
            User pastTeamLead = context.Users.FirstOrDefault(u => u.TeamId == takenTeam.Id && u.Role == "Team Lead");

            //if the the team has already a team lead
            //The team lead is removed from the team.
            if (pastTeamLead != null && pastTeamLead != teamLead)
            {
                pastTeamLead.Team   = null;
                pastTeamLead.TeamId = null;
                takenTeam.Users.Remove(pastTeamLead);
            }

            //if the new team lead exists as a user in the database
            //he is appointed as the new team lead of the team.
            if (teamLead != null)
            {
                //Checking if the new team lead already has a team.
                //If true, the user is asked to select another team lead.
                bool isTeamLeadValid = teamLead.TeamId != takenTeam.Id;
                if (teamLead.TeamId != null && isTeamLeadValid)
                {
                    return(-8);
                }


                //If the new team lead does not have a team
                //he is appointed as the new team lead of the team.
                if (isTeamLeadValid)
                {
                    teamLead.TeamId = takenTeam.Id;
                    teamLead.Team   = takenTeam;
                    takenTeam.Users.Add(teamLead);
                    context.Users.Update(teamLead);
                }

                takenTeam.Name = model.Name;

                //If the team is already working on a project, the method only edits the team.
                //Otherwise, the method edits the project list of teams whith adding the the team wich is
                //edited in the list of teams and edits the team itself
                if (takenTeam.Project == null)
                {
                    takenProject.Teams.Add(takenTeam);
                    takenTeam.ProjectId = takenProject.Id;
                    takenTeam.Project   = takenProject;
                    context.Projects.Update(takenProject);
                }
                else if (takenTeam.Project != takenProject)
                {
                    takenTeam.ProjectId = takenProject.Id;
                    takenTeam.Project   = takenProject;
                }

                //Saving the changes in the database.
                context.Teams.Update(takenTeam);
                context.SaveChanges();

                return(takenTeam.Id);
            }
            else
            {
                return(-9);
            }
        }
        public int EditTeamByCeo(EditTeamByCeoViewModel model)
        {
            Team    takenTeam              = context.Teams.FirstOrDefault(t => t.Id == model.Id);
            Project takenProject           = context.Projects.FirstOrDefault(p => p.Id == takenTeam.ProjectId);
            bool    takenProjectInfo       = context.Projects.FirstOrDefault(p => p.Name == model.ProjectName) == null;
            bool    takenUserFirstNameInfo = context.Users.FirstOrDefault(u => u.FirstName == model.TeamLeadFirstName) == null;
            bool    takenUserLastNameInfo  = context.Users.FirstOrDefault(u => u.LastName == model.TeamLeadLastName) == null;
            bool    takenTemaInfo          = context.Teams.FirstOrDefault(t => t.Name == model.Name) != null;

            if (takenTeam.Project != null)
            {
                if (!(takenTeam.Name == model.Name || takenProject.Name == model.ProjectName))
                {
                    int validationResult = ValidateData(takenProjectInfo, takenUserFirstNameInfo, takenUserLastNameInfo, takenTemaInfo);

                    if (validationResult <= 0)
                    {
                        return(validationResult);
                    }
                }
            }
            else
            {
                if (!(takenTeam.Name == model.Name))
                {
                    int validationResult = ValidateData(takenProjectInfo, takenUserFirstNameInfo, takenUserLastNameInfo, takenTemaInfo);

                    if (validationResult <= 0)
                    {
                        return(validationResult);
                    }
                }
            }

            takenProject = context.Projects.FirstOrDefault(p => p.Name == model.ProjectName);
            User teamLead     = context.Users.FirstOrDefault(u => u.FirstName == model.TeamLeadFirstName && u.LastName == model.TeamLeadLastName);
            User pastTeamLead = context.Users.FirstOrDefault(u => u.TeamId == takenTeam.Id && u.Role == "Team Lead");

            if (pastTeamLead != null && pastTeamLead != teamLead)
            {
                pastTeamLead.Team   = null;
                pastTeamLead.TeamId = null;
                takenTeam.Users.Remove(pastTeamLead);
            }

            if (teamLead != null)
            {
                bool isTeamLeadValid = teamLead.TeamId != takenTeam.Id;
                if (teamLead.TeamId != null && isTeamLeadValid)
                {
                    return(-8);
                }

                if (isTeamLeadValid)
                {
                    teamLead.TeamId = takenTeam.Id;
                    teamLead.Team   = takenTeam;
                    takenTeam.Users.Add(teamLead);
                    context.Users.Update(teamLead);
                }

                takenTeam.Name = model.Name;

                if (takenTeam.Project == null)
                {
                    takenProject.Teams.Add(takenTeam);
                    takenTeam.ProjectId = takenProject.Id;
                    takenTeam.Project   = takenProject;
                    context.Projects.Update(takenProject);
                }
                else if (takenTeam.Project != takenProject)
                {
                    takenTeam.ProjectId = takenProject.Id;
                    takenTeam.Project   = takenProject;
                }

                context.Teams.Update(takenTeam);
                context.SaveChanges();

                return(takenTeam.Id);
            }
            else
            {
                return(-9);
            }
        }