public void TestGenerateFirstLevelTeam()
    {
        var leaderRole = _context.ConferenceTeamRoles.FirstOrDefault(n => n.Conference == conference &&
                                                                     n.TeamRoleLevel == 1);

        Assert.NotNull(leaderRole);

        var firstLevelAuth = new ConferenceRoleAuth()
        {
            CanEditConferenceSettings = false,
            CanEditParticipations     = false,
            CanSeeApplications        = true,
            Conference   = conference,
            PowerLevel   = 2,
            RoleAuthName = "Erweiterte Projektleitung",
        };

        _context.ConferenceRoleAuthorizations.Add(firstLevelAuth);

        var firstLevelGroup = new TeamRoleGroup()
        {
            FullName           = "Erweiterte Projektleitung",
            GroupLevel         = 2,
            Name               = "Erweiterte Projektleitung",
            TeamRoleGroupShort = "EPL"
        };

        _context.TeamRoleGroups.Add(firstLevelGroup);

        var teamCoordinatorRole = new ConferenceTeamRole()
        {
            Conference         = conference,
            IconName           = "un",
            ParentTeamRole     = leaderRole,
            ConferenceRoleAuth = firstLevelAuth,
            RoleFullName       = "Team- und Materialkoordination",
            RoleName           = "Team- und Materialkoordination",
            RoleShort          = "TMK",
            TeamRoleGroup      = firstLevelGroup,
            TeamRoleLevel      = 2
        };

        var financeManager = new ConferenceTeamRole()
        {
            Conference         = conference,
            IconName           = "un",
            ParentTeamRole     = leaderRole,
            ConferenceRoleAuth = firstLevelAuth,
            RoleFullName       = "Finanzen",
            RoleName           = "Finanzen",
            RoleShort          = "CASH",
            TeamRoleGroup      = firstLevelGroup,
            TeamRoleLevel      = 2
        };

        _context.ConferenceTeamRoles.Add(teamCoordinatorRole);
        _context.ConferenceTeamRoles.Add(financeManager);
        _context.SaveChanges();
        Assert.AreEqual(3, _context.ConferenceTeamRoles.Count(n => n.Conference.ConferenceId == conference.ConferenceId));
    }
Beispiel #2
0
    public IRolesContainingTeamRoleBuilder WithParentRole(ConferenceTeamRole role)
    {
        foreach (var conferenceTeamRole in Group.TeamRoles)
        {
            conferenceTeamRole.ParentTeamRole = role;
        }

        return(this);
    }
Beispiel #3
0
        public async Task <CreateTeamRoleResponse> CreateTeamRoleAsync(CreateTeamRoleRequest request, ClaimsPrincipal claim)
        {
            var response = new CreateTeamRoleResponse();
            var group    = _context.TeamRoleGroups.Include(n => n.Conference)
                           .FirstOrDefault(n => n.TeamRoleGroupId == request.RoleGroupId);

            if (group == null)
            {
                response.AddInvalidDataError("The given group was not found", nameof(request.RoleGroupId));
                return(response);
            }

            var isAllowed = await _authService.IsUserAllowedToEditTeam(group.Conference.ConferenceId, claim);

            if (!isAllowed)
            {
                response.AddNoPermissionError("You don't have permission to create a Team role");
                return(response);
            }

            ConferenceTeamRole parentRole = null;

            if (request.ParentRoleId != -1)
            {
                // We are also checking for the ConferenceId to make sure that the given Parent role is in
                // the same conference!
                parentRole = _context.ConferenceTeamRoles.FirstOrDefault(n =>
                                                                         n.RoleId == request.ParentRoleId &&
                                                                         n.Conference.ConferenceId == group.Conference.ConferenceId);
            }


            var role = new ConferenceTeamRole()
            {
                Conference     = group.Conference,
                ParentTeamRole = parentRole,
                RoleName       = request.RoleName,
                RoleShort      = request.RoleShort,
                RoleFullName   = request.RoleFullName,
                TeamRoleGroup  = group,
                TeamRoleLevel  = 0
            };

            _context.ConferenceTeamRoles.Add(role);
            await _context.SaveChangesAsync();

            response.RoleId = role.RoleId;

            return(response);
        }
    public void TestCreateTeamRoleProjectLeader()
    {
        var leaderAuth = new ConferenceRoleAuth()
        {
            Conference = conference,
            CanEditConferenceSettings = true,
            CanEditParticipations     = true,
            CanSeeApplications        = true,
            PowerLevel   = 1,
            RoleAuthName = "Project-Owner"
        };

        _context.ConferenceRoleAuthorizations.Add(leaderAuth);

        var leaderRoleGroup = new TeamRoleGroup()
        {
            FullName           = "die Projektleitung",
            Name               = "Projektleitung",
            TeamRoleGroupShort = "PL",
            GroupLevel         = 1
        };

        _context.TeamRoleGroups.Add(leaderRoleGroup);

        var leaderRole = new ConferenceTeamRole()
        {
            Conference         = conference,
            IconName           = "pl",
            RoleFullName       = "Projektleiter",
            ConferenceRoleAuth = leaderAuth,
            RoleName           = "Projektleiter",
            RoleShort          = "PL",
            TeamRoleGroup      = leaderRoleGroup,
            TeamRoleLevel      = 1,
        };

        _context.ConferenceTeamRoles.Add(leaderRole);
        _context.SaveChanges();

        var leaderRoleCallback = _context.ConferenceTeamRoles.FirstOrDefault();

        Assert.NotNull(leaderRoleCallback);
        Assert.AreEqual(1, _context.ConferenceRoleAuthorizations.Count());
        Assert.AreEqual(1, _context.ConferenceTeamRoles.Count());
        Assert.AreEqual(1, _context.TeamRoleGroups.Count());
        Assert.AreEqual("TeamRole", leaderRoleCallback.RoleType);
    }
Beispiel #5
0
    public ConferenceTeamRole EnsureProjectOwnerRole()
    {
        var leaderRole = _context.ConferenceTeamRoles.FirstOrDefault(n => n.RoleName == "Projektleiter");

        if (leaderRole == null)
        {
            var leaderAuth      = EnsureProjectOwnerAuth();
            var leaderRoleGroup = EnsureOwnerTeamRoleGroup();
            leaderRole = new ConferenceTeamRole()
            {
                Conference         = TestConference,
                IconName           = "pl",
                RoleFullName       = "Projektleiter",
                ConferenceRoleAuth = leaderAuth,
                RoleName           = "Projektleiter",
                RoleShort          = "PL",
                TeamRoleGroup      = leaderRoleGroup,
                TeamRoleLevel      = 1,
            };
            _context.ConferenceTeamRoles.Add(leaderRole);
            _context.SaveChanges();
        }
        return(leaderRole);
    }
 public void TestCreateARole()
 {
     teamRole = EnsureProjectOwnerRole();
 }
Beispiel #7
0
 public TeamRoleBuilder(TeamRoleGroup group = null)
 {
     this.Role          = new ConferenceTeamRole();
     Role.TeamRoleGroup = group;
 }
Beispiel #8
0
 public TeamRoleBuilder WithParent(ConferenceTeamRole role)
 {
     Role.ParentTeamRole = role;
     return(this);
 }