Merge
This commit is contained in:
@@ -311,8 +311,8 @@ namespace Core.Calculation
|
|||||||
|
|
||||||
//var teamsCount = (int)Math.Ceiling(teamDivs);
|
//var teamsCount = (int)Math.Ceiling(teamDivs);
|
||||||
var teamCount = (int)Math.Round(teamDivs);
|
var teamCount = (int)Math.Round(teamDivs);
|
||||||
if (teamCount > evt.MaxTeamCountState)
|
if (teamCount > evt.ChapterEligibilityCountState)
|
||||||
teamCount = evt.MaxTeamCountState;
|
teamCount = evt.ChapterEligibilityCountState;
|
||||||
|
|
||||||
// limit to one team for group events
|
// limit to one team for group events
|
||||||
if (_parameters.LimitTeamsToOne
|
if (_parameters.LimitTeamsToOne
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ public class EventDefinition
|
|||||||
[Required]
|
[Required]
|
||||||
[StringLength(100, MinimumLength = 2)]
|
[StringLength(100, MinimumLength = 2)]
|
||||||
[Display(Name = "Event Name")]
|
[Display(Name = "Event Name")]
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
@@ -31,44 +30,52 @@ public class EventDefinition
|
|||||||
? MinTeamSize.ToString()
|
? MinTeamSize.ToString()
|
||||||
: $"{MinTeamSize.ToString()}-{MaxTeamSize.ToString()}";
|
: $"{MinTeamSize.ToString()}-{MaxTeamSize.ToString()}";
|
||||||
|
|
||||||
|
[StringLength(100, MinimumLength = 3)]
|
||||||
public string? SemifinalistActivity { get; set; }
|
public string? SemifinalistActivity { get; set; }
|
||||||
|
|
||||||
public bool InterviewOrPresentation
|
public bool InterviewOrPresentation
|
||||||
=> SemifinalistActivity != null && (SemifinalistActivity.Contains("Interview") || SemifinalistActivity.Contains("Presentation"));
|
=> SemifinalistActivity != null && (SemifinalistActivity.Contains("Interview") || SemifinalistActivity.Contains("Presentation"));
|
||||||
|
|
||||||
public bool OnSiteActivity
|
public bool OnSiteActivity { get; set; }
|
||||||
=> SemifinalistActivity != null
|
//=> SemifinalistActivity != null
|
||||||
&& (SemifinalistActivity.Contains("Challenge")
|
// && (SemifinalistActivity.Contains("Challenge")
|
||||||
|| SemifinalistActivity.Contains("Race")
|
// || SemifinalistActivity.Contains("Race")
|
||||||
|| SemifinalistActivity.Contains("Speech")
|
// || SemifinalistActivity.Contains("Speech")
|
||||||
|| SemifinalistActivity.Contains("Test")
|
// || SemifinalistActivity.Contains("Test")
|
||||||
|| SemifinalistActivity.Contains("Flight")
|
// || SemifinalistActivity.Contains("Flight")
|
||||||
|| Name.Contains("Leadership")
|
// || Name.Contains("Leadership")
|
||||||
|| Name.Contains("Forensic")
|
// || Name.Contains("Forensic")
|
||||||
|| Name.Contains("Flight")
|
// || Name.Contains("Flight")
|
||||||
|| Name.Contains("Coding")
|
// || Name.Contains("Coding")
|
||||||
|| SemifinalistActivity.Contains("Debate")
|
// || SemifinalistActivity.Contains("Debate")
|
||||||
|| SemifinalistActivity.Contains("Photography")
|
// || SemifinalistActivity.Contains("Photography")
|
||||||
|| SemifinalistActivity.Contains("Build")
|
// || SemifinalistActivity.Contains("Build")
|
||||||
|| Name.Contains("Chapter")
|
// || Name.Contains("Chapter")
|
||||||
|| Name.Contains("Podcast"));
|
// || Name.Contains("Podcast"));
|
||||||
|
|
||||||
|
[StringLength(1024, MinimumLength = 3)]
|
||||||
public string? Notes { get; set; }
|
public string? Notes { get; set; }
|
||||||
|
|
||||||
|
[Range(0, 3)]
|
||||||
|
public int ChapterEligibilityCountRegionals { get; set; }
|
||||||
|
|
||||||
[Range(1, 3)]
|
[Range(1, 3)]
|
||||||
public int MaxTeamCountState { get; set; }
|
public int ChapterEligibilityCountState { get; set; }
|
||||||
public bool RegionalEvent { get; set; }
|
|
||||||
|
|
||||||
public bool RegionalPresubmit { get; set; }
|
public bool RegionalEvent => ChapterEligibilityCountRegionals > 0;
|
||||||
public bool StatePresubmission { get; set; }
|
|
||||||
public bool StatePretesting { get; set; }
|
|
||||||
public bool StatePreliminaryRound { get; set; }
|
|
||||||
|
|
||||||
|
public bool Presubmission { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[StringLength(64)]
|
||||||
public string? Documentation { get; set; }
|
public string? Documentation { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
|
[StringLength(256)]
|
||||||
public string Eligibility { get; set; }
|
public string Eligibility { get; set; }
|
||||||
|
[StringLength(4096)]
|
||||||
public string? Theme { get; set; }
|
public string? Theme { get; set; }
|
||||||
|
[StringLength(1024)]
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
public int? LevelOfEffort { get; set; }
|
public int? LevelOfEffort { get; set; }
|
||||||
|
|
||||||
@@ -80,16 +87,4 @@ public class EventDefinition
|
|||||||
public static readonly EventDefinition GeneralSchedule = new(){Name = "General Schedule"};
|
public static readonly EventDefinition GeneralSchedule = new(){Name = "General Schedule"};
|
||||||
public static readonly EventDefinition VotingDelegates = new(){Name = "Voting Delegates"};
|
public static readonly EventDefinition VotingDelegates = new(){Name = "Voting Delegates"};
|
||||||
|
|
||||||
|
|
||||||
public string EventAttributes ()
|
|
||||||
{
|
|
||||||
var st = new List<string>();
|
|
||||||
|
|
||||||
if (EventFormat is EventFormat.Individual)
|
|
||||||
st.Add( "Ind.");
|
|
||||||
if (RegionalEvent)
|
|
||||||
st.Add( "Reg.");
|
|
||||||
|
|
||||||
return string.Join(", ", st);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -56,17 +56,17 @@ public class EventDefinitionParser : CsvParserBase
|
|||||||
Name = name.Trim(),
|
Name = name.Trim(),
|
||||||
ShortName = shortName.Trim(),
|
ShortName = shortName.Trim(),
|
||||||
EventFormat = format,
|
EventFormat = format,
|
||||||
MaxTeamCountState = stateTeams,
|
ChapterEligibilityCountState = stateTeams,
|
||||||
MinTeamSize = min,
|
MinTeamSize = min,
|
||||||
MaxTeamSize = max,
|
MaxTeamSize = max,
|
||||||
SemifinalistActivity = semifinalistActivity,
|
SemifinalistActivity = semifinalistActivity,
|
||||||
RegionalEvent = !string.IsNullOrEmpty(regionalCount),
|
//RegionalEvent = !string.IsNullOrEmpty(regionalCount),
|
||||||
RegionalPresubmit = regionalPresubmit.Trim() == "TRUE",
|
//RegionalPresubmit = regionalPresubmit.Trim() == "TRUE",
|
||||||
Notes = regionalNotes,
|
Notes = regionalNotes,
|
||||||
Documentation= documentation,
|
Documentation= documentation,
|
||||||
StatePresubmission = statePresubmission.Trim() == "TRUE",
|
Presubmission = statePresubmission.Trim() == "TRUE",
|
||||||
StatePretesting = statePretesting.Trim() == "TRUE",
|
//StatePretesting = statePretesting.Trim() == "TRUE",
|
||||||
StatePreliminaryRound = statePreliminary.Trim() == "TRUE",
|
//StatePreliminaryRound = statePreliminary.Trim() == "TRUE",
|
||||||
Eligibility = eligibility,
|
Eligibility = eligibility,
|
||||||
Theme = theme,
|
Theme = theme,
|
||||||
Description = description,
|
Description = description,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ namespace Data.Migrations
|
|||||||
});
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "TimeSlots",
|
name: "Teams",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
{
|
{
|
||||||
Id = table.Column<int>(type: "INTEGER", nullable: false)
|
Id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||||
@@ -91,7 +91,7 @@ namespace Data.Migrations
|
|||||||
table.ForeignKey(
|
table.ForeignKey(
|
||||||
name: "FK_StudentTeam_Teams_TeamsId",
|
name: "FK_StudentTeam_Teams_TeamsId",
|
||||||
column: x => x.TeamsId,
|
column: x => x.TeamsId,
|
||||||
principalTable: "TimeSlots",
|
principalTable: "Teams",
|
||||||
principalColumn: "Id",
|
principalColumn: "Id",
|
||||||
onDelete: ReferentialAction.Cascade);
|
onDelete: ReferentialAction.Cascade);
|
||||||
});
|
});
|
||||||
@@ -108,7 +108,7 @@ namespace Data.Migrations
|
|||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_Teams_CaptainId",
|
name: "IX_Teams_CaptainId",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
column: "CaptainId");
|
column: "CaptainId");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ namespace Data.Migrations
|
|||||||
name: "StudentTeam");
|
name: "StudentTeam");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "TimeSlots");
|
name: "Teams");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "Students");
|
name: "Students");
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.RenameColumn(
|
migrationBuilder.RenameColumn(
|
||||||
name: "TeamNumber",
|
name: "TeamNumber",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
newName: "TeamId");
|
newName: "TeamId");
|
||||||
|
|
||||||
migrationBuilder.RenameColumn(
|
migrationBuilder.RenameColumn(
|
||||||
@@ -36,7 +36,7 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.RenameColumn(
|
migrationBuilder.RenameColumn(
|
||||||
name: "TeamId",
|
name: "TeamId",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
newName: "TeamNumber");
|
newName: "TeamNumber");
|
||||||
|
|
||||||
migrationBuilder.RenameColumn(
|
migrationBuilder.RenameColumn(
|
||||||
|
|||||||
@@ -12,14 +12,14 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.AddColumn<int>(
|
migrationBuilder.AddColumn<int>(
|
||||||
name: "EventId",
|
name: "EventId",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
type: "INTEGER",
|
type: "INTEGER",
|
||||||
nullable: false,
|
nullable: false,
|
||||||
defaultValue: 0);
|
defaultValue: 0);
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
migrationBuilder.AddColumn<string>(
|
||||||
name: "Name",
|
name: "Name",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
type: "TEXT",
|
type: "TEXT",
|
||||||
nullable: false,
|
nullable: false,
|
||||||
defaultValue: "");
|
defaultValue: "");
|
||||||
@@ -47,12 +47,12 @@ namespace Data.Migrations
|
|||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_Teams_EventId",
|
name: "IX_Teams_EventId",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
column: "EventId");
|
column: "EventId");
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
migrationBuilder.AddForeignKey(
|
||||||
name: "FK_Teams_Events_EventId",
|
name: "FK_Teams_Events_EventId",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
column: "EventId",
|
column: "EventId",
|
||||||
principalTable: "Events",
|
principalTable: "Events",
|
||||||
principalColumn: "Id",
|
principalColumn: "Id",
|
||||||
@@ -64,19 +64,19 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.DropForeignKey(
|
migrationBuilder.DropForeignKey(
|
||||||
name: "FK_Teams_Events_EventId",
|
name: "FK_Teams_Events_EventId",
|
||||||
table: "TimeSlots");
|
table: "Teams");
|
||||||
|
|
||||||
migrationBuilder.DropIndex(
|
migrationBuilder.DropIndex(
|
||||||
name: "IX_Teams_EventId",
|
name: "IX_Teams_EventId",
|
||||||
table: "TimeSlots");
|
table: "Teams");
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
migrationBuilder.DropColumn(
|
||||||
name: "EventId",
|
name: "EventId",
|
||||||
table: "TimeSlots");
|
table: "Teams");
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
migrationBuilder.DropColumn(
|
||||||
name: "Name",
|
name: "Name",
|
||||||
table: "TimeSlots");
|
table: "Teams");
|
||||||
|
|
||||||
migrationBuilder.DropColumn(
|
migrationBuilder.DropColumn(
|
||||||
name: "Email",
|
name: "Email",
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.DropColumn(
|
migrationBuilder.DropColumn(
|
||||||
name: "Name",
|
name: "Name",
|
||||||
table: "TimeSlots");
|
table: "Teams");
|
||||||
|
|
||||||
migrationBuilder.AddColumn<int>(
|
migrationBuilder.AddColumn<int>(
|
||||||
name: "Number",
|
name: "Number",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
type: "INTEGER",
|
type: "INTEGER",
|
||||||
nullable: false,
|
nullable: false,
|
||||||
defaultValue: 0);
|
defaultValue: 0);
|
||||||
@@ -27,11 +27,11 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.DropColumn(
|
migrationBuilder.DropColumn(
|
||||||
name: "Number",
|
name: "Number",
|
||||||
table: "TimeSlots");
|
table: "Teams");
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
migrationBuilder.AddColumn<string>(
|
||||||
name: "Name",
|
name: "Name",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
type: "TEXT",
|
type: "TEXT",
|
||||||
nullable: false,
|
nullable: false,
|
||||||
defaultValue: "");
|
defaultValue: "");
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.AlterColumn<int>(
|
migrationBuilder.AlterColumn<int>(
|
||||||
name: "Number",
|
name: "Number",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
type: "INTEGER",
|
type: "INTEGER",
|
||||||
nullable: true,
|
nullable: true,
|
||||||
oldClrType: typeof(int),
|
oldClrType: typeof(int),
|
||||||
@@ -24,7 +24,7 @@ namespace Data.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.AlterColumn<int>(
|
migrationBuilder.AlterColumn<int>(
|
||||||
name: "Number",
|
name: "Number",
|
||||||
table: "TimeSlots",
|
table: "Teams",
|
||||||
type: "INTEGER",
|
type: "INTEGER",
|
||||||
nullable: false,
|
nullable: false,
|
||||||
defaultValue: 0,
|
defaultValue: 0,
|
||||||
|
|||||||
@@ -0,0 +1,257 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using Data;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Data.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(AppDbContext))]
|
||||||
|
[Migration("20250926142634_EventDefinition_Update")]
|
||||||
|
partial class EventDefinition_Update
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder.HasAnnotation("ProductVersion", "9.0.8");
|
||||||
|
|
||||||
|
modelBuilder.Entity("Core.Entities.EventDefinition", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("ChapterEligibilityCountRegionals")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("ChapterEligibilityCountState")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Documentation")
|
||||||
|
.HasMaxLength(64)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Eligibility")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("EventFormat")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("LevelOfEffort")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("MaxTeamSize")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("MinTeamSize")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(128)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Notes")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("OnSiteActivity")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Presubmission")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("SemifinalistActivity")
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("ShortName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Theme")
|
||||||
|
.HasMaxLength(4096)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("Name");
|
||||||
|
|
||||||
|
b.ToTable("Events");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Core.Entities.Student", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Email")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("FirstName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Grade")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("LastName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("NationalId")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("OfficerRole")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("PhoneNumber")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("RegionalId")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("StateId")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("TsaYear")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Students");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Core.Entities.StudentEventRanking", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("EventDefinitionId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("StudentId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("Rank")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("EventDefinitionId", "StudentId");
|
||||||
|
|
||||||
|
b.HasIndex("StudentId");
|
||||||
|
|
||||||
|
b.ToTable("StudentEventRanking");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Core.Entities.Team", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("CaptainId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("EventId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("Number")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("TeamId")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CaptainId");
|
||||||
|
|
||||||
|
b.HasIndex("EventId");
|
||||||
|
|
||||||
|
b.ToTable("Teams");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("StudentTeam", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("StudentsId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("TeamsId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("StudentsId", "TeamsId");
|
||||||
|
|
||||||
|
b.HasIndex("TeamsId");
|
||||||
|
|
||||||
|
b.ToTable("StudentTeam");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Core.Entities.StudentEventRanking", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Core.Entities.EventDefinition", "EventDefinition")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("EventDefinitionId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Core.Entities.Student", "Student")
|
||||||
|
.WithMany("EventRankings")
|
||||||
|
.HasForeignKey("StudentId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("EventDefinition");
|
||||||
|
|
||||||
|
b.Navigation("Student");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Core.Entities.Team", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Core.Entities.Student", "Captain")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("CaptainId");
|
||||||
|
|
||||||
|
b.HasOne("Core.Entities.EventDefinition", "Event")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("EventId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Captain");
|
||||||
|
|
||||||
|
b.Navigation("Event");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("StudentTeam", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Core.Entities.Student", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("StudentsId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Core.Entities.Team", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("TeamsId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Core.Entities.Student", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("EventRankings");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Data.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class EventDefinition_Update : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MaxTeamCountState",
|
||||||
|
table: "Events");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "RegionalEvent",
|
||||||
|
table: "Events");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "StatePretesting",
|
||||||
|
table: "Events",
|
||||||
|
newName: "Presubmission");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "StatePresubmission",
|
||||||
|
table: "Events",
|
||||||
|
newName: "OnSiteActivity");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "StatePreliminaryRound",
|
||||||
|
table: "Events",
|
||||||
|
newName: "ChapterEligibilityCountState");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "RegionalPresubmit",
|
||||||
|
table: "Events",
|
||||||
|
newName: "ChapterEligibilityCountRegionals");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "ShortName",
|
||||||
|
table: "Events",
|
||||||
|
type: "TEXT",
|
||||||
|
maxLength: 40,
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "",
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "TEXT",
|
||||||
|
oldNullable: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "Presubmission",
|
||||||
|
table: "Events",
|
||||||
|
newName: "StatePretesting");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "OnSiteActivity",
|
||||||
|
table: "Events",
|
||||||
|
newName: "StatePresubmission");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "ChapterEligibilityCountState",
|
||||||
|
table: "Events",
|
||||||
|
newName: "StatePreliminaryRound");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "ChapterEligibilityCountRegionals",
|
||||||
|
table: "Events",
|
||||||
|
newName: "RegionalPresubmit");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "ShortName",
|
||||||
|
table: "Events",
|
||||||
|
type: "TEXT",
|
||||||
|
nullable: true,
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "TEXT",
|
||||||
|
oldMaxLength: 40);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "MaxTeamCountState",
|
||||||
|
table: "Events",
|
||||||
|
type: "INTEGER",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "RegionalEvent",
|
||||||
|
table: "Events",
|
||||||
|
type: "INTEGER",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,14 +22,23 @@ namespace Data.Migrations
|
|||||||
.ValueGeneratedOnAdd()
|
.ValueGeneratedOnAdd()
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("ChapterEligibilityCountRegionals")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("ChapterEligibilityCountState")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("Description")
|
b.Property<string>("Description")
|
||||||
|
.HasMaxLength(1024)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("Documentation")
|
b.Property<string>("Documentation")
|
||||||
|
.HasMaxLength(64)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("Eligibility")
|
b.Property<string>("Eligibility")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
|
.HasMaxLength(256)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int>("EventFormat")
|
b.Property<int>("EventFormat")
|
||||||
@@ -38,9 +47,6 @@ namespace Data.Migrations
|
|||||||
b.Property<int?>("LevelOfEffort")
|
b.Property<int?>("LevelOfEffort")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("MaxTeamCountState")
|
|
||||||
.HasColumnType("INTEGER");
|
|
||||||
|
|
||||||
b.Property<int>("MaxTeamSize")
|
b.Property<int>("MaxTeamSize")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
@@ -53,30 +59,26 @@ namespace Data.Migrations
|
|||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("Notes")
|
b.Property<string>("Notes")
|
||||||
|
.HasMaxLength(1024)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<bool>("RegionalEvent")
|
b.Property<bool>("OnSiteActivity")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("RegionalPresubmit")
|
b.Property<bool>("Presubmission")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("SemifinalistActivity")
|
b.Property<string>("SemifinalistActivity")
|
||||||
|
.HasMaxLength(100)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("ShortName")
|
b.Property<string>("ShortName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<bool>("StatePreliminaryRound")
|
|
||||||
.HasColumnType("INTEGER");
|
|
||||||
|
|
||||||
b.Property<bool>("StatePresubmission")
|
|
||||||
.HasColumnType("INTEGER");
|
|
||||||
|
|
||||||
b.Property<bool>("StatePretesting")
|
|
||||||
.HasColumnType("INTEGER");
|
|
||||||
|
|
||||||
b.Property<string>("Theme")
|
b.Property<string>("Theme")
|
||||||
|
.HasMaxLength(4096)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
||||||
@@ -173,7 +175,7 @@ namespace Data.Migrations
|
|||||||
|
|
||||||
b.HasIndex("EventId");
|
b.HasIndex("EventId");
|
||||||
|
|
||||||
b.ToTable("TimeSlots");
|
b.ToTable("Teams");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("StudentTeam", b =>
|
modelBuilder.Entity("StudentTeam", b =>
|
||||||
|
|||||||
Binary file not shown.
@@ -11,7 +11,7 @@ public class EventDefinitionParser_Tests
|
|||||||
Console.WriteLine($"Event, Type, Int/Pres, Team Size, Team Count, Regional");
|
Console.WriteLine($"Event, Type, Int/Pres, Team Size, Team Count, Regional");
|
||||||
foreach (var @event in events)
|
foreach (var @event in events)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"{@event.ShortName}, {@event.EventFormat}, {@event.Eligibility}, {@event.Description}, {@event.InterviewOrPresentation}, {@event.TeamSize}, {@event.MaxTeamCountState}, {@event.InterviewOrPresentation}, {@event.RegionalEvent}");
|
Console.WriteLine($"{@event.ShortName}, {@event.EventFormat}, {@event.Eligibility}, {@event.Description}, {@event.InterviewOrPresentation}, {@event.TeamSize}, {@event.ChapterEligibilityCountState}, {@event.InterviewOrPresentation}, {@event.RegionalEvent}");
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var @event in events)
|
foreach (var @event in events)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class TeamParser_Tests
|
|||||||
|
|
||||||
foreach (var team in teams.Where(t => t.Event.RegionalEvent))
|
foreach (var team in teams.Where(t => t.Event.RegionalEvent))
|
||||||
{
|
{
|
||||||
Console.WriteLine($"{team.Event.Name} {team.Event.RegionalPresubmit} team.RegionalTimeSlot");
|
Console.WriteLine($"{team.Event.Name} {team.Event.RegionalEvent} team.RegionalTimeSlot");
|
||||||
var join = string.Join(", ", team.Students.OrderByDescending(s => team.Captain == s).ThenByDescending(s => s.Grade + s.TsaYear).Select(s => $"{s.FirstNameLastName}{(team.Captain == s ? " *" +
|
var join = string.Join(", ", team.Students.OrderByDescending(s => team.Captain == s).ThenByDescending(s => s.Grade + s.TsaYear).Select(s => $"{s.FirstNameLastName}{(team.Captain == s ? " *" +
|
||||||
"(Cpt.)" : "")}"));
|
"(Cpt.)" : "")}"));
|
||||||
Console.WriteLine($"\t{join}");
|
Console.WriteLine($"\t{join}");
|
||||||
|
|||||||
@@ -27,21 +27,20 @@
|
|||||||
}
|
}
|
||||||
</MudRadioGroup>
|
</MudRadioGroup>
|
||||||
<ValidationMessage For="() => EventDefinition.EventFormat" class="text-danger" />
|
<ValidationMessage For="() => EventDefinition.EventFormat" class="text-danger" />
|
||||||
|
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Description" For="@(() => EventDefinition.Description)"></MudTextField>
|
||||||
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Theme" For="@(() => EventDefinition.Theme)"></MudTextField>
|
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Theme" For="@(() => EventDefinition.Theme)"></MudTextField>
|
||||||
<MudTextField T="string" Label="Documentation" @bind-Value="EventDefinition.Documentation" For="@(() => EventDefinition.Documentation)"></MudTextField>
|
<MudTextField T="string" Label="Documentation" @bind-Value="EventDefinition.Documentation" For="@(() => EventDefinition.Documentation)"></MudTextField>
|
||||||
<MudNumericField T="int?" Label="Level of Effort" @bind-Value="EventDefinition.LevelOfEffort" For="@(() => EventDefinition.LevelOfEffort)"></MudNumericField>
|
<MudNumericField T="int?" Label="Level of Effort" @bind-Value="EventDefinition.LevelOfEffort" For="@(() => EventDefinition.LevelOfEffort)"></MudNumericField>
|
||||||
|
<MudDivider></MudDivider>
|
||||||
|
<MudTextField T="string" Label="Nationals Eligibility" @bind-Value="EventDefinition.Eligibility" For="@(() => EventDefinition.Eligibility)"></MudTextField>
|
||||||
<MudNumericField T="int" Label="Minimum Team Size" @bind-Value="EventDefinition.MinTeamSize" For="@(() => EventDefinition.MinTeamSize)"></MudNumericField>
|
<MudNumericField T="int" Label="Minimum Team Size" @bind-Value="EventDefinition.MinTeamSize" For="@(() => EventDefinition.MinTeamSize)"></MudNumericField>
|
||||||
<MudNumericField T="int" Label="Maxiumum Team Size" @bind-Value="EventDefinition.MaxTeamSize" For="@(() => EventDefinition.MaxTeamSize)"></MudNumericField>
|
<MudNumericField T="int" Label="Maxiumum Team Size" @bind-Value="EventDefinition.MaxTeamSize" For="@(() => EventDefinition.MaxTeamSize)"></MudNumericField>
|
||||||
<MudNumericField T="int" Label="Maxiumum Team Count at State" @bind-Value="EventDefinition.MaxTeamCountState" For="@(() => EventDefinition.MaxTeamCountState)"></MudNumericField>
|
<MudNumericField T="int" Label="Team Count at Regionals" @bind-Value="EventDefinition.ChapterEligibilityCountRegionals" For="@(() => EventDefinition.ChapterEligibilityCountRegionals)"></MudNumericField>
|
||||||
|
<MudNumericField T="int" Label="Team Count at State" @bind-Value="EventDefinition.ChapterEligibilityCountState" For="@(() => EventDefinition.ChapterEligibilityCountState)"></MudNumericField>
|
||||||
|
<MudDivider></MudDivider>
|
||||||
<MudTextField T="string" Label="Semifinalist Activity" @bind-Value="EventDefinition.SemifinalistActivity" For="@(() => EventDefinition.SemifinalistActivity)"></MudTextField>
|
<MudTextField T="string" Label="Semifinalist Activity" @bind-Value="EventDefinition.SemifinalistActivity" For="@(() => EventDefinition.SemifinalistActivity)"></MudTextField>
|
||||||
<MudCheckBox T="bool" Label="Regional Event" @bind-Value="EventDefinition.RegionalEvent" For="@(() => EventDefinition.RegionalEvent)"></MudCheckBox>
|
<MudCheckBox T="bool" Label="On Site Activity" @bind-Value="EventDefinition.OnSiteActivity" For="@(() => EventDefinition.OnSiteActivity)"></MudCheckBox>
|
||||||
<MudCheckBox T="bool" Label="Requires Presubmission" @bind-Value="EventDefinition.StatePresubmission" For="@(() => EventDefinition.StatePresubmission)"></MudCheckBox>
|
<MudCheckBox T="bool" Label="Requires Presubmission" @bind-Value="EventDefinition.Presubmission" For="@(() => EventDefinition.Presubmission)"></MudCheckBox>
|
||||||
<MudCheckBox T="bool" Label="Preliminary Round" @bind-Value="EventDefinition.StatePreliminaryRound" For="@(() => EventDefinition.StatePreliminaryRound)"></MudCheckBox>
|
|
||||||
<MudTextField T="string" Label="Eligibility" @bind-Value="EventDefinition.Eligibility" For="@(() => EventDefinition.Eligibility)"></MudTextField>
|
|
||||||
|
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
|
|||||||
@@ -1,120 +0,0 @@
|
|||||||
@page "/events/delete"
|
|
||||||
@using Microsoft.EntityFrameworkCore
|
|
||||||
@inject AppDbContext context
|
|
||||||
@inject NavigationManager NavigationManager
|
|
||||||
|
|
||||||
<PageTitle>Delete</PageTitle>
|
|
||||||
|
|
||||||
<h1>Delete</h1>
|
|
||||||
|
|
||||||
<p>Are you sure you want to delete this?</p>
|
|
||||||
<div>
|
|
||||||
<h2>EventDefinition</h2>
|
|
||||||
<hr />
|
|
||||||
@if (eventdefinition is null)
|
|
||||||
{
|
|
||||||
<p><em>Loading...</em></p>
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Name</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.Name</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Short Name</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.ShortName</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Event Format</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.EventFormat</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Min Team Size</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.MinTeamSize</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Max Team Size</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.MaxTeamSize</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">SemifinalistActivity</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.SemifinalistActivity</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Notes</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.Notes</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">MaxTeamCountState</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.MaxTeamCountState</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">RegionalEvent</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.RegionalEvent</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">RegionalPresubmit</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.RegionalPresubmit</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">StatePresubmission</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.StatePresubmission</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">StatePretesting</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.StatePretesting</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">StatePreliminaryRound</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.StatePreliminaryRound</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Documentation</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.Documentation</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Eligibility</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.Eligibility</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Theme</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.Theme</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">Description</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.Description</dd>
|
|
||||||
</dl>
|
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-2">LevelOfEffort</dt>
|
|
||||||
<dd class="col-sm-10">@eventdefinition.LevelOfEffort</dd>
|
|
||||||
</dl>
|
|
||||||
<EditForm method="post" Model="eventdefinition" OnValidSubmit="DeleteEventDefinition" FormName="delete" Enhance>
|
|
||||||
<button type="submit" class="btn btn-danger" disabled="@(eventdefinition is null)">Delete</button> |
|
|
||||||
<a href="/events">Back to List</a>
|
|
||||||
</EditForm>
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@code {
|
|
||||||
private EventDefinition? eventdefinition;
|
|
||||||
|
|
||||||
[SupplyParameterFromQuery]
|
|
||||||
private int Id { get; set; }
|
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
eventdefinition = await context.Events.FirstOrDefaultAsync(m => m.Id == Id);
|
|
||||||
|
|
||||||
if (eventdefinition is null)
|
|
||||||
{
|
|
||||||
NavigationManager.NavigateTo("notfound");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task DeleteEventDefinition()
|
|
||||||
{
|
|
||||||
context.Events.Remove(eventdefinition!);
|
|
||||||
await context.SaveChangesAsync();
|
|
||||||
NavigationManager.NavigateTo("/events");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -30,18 +30,18 @@
|
|||||||
<dd class="col-sm-10">@eventdefinition.SemifinalistActivity</dd>
|
<dd class="col-sm-10">@eventdefinition.SemifinalistActivity</dd>
|
||||||
<dt class="col-sm-2">Notes</dt>
|
<dt class="col-sm-2">Notes</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.Notes</dd>
|
<dd class="col-sm-10">@eventdefinition.Notes</dd>
|
||||||
<dt class="col-sm-2">MaxTeamCountState</dt>
|
<dt class="col-sm-2">ChapterEligibilityCountState</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.MaxTeamCountState</dd>
|
<dd class="col-sm-10">@eventdefinition.ChapterEligibilityCountState</dd>
|
||||||
<dt class="col-sm-2">RegionalEvent</dt>
|
<dt class="col-sm-2">RegionalEvent</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.RegionalEvent</dd>
|
<dd class="col-sm-10">@eventdefinition.RegionalEvent</dd>
|
||||||
<dt class="col-sm-2">RegionalPresubmit</dt>
|
<dt class="col-sm-2">RegionalPresubmit</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.RegionalPresubmit</dd>
|
@* <dd class="col-sm-10">@eventdefinition.RegionalPresubmit</dd> *@
|
||||||
<dt class="col-sm-2">StatePresubmission</dt>
|
<dt class="col-sm-2">Presubmission</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.StatePresubmission</dd>
|
<dd class="col-sm-10">@eventdefinition.Presubmission</dd>
|
||||||
<dt class="col-sm-2">StatePretesting</dt>
|
<dt class="col-sm-2">StatePretesting</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.StatePretesting</dd>
|
@* <dd class="col-sm-10">@eventdefinition.StatePretesting</dd> *@
|
||||||
<dt class="col-sm-2">StatePreliminaryRound</dt>
|
<dt class="col-sm-2">StatePreliminaryRound</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.StatePreliminaryRound</dd>
|
@* <dd class="col-sm-10">@eventdefinition.StatePreliminaryRound</dd> *@
|
||||||
<dt class="col-sm-2">Documentation</dt>
|
<dt class="col-sm-2">Documentation</dt>
|
||||||
<dd class="col-sm-10">@eventdefinition.Documentation</dd>
|
<dd class="col-sm-10">@eventdefinition.Documentation</dd>
|
||||||
<dt class="col-sm-2">Eligibility</dt>
|
<dt class="col-sm-2">Eligibility</dt>
|
||||||
|
|||||||
@@ -1,132 +1,54 @@
|
|||||||
@page "/events/edit"
|
@page "/events/edit"
|
||||||
@using Microsoft.EntityFrameworkCore
|
@using Microsoft.EntityFrameworkCore
|
||||||
@using Core.Entities
|
|
||||||
@using Data
|
|
||||||
@inject AppDbContext context
|
@inject AppDbContext context
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
|
|
||||||
<PageTitle>Edit</PageTitle>
|
<PageTitle>Edit Event - TSA Chapter Organizer</PageTitle>
|
||||||
|
|
||||||
<h1>Edit</h1>
|
<MudText Typo="Typo.h3">Edit</MudText>
|
||||||
|
<MudText Typo="Typo.h4">Event</MudText>
|
||||||
|
<MudDivider />
|
||||||
|
|
||||||
<h2>EventDefinition</h2>
|
|
||||||
<hr />
|
<EditForm Model="EventDefinition" OnValidSubmit="OnValidSubmit" Enhance>
|
||||||
@if (EventDefinition is null)
|
|
||||||
{
|
|
||||||
<p><em>Loading...</em></p>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<EditForm method="post" Model="EventDefinition" OnValidSubmit="UpdateEventDefinition" FormName="edit" Enhance>
|
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
<ValidationSummary role="alert"/>
|
<MudGrid>
|
||||||
<input type="hidden" name="EventDefinition.Id" value="@EventDefinition.Id" />
|
<MudItem xs="12" sm="7">
|
||||||
<div class="mb-3">
|
<MudPaper Class="pa-4">
|
||||||
<label for="name" class="form-label">Name:</label>
|
<MudTextField T="string" Label="Event Name" @bind-Value="EventDefinition.Name" For="@(() => EventDefinition.Name)"></MudTextField>
|
||||||
<InputText id="name" @bind-Value="EventDefinition.Name" class="form-control" />
|
<MudTextField T="string" Label="Short Name" @bind-Value="EventDefinition.ShortName" For="@(() => EventDefinition.ShortName)"></MudTextField>
|
||||||
<ValidationMessage For="() => EventDefinition.Name" class="text-danger" />
|
|
||||||
</div>
|
<label for="@EventDefinition.EventFormat" class="form-label">Format:</label>
|
||||||
<div class="mb-3">
|
<MudRadioGroup T="EventFormat" @bind-Value="@EventDefinition.EventFormat">
|
||||||
<label for="shortname" class="form-label">ShortName:</label>
|
@* <MudRadio T="EventFormat" Value="EventFormat.Team">Team</MudRadio>
|
||||||
<InputText id="shortname" @bind-Value="EventDefinition.ShortName" class="form-control" />
|
<MudRadio T="EventFormat" Value="EventFormat.Individual">Individual</MudRadio> *@
|
||||||
<ValidationMessage For="() => EventDefinition.ShortName" class="text-danger" />
|
@foreach (EventFormat format in Enum.GetValues(typeof(EventFormat)))
|
||||||
</div>
|
{
|
||||||
<div class="mb-3">
|
<MudRadio T="EventFormat" value="@format">@(format.ToString())</MudRadio>
|
||||||
<label for="eventformat" class="form-label">EventFormat:</label>
|
}
|
||||||
<InputSelect @bind-Value="@EventDefinition.EventFormat">
|
</MudRadioGroup>
|
||||||
@foreach (var format in Enum.GetValues(typeof(EventFormat)))
|
<ValidationMessage For="() => EventDefinition.EventFormat" class="text-danger" />
|
||||||
{
|
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Description" For="@(() => EventDefinition.Description)"></MudTextField>
|
||||||
<option value="@format">@(@format.ToString())</option>
|
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Theme" For="@(() => EventDefinition.Theme)"></MudTextField>
|
||||||
}
|
<MudTextField T="string" Label="Documentation" @bind-Value="EventDefinition.Documentation" For="@(() => EventDefinition.Documentation)"></MudTextField>
|
||||||
</InputSelect>
|
<MudNumericField T="int?" Label="Level of Effort" @bind-Value="EventDefinition.LevelOfEffort" For="@(() => EventDefinition.LevelOfEffort)"></MudNumericField>
|
||||||
<ValidationMessage For="() => EventDefinition.EventFormat" class="text-danger" />
|
<MudDivider></MudDivider>
|
||||||
</div>
|
<MudTextField T="string" Label="Nationals Eligibility" @bind-Value="EventDefinition.Eligibility" For="@(() => EventDefinition.Eligibility)"></MudTextField>
|
||||||
<div class="mb-3">
|
<MudNumericField T="int" Label="Minimum Team Size" @bind-Value="EventDefinition.MinTeamSize" For="@(() => EventDefinition.MinTeamSize)"></MudNumericField>
|
||||||
<label for="minteamsize" class="form-label">MinTeamSize:</label>
|
<MudNumericField T="int" Label="Maxiumum Team Size" @bind-Value="EventDefinition.MaxTeamSize" For="@(() => EventDefinition.MaxTeamSize)"></MudNumericField>
|
||||||
<InputNumber id="minteamsize" @bind-Value="EventDefinition.MinTeamSize" class="form-control" />
|
<MudNumericField T="int" Label="Team Count at Regionals" @bind-Value="EventDefinition.ChapterEligibilityCountRegionals" For="@(() => EventDefinition.ChapterEligibilityCountRegionals)"></MudNumericField>
|
||||||
<ValidationMessage For="() => EventDefinition.MinTeamSize" class="text-danger" />
|
<MudNumericField T="int" Label="Team Count at State" @bind-Value="EventDefinition.ChapterEligibilityCountState" For="@(() => EventDefinition.ChapterEligibilityCountState)"></MudNumericField>
|
||||||
</div>
|
<MudDivider></MudDivider>
|
||||||
<div class="mb-3">
|
<MudTextField T="string" Label="Semifinalist Activity" @bind-Value="EventDefinition.SemifinalistActivity" For="@(() => EventDefinition.SemifinalistActivity)"></MudTextField>
|
||||||
<label for="maxteamsize" class="form-label">MaxTeamSize:</label>
|
<MudCheckBox T="bool" Label="On Site Activity" @bind-Value="EventDefinition.OnSiteActivity" For="@(() => EventDefinition.OnSiteActivity)"></MudCheckBox>
|
||||||
<InputNumber id="maxteamsize" @bind-Value="EventDefinition.MaxTeamSize" class="form-control" />
|
<MudCheckBox T="bool" Label="Requires Presubmission" @bind-Value="EventDefinition.Presubmission" For="@(() => EventDefinition.Presubmission)"></MudCheckBox>
|
||||||
<ValidationMessage For="() => EventDefinition.MaxTeamSize" class="text-danger" />
|
</MudPaper>
|
||||||
</div>
|
</MudItem>
|
||||||
<div class="mb-3">
|
</MudGrid>
|
||||||
<label for="semifinalistactivity" class="form-label">SemifinalistActivity:</label>
|
<MudButton StartIcon="@Icons.Material.Filled.ArrowBack" Href="events">Back</MudButton>
|
||||||
<InputText id="semifinalistactivity" @bind-Value="EventDefinition.SemifinalistActivity" class="form-control" />
|
<MudButton ButtonType="ButtonType.Submit" StartIcon="@Icons.Material.Filled.Save">Save</MudButton>
|
||||||
<ValidationMessage For="() => EventDefinition.SemifinalistActivity" class="text-danger" />
|
</EditForm>
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="notes" class="form-label">Notes:</label>
|
|
||||||
<InputText id="notes" @bind-Value="EventDefinition.Notes" class="form-control" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.Notes" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="maxteamcountstate" class="form-label">MaxTeamCountState:</label>
|
|
||||||
<InputNumber id="maxteamcountstate" @bind-Value="EventDefinition.MaxTeamCountState" class="form-control" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.MaxTeamCountState" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="regionalevent" class="form-label">RegionalEvent:</label>
|
|
||||||
<InputCheckbox id="regionalevent" @bind-Value="EventDefinition.RegionalEvent" class="form-check-input" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.RegionalEvent" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="regionalpresubmit" class="form-label">RegionalPresubmit:</label>
|
|
||||||
<InputCheckbox id="regionalpresubmit" @bind-Value="EventDefinition.RegionalPresubmit" class="form-check-input" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.RegionalPresubmit" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="statepresubmission" class="form-label">StatePresubmission:</label>
|
|
||||||
<InputCheckbox id="statepresubmission" @bind-Value="EventDefinition.StatePresubmission" class="form-check-input" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.StatePresubmission" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="statepretesting" class="form-label">StatePretesting:</label>
|
|
||||||
<InputCheckbox id="statepretesting" @bind-Value="EventDefinition.StatePretesting" class="form-check-input" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.StatePretesting" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="statepreliminaryround" class="form-label">StatePreliminaryRound:</label>
|
|
||||||
<InputCheckbox id="statepreliminaryround" @bind-Value="EventDefinition.StatePreliminaryRound" class="form-check-input" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.StatePreliminaryRound" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="documentation" class="form-label">Documentation:</label>
|
|
||||||
<InputText id="documentation" @bind-Value="EventDefinition.Documentation" class="form-control" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.Documentation" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="eligibility" class="form-label">Eligibility:</label>
|
|
||||||
<InputText id="eligibility" @bind-Value="EventDefinition.Eligibility" class="form-control" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.Eligibility" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="theme" class="form-label">Theme:</label>
|
|
||||||
<InputText id="theme" @bind-Value="EventDefinition.Theme" class="form-control" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.Theme" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="description" class="form-label">Description:</label>
|
|
||||||
<InputText id="description" @bind-Value="EventDefinition.Description" class="form-control" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.Description" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="levelofeffort" class="form-label">LevelOfEffort:</label>
|
|
||||||
<InputNumber id="levelofeffort" @bind-Value="EventDefinition.LevelOfEffort" class="form-control" />
|
|
||||||
<ValidationMessage For="() => EventDefinition.LevelOfEffort" class="text-danger" />
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-primary">Save</button>
|
|
||||||
</EditForm>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<a href="/events">Back to List</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[SupplyParameterFromQuery]
|
[SupplyParameterFromQuery]
|
||||||
@@ -147,13 +69,13 @@ else
|
|||||||
|
|
||||||
// To protect from overposting attacks, enable the specific properties you want to bind to.
|
// To protect from overposting attacks, enable the specific properties you want to bind to.
|
||||||
// For more information, see https://learn.microsoft.com/aspnet/core/blazor/forms/#mitigate-overposting-attacks.
|
// For more information, see https://learn.microsoft.com/aspnet/core/blazor/forms/#mitigate-overposting-attacks.
|
||||||
private async Task UpdateEventDefinition()
|
private void OnValidSubmit()
|
||||||
{
|
{
|
||||||
context.Attach(EventDefinition!).State = EntityState.Modified;
|
context.Attach(EventDefinition!).State = EntityState.Modified;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await context.SaveChangesAsync();
|
context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
catch (DbUpdateConcurrencyException)
|
catch (DbUpdateConcurrencyException)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
@page "/events"
|
@page "/events"
|
||||||
@using Microsoft.EntityFrameworkCore
|
@using Microsoft.EntityFrameworkCore
|
||||||
|
@using WebApp.Models
|
||||||
@inject AppDbContext Context
|
@inject AppDbContext Context
|
||||||
|
|
||||||
<PageTitle>Events - TSA Chapter Organizer</PageTitle>
|
<PageTitle>Events - TSA Chapter Organizer</PageTitle>
|
||||||
@@ -13,18 +14,27 @@
|
|||||||
<Columns>
|
<Columns>
|
||||||
<PropertyColumn Property="@(e => e.Name)" Title="Event Name" Sortable="true" />
|
<PropertyColumn Property="@(e => e.Name)" Title="Event Name" Sortable="true" />
|
||||||
<PropertyColumn Property="@(e => e.EventFormat)" Title="Event Format" />
|
<PropertyColumn Property="@(e => e.EventFormat)" Title="Event Format" />
|
||||||
<PropertyColumn Property="@(e => e.LevelOfEffort)" Title="Level of Effort" />
|
|
||||||
<PropertyColumn Property="@(e => e.Eligibility)" Title="Eligibility" />
|
|
||||||
<TemplateColumn Title="Team Size" CellStyle="white-space:nowrap">
|
<TemplateColumn Title="Team Size" CellStyle="white-space:nowrap">
|
||||||
<CellTemplate>
|
<CellTemplate>
|
||||||
|
<MudTooltip Text="@context.Item.Eligibility">
|
||||||
[@context.Item.MinTeamSize - @context.Item.MaxTeamSize]
|
[@context.Item.MinTeamSize - @context.Item.MaxTeamSize]
|
||||||
|
</MudTooltip>
|
||||||
</CellTemplate>
|
</CellTemplate>
|
||||||
</TemplateColumn>
|
</TemplateColumn>
|
||||||
<TemplateColumn Title="TimeSlots State #">
|
<PropertyColumn Property="@(e => e.ChapterEligibilityCountState)" Title="State#" />
|
||||||
|
<TemplateColumn Title="Regionals" Sortable="true" SortBy="e => e.ChapterEligibilityCountRegionals">
|
||||||
<CellTemplate>
|
<CellTemplate>
|
||||||
@context.Item.MaxTeamCountState
|
@if (context.Item.RegionalEvent) { @AppIcons.RegionalEvent }
|
||||||
</CellTemplate>
|
</CellTemplate>
|
||||||
</TemplateColumn>
|
</TemplateColumn>
|
||||||
|
<TemplateColumn Title="Pre-submission" Sortable="true" SortBy="e => e.Presubmission">
|
||||||
|
<CellTemplate>
|
||||||
|
@if (context.Item.Presubmission) { @AppIcons.PresubmissionEvent }
|
||||||
|
</CellTemplate>
|
||||||
|
</TemplateColumn>
|
||||||
|
|
||||||
|
<PropertyColumn Property="@(e => e.LevelOfEffort)" Title="Level of Effort" />
|
||||||
<TemplateColumn>
|
<TemplateColumn>
|
||||||
<CellTemplate>
|
<CellTemplate>
|
||||||
<MudStack Row>
|
<MudStack Row>
|
||||||
@@ -54,7 +64,7 @@
|
|||||||
private async Task<GridData<EventDefinition>> ServerReload(GridState<EventDefinition> state)
|
private async Task<GridData<EventDefinition>> ServerReload(GridState<EventDefinition> state)
|
||||||
{
|
{
|
||||||
|
|
||||||
var query = Context.Events.Where(state.FilterDefinitions).OrderBy(state.SortDefinitions);
|
var query = Context.Events.OrderBy(e => e.Name).Where(state.FilterDefinitions).OrderBy(state.SortDefinitions);
|
||||||
|
|
||||||
var totalItems = await query.CountAsync();
|
var totalItems = await query.CountAsync();
|
||||||
var pagedData = await query.Skip(state.Page * state.PageSize).Take(state.PageSize).ToArrayAsync();
|
var pagedData = await query.Skip(state.Page * state.PageSize).Take(state.PageSize).ToArrayAsync();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
@using Microsoft.EntityFrameworkCore
|
@using Microsoft.EntityFrameworkCore
|
||||||
@using WebApp.Models
|
@using WebApp.Models
|
||||||
@inject AppDbContext Context
|
@inject AppDbContext Context
|
||||||
|
@inject IDialogService DialogService
|
||||||
|
|
||||||
<PageTitle>Students - TSA Chapter Organizer</PageTitle>
|
<PageTitle>Students - TSA Chapter Organizer</PageTitle>
|
||||||
|
|
||||||
@@ -32,13 +33,16 @@
|
|||||||
<MudStack Row>
|
<MudStack Row>
|
||||||
<MudButtonGroup Size="Size.Small">
|
<MudButtonGroup Size="Size.Small">
|
||||||
<MudTooltip Text="Details">
|
<MudTooltip Text="Details">
|
||||||
<MudIconButton Href="@($"/students/details?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Description">Details</MudIconButton>
|
<MudIconButton Href="@($"/students/details?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Description" />
|
||||||
</MudTooltip>
|
</MudTooltip>
|
||||||
<MudTooltip Text="Edit">
|
<MudTooltip Text="Edit">
|
||||||
<MudIconButton Href="@($"/students/edit?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Edit">Edit</MudIconButton>
|
<MudIconButton Href="@($"/students/edit?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Edit" />
|
||||||
</MudTooltip>
|
</MudTooltip>
|
||||||
<MudTooltip Text="Delete">
|
<MudTooltip Text="Delete">
|
||||||
<MudIconButton Href="@($"/students/delete?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Delete" Color="@Color.Warning">Delete</MudIconButton>
|
<MudIconButton Icon="@Icons.Material.Outlined.Delete"
|
||||||
|
Color="Color.Error"
|
||||||
|
|
||||||
|
OnClick="() => DeleteElement(context.Item)" />
|
||||||
</MudTooltip>
|
</MudTooltip>
|
||||||
</MudButtonGroup>
|
</MudButtonGroup>
|
||||||
</MudStack>
|
</MudStack>
|
||||||
@@ -69,4 +73,29 @@
|
|||||||
Items = pagedData
|
Items = pagedData
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task DeleteElement(object obj)
|
||||||
|
{
|
||||||
|
//_isRowBlocked = true;
|
||||||
|
|
||||||
|
if (obj is Student student)
|
||||||
|
{
|
||||||
|
var result = await DialogService
|
||||||
|
.ShowMessageBox("Delete student",
|
||||||
|
(MarkupString)$"Are you sure want to delete <b>{student.Name}</b>?",
|
||||||
|
yesText:"Yes",
|
||||||
|
noText:"Cancel");
|
||||||
|
|
||||||
|
if (result == true)
|
||||||
|
{
|
||||||
|
Context.Students.Remove(student!);
|
||||||
|
await Context.SaveChangesAsync();
|
||||||
|
//Snackbar.Add($"Delete event: Delete of Element {element.Name}", Severity.Info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//_isRowBlocked = false;
|
||||||
|
StateHasChanged();
|
||||||
|
_dataGrid.ReloadServerData();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,9 +76,9 @@ else
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (context.Event.EventFormat == EventFormat.Individual
|
else if (context.Event.EventFormat == EventFormat.Individual
|
||||||
&& context.Students.Count > context.Event.MaxTeamCountState)
|
&& context.Students.Count > context.Event.ChapterEligibilityCountState)
|
||||||
{
|
{
|
||||||
<span>Max Team Count State: @context.Event.MaxTeamCountState</span>
|
<span>Max Team Count State: @context.Event.ChapterEligibilityCountState</span>
|
||||||
}
|
}
|
||||||
</MudTd>
|
</MudTd>
|
||||||
</RowTemplate>
|
</RowTemplate>
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ namespace WebApp.Models
|
|||||||
public static string OnSiteActivity = "ⓐ";
|
public static string OnSiteActivity = "ⓐ";
|
||||||
public static string RegionalEvent = "ⓡ";
|
public static string RegionalEvent = "ⓡ";
|
||||||
public static string IndividualEvent = "ⓘ";
|
public static string IndividualEvent = "ⓘ";
|
||||||
|
public static string PresubmissionEvent = "🕑";
|
||||||
|
public static string PresentationEvent = "ⓟ";
|
||||||
public static string QuestionMark = "❔";
|
public static string QuestionMark = "❔";
|
||||||
|
|
||||||
public static string EventEffort(EventDefinition eventDefinition)
|
public static string EventEffort(EventDefinition eventDefinition)
|
||||||
@@ -38,8 +40,12 @@ namespace WebApp.Models
|
|||||||
|
|
||||||
if (eventDefinition.EventFormat == EventFormat.Individual)
|
if (eventDefinition.EventFormat == EventFormat.Individual)
|
||||||
v.Add(IndividualEvent);
|
v.Add(IndividualEvent);
|
||||||
|
if (eventDefinition.InterviewOrPresentation)
|
||||||
|
v.Add(PresentationEvent);
|
||||||
if (eventDefinition.OnSiteActivity)
|
if (eventDefinition.OnSiteActivity)
|
||||||
v.Add(OnSiteActivity);
|
v.Add(OnSiteActivity);
|
||||||
|
if (eventDefinition.Presubmission)
|
||||||
|
v.Add(PresubmissionEvent);
|
||||||
if (eventDefinition.RegionalEvent)
|
if (eventDefinition.RegionalEvent)
|
||||||
v.Add(RegionalEvent);
|
v.Add(RegionalEvent);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user