| | | 1 | | using System; |
| | | 2 | | using MUNity.Database.Models.Conference; |
| | | 3 | | using MUNity.Database.Models.Conference.Roles; |
| | | 4 | | |
| | | 5 | | namespace MUNity.Database.FluentAPI; |
| | | 6 | | |
| | | 7 | | public class TeamRoleGroupBuilder : ITeamRoleBuilder, IRolesContainingTeamRoleBuilder |
| | | 8 | | { |
| | 48 | 9 | | public TeamRoleGroup Group { get; } |
| | | 10 | | |
| | | 11 | | public ITeamRoleBuilder WithName(string name) |
| | 2 | 12 | | { |
| | 2 | 13 | | this.Group.Name = name; |
| | 2 | 14 | | if (string.IsNullOrEmpty(Group.FullName)) |
| | 0 | 15 | | Group.FullName = name; |
| | 2 | 16 | | return this; |
| | 2 | 17 | | } |
| | | 18 | | |
| | | 19 | | public ITeamRoleBuilder WithFullName(string fullName) |
| | 2 | 20 | | { |
| | 2 | 21 | | this.Group.FullName = fullName; |
| | 2 | 22 | | if (string.IsNullOrEmpty(Group.Name)) |
| | 2 | 23 | | Group.Name = fullName; |
| | 2 | 24 | | return this; |
| | 2 | 25 | | } |
| | | 26 | | |
| | | 27 | | public ITeamRoleBuilder WithShort(string shortName) |
| | 2 | 28 | | { |
| | 2 | 29 | | this.Group.TeamRoleGroupShort = shortName; |
| | 2 | 30 | | return this; |
| | 2 | 31 | | } |
| | | 32 | | |
| | | 33 | | public IRolesContainingTeamRoleBuilder WithRole(Action<TeamRoleBuilder> options) |
| | 13 | 34 | | { |
| | 13 | 35 | | var builder = new TeamRoleBuilder(Group); |
| | 13 | 36 | | options(builder); |
| | 13 | 37 | | Group.TeamRoles.Add(builder.Role); |
| | 13 | 38 | | return this; |
| | 13 | 39 | | } |
| | | 40 | | |
| | | 41 | | public IRolesContainingTeamRoleBuilder WithRole(string name, string shortName = "") |
| | 12 | 42 | | { |
| | 24 | 43 | | return WithRole(options => options.WithFullName(name) |
| | 24 | 44 | | .WithName(name) |
| | 24 | 45 | | .WithShort(shortName)); |
| | 12 | 46 | | } |
| | | 47 | | |
| | | 48 | | public IRolesContainingTeamRoleBuilder WithRoleLevel(int level) |
| | 1 | 49 | | { |
| | 27 | 50 | | foreach (var conferenceTeamRole in Group.TeamRoles) |
| | 12 | 51 | | { |
| | 12 | 52 | | conferenceTeamRole.TeamRoleLevel = level; |
| | 12 | 53 | | } |
| | | 54 | | |
| | 1 | 55 | | return this; |
| | 1 | 56 | | } |
| | | 57 | | |
| | | 58 | | public IRolesContainingTeamRoleBuilder WithParentRole(ConferenceTeamRole role) |
| | 1 | 59 | | { |
| | 27 | 60 | | foreach (var conferenceTeamRole in Group.TeamRoles) |
| | 12 | 61 | | { |
| | 12 | 62 | | conferenceTeamRole.ParentTeamRole = role; |
| | 12 | 63 | | } |
| | | 64 | | |
| | 1 | 65 | | return this; |
| | 1 | 66 | | } |
| | | 67 | | |
| | 2 | 68 | | public TeamRoleGroupBuilder() |
| | 2 | 69 | | { |
| | 2 | 70 | | Group = new TeamRoleGroup(); |
| | 2 | 71 | | } |
| | | 72 | | } |