示例#1
0
        public ViewModels.Team[] GetManagedTeams(string userName)
        {
            DataModels.User   requestingUser = this.context.User.Where(x => x.EmailAddress == userName).FirstOrDefault();
            DataModels.Team[] teams          = this.context.Team.Include(x => x.TeamManager)
                                               .Include(x => x.TeamMembers).ThenInclude(x => x.Role)
                                               .Where(x => x.TeamManager == requestingUser).ToArray();
            List <ViewModels.Team> viewTeams = new List <ViewModels.Team>();

            foreach (DataModels.Team team in teams)
            {
                ViewModels.Team viewTeam = new ViewModels.Team();
                viewTeam.Name        = team.Name;
                viewTeam.Description = team.Description;
                viewTeam.ID          = team.PublicIdentifier;
                List <TeamMember> members = new List <TeamMember>();
                foreach (DataModels.User user in team.TeamMembers)
                {
                    TeamMember member = new TeamMember();
                    member.Name             = user.LastName + ", " + user.FirstName;
                    member.PublicIdentifier = user.PublicIdentifier;
                    member.Role             = user.Role.Name;
                    members.Add(member);
                }
                viewTeam.TeamMembers = members.ToArray();
                viewTeams.Add(viewTeam);
            }

            return(viewTeams.ToArray());
        }
示例#2
0
        public ViewModels.Team Save(ViewModels.RegisterTeam newTeam, string userName)
        {
            if (!ValidateTeam(newTeam, userName))
            {
                this.ValidationFailed();
                return(null);
            }

            this.ValidationPassed();
            DataModels.Team dbTeam = new DataModels.Team();
            dbTeam.Name             = newTeam.Name;
            dbTeam.PublicIdentifier = Guid.NewGuid();
            DataModels.User postingUser = this.context.User.Where(x => x.EmailAddress == userName).FirstOrDefault();
            dbTeam.Site        = postingUser.Site;
            dbTeam.Description = newTeam.Description;
            if (newTeam.TeamLeaderId != null)
            {
                DataModels.User teamLeader = this.context.User.Include(x => x.Role).Where(x => x.PublicIdentifier == newTeam.TeamLeaderId).FirstOrDefault();
                if (teamLeader != null)
                {
                    if (teamLeader.Role.ID == 4)
                    {
                        teamLeader.Role = this.context.Role.Where(x => x.ID == 3).FirstOrDefault();
                    }
                    dbTeam.TeamLeader = teamLeader;
                }
            }

            if (newTeam.TeamManagerId != null)
            {
                DataModels.User teamManager = this.context.User.Where(x => x.PublicIdentifier == newTeam.TeamManagerId).FirstOrDefault();
                if (teamManager != null)
                {
                    dbTeam.TeamManager = teamManager;
                }
            }

            dbTeam.TeamMembers = new List <DataModels.User>();

            foreach (RegisterMember member in newTeam.TeamMembers)
            {
                DataModels.User teamMember = this.context.User.Where(x => x.PublicIdentifier == member.Id).FirstOrDefault();
                dbTeam.TeamMembers.Add(teamMember);
            }

            this.context.Team.Add(dbTeam);
            this.context.SaveChanges();
            ViewModels.Team resultTeam = new ViewModels.Team();
            resultTeam.Name = dbTeam.Name;
            resultTeam.ID   = dbTeam.PublicIdentifier;
            return(resultTeam);
        }
示例#3
0
        public IActionResult Post([FromBody] ViewModels.RegisterTeam newTeam)
        {
            var userName = this.HttpContext.User.Identity.Name;

            ViewModels.Team viewTeam = repository.Save(newTeam, userName);
            if (!repository.ValidSubmission)
            {
                return(BadRequest(newTeam));
            }

            if (repository.ErrorDetected)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }

            return(new ObjectResult(viewTeam));
        }