| | 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 | | } |