diff --git a/.gitignore b/.gitignore index 4bab51e0..8b99323c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,187 +1,45 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. +*.swp +*.*~ +project.lock.json +.DS_Store +*.pyc +nupkg/ -# Bower -bower_components/ +# Visual Studio Code +.vscode/ + +# Rider +.idea/ + +# Visual Studio +.vs/ + +# Fleet +.fleet/ + +# Code Rush +.cr/ # User-specific files *.suo *.user +*.userosscache *.sln.docstates -App_Data/ -Images/Avatars/ -Web.Debug.config -Web.Release.config - -# Visual Studio 2015 cache/options directory -.vs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ +[Rr]eleases/ x64/ +x86/ build/ bld/ [Bb]in/ [Oo]bj/ +[Oo]ut/ +msbuild.log +msbuild.err +msbuild.wrn +src/packages -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -#NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding addin-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -_NCrunch_* -.*crunch*.local.xml - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml - -# NuGet Packages Directory -packages/ -## TODO: If the tool you use requires repositories.config uncomment the next line -#!packages/repositories.config - -# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets -# This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented) -!packages/build/ - -# Windows Azure Build Output -csx/ -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ diff --git a/LICENSE.md b/LICENSE.md index 6811f7fc..b4442186 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Tyler Morrow +Copyright (c) 2023 Tyler Morrow Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index de19933d..ef1bb053 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,28 @@ # Sphinx -A web application for managing Delta Sigma Phi (Delta Epsilon) fraternity operations. +Sphinx is a collection of projects implementing a web application for managing Delta Sigma Phi (Delta Epsilon) fraternity operations. +It was started in January 2013 by Tyler (Ty) Morrow and first launched in Fall of 2014. -## Contributing - -Following the instructions below in order to get the website running locally and contribute changes. - -### Installations - -- Visual Studio Community Edition (latest) -- SQL Server 2016 Express - - Download and install the Express edition from [here][2] - - Make sure you get SQL Server Management Studio too - -### Clone & Build - -Clone the repository with git and open the solution in Visual Studio. -Build the solution to download all the required NuGet packages, which may take a few minutes. - -### Building Your Local Databases +It unifies public web pages with private web pages (which require authentication) where custom, fraternity-centric features are implemented to streamline operations. +Some examples are: -This application uses [Entity Framework Code-First][1] to handle database interaction and management. -After you've installed everything, cloned the repo, and built the solution, open the NuGet Package Manager Console in Visual Studio and run the following commands: +- roster management +- laundry signup +- meal schedule +- room assignment +- house work orders +- and more -~~~ sh -PM> Enable-Migrations -ContextTypeName Dsp.Data.SphinxDbContext -ProjectName Dsp.Data -PM> Update-Database -ConfigurationTypeName Dsp.Data.Migrations.Configuration -ProjectName Dsp.Data -~~~ +Public web pages also tie into the behind-the-scenes fraternity operations so that they can stay up-to-date (e.g., auto-updating the contacts page every semester based on the appointed leaders). -If you receive an error about the database not existing, you will need to modify the connection string in the root `Web.config` to point to a fresh, local sql server database that you will need to create. -Get the latest version of SQL Server Management Studio to create a local database. -Entity Framework *migrations* exist to keep track of every change made to the database schema over time. -The first command simply turns on the ability to use migrations. -The second command creates a new migration based on anything that has changed since the previous migration. -The third command actually updates your local database by applying any unapplied migrations. +## Requesting Changes -Contact Ty if you get stuck. +Use the issues tab of this repository to request changes. -### Data -The `Seed` method in `Migrations/Configuration.cs` contains some commented out code that serves as a good starting place. -If you are working with Ty on the Delta Sigma Phi website, contact him for some recent data to throw in your local database. -To make yourself an administrator, run the following SQL query on the DspDb: -~~~ sql -INSERT INTO Leaders VALUES (/*your user id from Members table*/, 1, 30, '2014-01-01 12:00:00.000') -~~~ - -### Contributing - -1. Create your feature branch: `git checkout -b my-new-feature` -2. Commit your changes: `git commit -am 'Add some feature'` -3. Push to the branch: `git push origin my-new-feature` -4. Submit a pull request - -The idea is to do your work on a branch other than `master` and then submit a pull request for that branch to be merged into master on the upstream repo. - -## Deployment - -The easiest way is to download the Web Publish profile from the host to somewhere on your computer and use it. -Right-click on the `Dsp` project and select Publish. -In the Publish prompt, import the profile you downloaded and click through the rest of the sub-menus. -If there are new database migrations since the last time you published, make sure the "Execute Code-First Migrations" box is checked. +## Contributing -## Feedback -Use the issues feature of this repository to report bugs or make suggestions/requests for new features, or enhancements to existing ones. +Members are welcome to contribute and even request access to this organization via GitHub. -[1]: http://www.entityframeworktutorial.net/code-first/entity-framework-code-first.aspx -[2]: https://www.microsoft.com/en-us/sql-server/sql-server-downloads +Contributing requires pull requests and following the [Development Guide](https://github.com/deltasig/sphinx/wiki/Development-Guide) in the Wiki. diff --git a/src/.editorconfig b/src/.editorconfig new file mode 100644 index 00000000..150f2e8a --- /dev/null +++ b/src/.editorconfig @@ -0,0 +1,86 @@ + +[*.{cs,vb}] +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case +dotnet_style_operator_placement_when_wrapping = beginning_of_line +tab_width = 4 +indent_size = 4 +end_of_line = crlf +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion +dotnet_style_namespace_match_folder = true:suggestion + +[*.cs] +csharp_indent_labels = no_change +csharp_using_directive_placement = outside_namespace:silent +csharp_prefer_simple_using_statement = true:suggestion +csharp_prefer_braces = true:silent +csharp_style_namespace_declarations = file_scoped:error +csharp_style_prefer_method_group_conversion = true:silent +csharp_style_prefer_top_level_statements = true:silent +csharp_style_prefer_primary_constructors = true:suggestion +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_throw_expression = true:suggestion \ No newline at end of file diff --git a/src/Dsp.Data/Dsp.Data.csproj b/src/Dsp.Data/Dsp.Data.csproj index 2d1b5520..4513b396 100644 --- a/src/Dsp.Data/Dsp.Data.csproj +++ b/src/Dsp.Data/Dsp.Data.csproj @@ -1,542 +1,27 @@ - - - + - Debug - AnyCPU - {9CE07462-20A3-4EE6-8797-7EA69E05ACB8} Library - Properties - Dsp.Data - Dsp.Data - v4.5.2 - 512 - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 + + net7.0 + false + Dsp.Data + Dsp.Data + Copyright © 2016 + 1.0.0.0 + 1.0.0.0 - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll - - - ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll - True - - - ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 201507142355194_Initial.cs - - - - 201507150136182_IncreasedClassShorthand.cs - - - - 201507152053564_LeaderPKRefactoring.cs - - - - 201507230024165_AddRoomSemester.cs - - - - 201507231924452_RemoveRoomField.cs - - - - 201507232040482_ChangedMoveOutFieldType.cs - - - - 201508082327224_AddMemberAvatarField.cs - - - - 201508160431007_RemoveClassFileVotes.cs - - - - 201508222223219_StudyHours.cs - - - - 201510010058282_StudyHoursUpdate.cs - - - - 201510220016341_UpdateServiceHourTables.cs - - - - 201510220032149_ServiceAmendments.cs - - - - 201510230422211_ServiceAmendmentsV2.cs - - - - 201602080646217_InitialChoreEntities.cs - - - - 201607240433104_BroQuest.cs - - - - 201607240450423_BroQuest2.cs - - - - 201607242359249_BroQuest3.cs - - - - 201607310108175_QuestChallengeIndex.cs - - - - 201608040511353_RemovedIsVerified.cs - - - - 201701131340141_RemovedBroQuest.cs - - - - 201709120110388_MealToPeriodIndex.cs - - - - 201710212045585_ConsolidateElmahDb.cs - - - - 201711060219354_ExpandedIncidentReport.cs - - - - 201801140018352_Philanthropy.cs - - - - 201801150053109_Philanthropy2.cs - - - - 201801160331190_Philanthropy3.cs - - - - 201801191611287_FundraiserDescriptions.cs - - - - 201801191637314_FundraiserExternalControl.cs - - - - 201801191710242_FundraiserExternalControl2.cs - - - - 201801271725420_SemesterRecruitmentBookUrl.cs - - - - 201806092114024_RemovedStudyEntities.cs - - - - 201806102123119_RemovedMealItemTypes.cs - - - - 201806102128228_ChangingMealItemPK.cs - - - - 201806102139287_ChangingMealPK.cs - - - - 201806102150165_ChangingMealPeriodPK.cs - - - - 201806102156141_ChangingMealPlatePK.cs - - - - 201806102158017_ChangingMealVotePK.cs - - - - 201806102202043_ChangingMealToItemPK.cs - - - - 201806102205176_ChangingMealToPeriodPK.cs - - - - 201806102208427_ChangingMealTableNames.cs - - - - 201806102216522_ChangingMealVoteTableName.cs - - - - 201806110004492_RemovingMealIndexes.cs - - - - 201806110031107_AddNewMealIndexes.cs - - - - 201806161629223_MealSchemaReduction1.cs - - - - 201806161649318_MealSchemaReduction2.cs - - - - 201806161705472_MealSchemaReduction3.cs - - - - 201806241957117_CachingMealVotes.cs - - - - 201809011555039_InitialBugReportEntities.cs - - - - 201809032326475_RemovedErroredOnFromBugReport.cs - - - - 201809040129566_BugReportRequiredProperties.cs - - - - 201810060122124_MemberDietaryInstructions.cs - - - - 201906292138158_RemovedFilesAndGrades.cs - - - - 201906292147464_RemovedFilesAndGrades2.cs - - - - 201906292206344_RemoveShirtSize.cs - - - - 201907201558340_AddSemesterToServiceEvent.cs - - - - 201908010316108_ReaddShirtSize.cs - - - - 201908031622582_RemoveBugReports.cs - - - - 201908161344300_AddIncidentReportIdentitySharing.cs - - - - - - - - - - - - - - - - 201507142355194_Initial.cs - Designer - - - 201507150136182_IncreasedClassShorthand.cs - - - 201507152053564_LeaderPKRefactoring.cs - - - 201507230024165_AddRoomSemester.cs - - - 201507231924452_RemoveRoomField.cs - - - 201507232040482_ChangedMoveOutFieldType.cs - - - 201508082327224_AddMemberAvatarField.cs - - - 201508160431007_RemoveClassFileVotes.cs - - - 201508222223219_StudyHours.cs - - - 201510010058282_StudyHoursUpdate.cs - - - 201510220016341_UpdateServiceHourTables.cs - - - 201510220032149_ServiceAmendments.cs - - - 201510230422211_ServiceAmendmentsV2.cs - - - 201602080646217_InitialChoreEntities.cs - - - 201607240433104_BroQuest.cs - - - 201607240450423_BroQuest2.cs - - - 201607242359249_BroQuest3.cs - - - 201607310108175_QuestChallengeIndex.cs - - - 201608040511353_RemovedIsVerified.cs - - - 201701131340141_RemovedBroQuest.cs - - - 201709120110388_MealToPeriodIndex.cs - - - 201710212045585_ConsolidateElmahDb.cs - - - 201711060219354_ExpandedIncidentReport.cs - - - 201801140018352_Philanthropy.cs - - - 201801150053109_Philanthropy2.cs - - - 201801160331190_Philanthropy3.cs - - - 201801191611287_FundraiserDescriptions.cs - - - 201801191637314_FundraiserExternalControl.cs - - - 201801191710242_FundraiserExternalControl2.cs - - - 201801271725420_SemesterRecruitmentBookUrl.cs - - - 201806092114024_RemovedStudyEntities.cs - - - 201806102123119_RemovedMealItemTypes.cs - - - 201806102128228_ChangingMealItemPK.cs - - - 201806102139287_ChangingMealPK.cs - - - 201806102150165_ChangingMealPeriodPK.cs - - - 201806102156141_ChangingMealPlatePK.cs - - - 201806102158017_ChangingMealVotePK.cs - - - 201806102202043_ChangingMealToItemPK.cs - - - 201806102205176_ChangingMealToPeriodPK.cs - - - 201806102208427_ChangingMealTableNames.cs - - - 201806102216522_ChangingMealVoteTableName.cs - - - 201806110004492_RemovingMealIndexes.cs - - - 201806110031107_AddNewMealIndexes.cs - - - 201806161629223_MealSchemaReduction1.cs - - - 201806161649318_MealSchemaReduction2.cs - - - 201806161705472_MealSchemaReduction3.cs - - - 201806241957117_CachingMealVotes.cs - - - 201809011555039_InitialBugReportEntities.cs - - - 201809032326475_RemovedErroredOnFromBugReport.cs - - - 201809040129566_BugReportRequiredProperties.cs - - - 201810060122124_MemberDietaryInstructions.cs - - - 201906292138158_RemovedFilesAndGrades.cs - - - 201906292147464_RemovedFilesAndGrades2.cs - - - 201906292206344_RemoveShirtSize.cs - - - 201907201558340_AddSemesterToServiceEvent.cs - - - 201908010316108_ReaddShirtSize.cs - - - 201908031622582_RemoveBugReports.cs - - - 201908161344300_AddIncidentReportIdentitySharing.cs - + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + - - \ No newline at end of file diff --git a/src/Dsp.Data/DspDbContext.cs b/src/Dsp.Data/DspDbContext.cs new file mode 100644 index 00000000..710a89a5 --- /dev/null +++ b/src/Dsp.Data/DspDbContext.cs @@ -0,0 +1,726 @@ +using Dsp.Data.Entities; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; + +namespace Dsp.Data; + +public partial class DspDbContext : + IdentityDbContext, int, IdentityUserClaim, IdentityUserRole, IdentityUserLogin, IdentityRoleClaim, IdentityUserToken> +{ + public DspDbContext() + { + } + + public DspDbContext(DbContextOptions options) + : base(options) + { + } + + public virtual DbSet
Addresses { get; set; } + + public virtual DbSet Classes { get; set; } + + public virtual DbSet ClassesTaken { get; set; } + + public virtual DbSet Departments { get; set; } + + public virtual DbSet IncidentReports { get; set; } + + public virtual DbSet LaundrySignups { get; set; } + + public virtual DbSet Majors { get; set; } + + public virtual DbSet MajorsToMembers { get; set; } + + public virtual DbSet MealItems { get; set; } + + public virtual DbSet MealItemVotes { get; set; } + + public virtual DbSet MealItemsToPeriods { get; set; } + + public virtual DbSet MealPeriods { get; set; } + + public virtual DbSet MealPlates { get; set; } + + public virtual DbSet Members { get; set; } + + public virtual DbSet MembersPositions { get; set; } + + public virtual DbSet PledgeClasses { get; set; } + + public virtual DbSet Positions { get; set; } + + public virtual DbSet Rooms { get; set; } + + public virtual DbSet RoomsToMembers { get; set; } + + public virtual DbSet ScholarshipAnswers { get; set; } + + public virtual DbSet ScholarshipApps { get; set; } + + public virtual DbSet ScholarshipAppQuestions { get; set; } + + public virtual DbSet ScholarshipQuestions { get; set; } + + public virtual DbSet ScholarshipSubmissions { get; set; } + + public virtual DbSet ScholarshipTypes { get; set; } + + public virtual DbSet Semesters { get; set; } + + public virtual DbSet ServiceEvents { get; set; } + + public virtual DbSet ServiceEventAmendments { get; set; } + + public virtual DbSet ServiceHours { get; set; } + + public virtual DbSet ServiceHourAmendments { get; set; } + + public virtual DbSet SoberSignups { get; set; } + + public virtual DbSet SoberTypes { get; set; } + + public virtual DbSet WorkOrders { get; set; } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.Entity(entity => + { + entity.Property(e => e.CreatedOn).HasColumnType("datetime"); + entity.Property(e => e.Email) + .IsRequired() + .HasMaxLength(256); + entity.Property(e => e.FirstName) + .IsRequired() + .HasMaxLength(100); + entity.Property(e => e.LastName) + .IsRequired() + .HasMaxLength(50); + entity.Property(e => e.UserName) + .IsRequired() + .HasMaxLength(256); + entity.Property(e => e.EmergencyContact) + .IsRequired(false) + .HasMaxLength(50); + entity.Property(e => e.EmergencyRelation) + .IsRequired(false) + .HasMaxLength(50); + entity.Property(e => e.EmergencyPhoneNumber) + .IsRequired(false); + + entity + .HasOne(d => d.MemberInfo) + .WithOne(p => p.UserInfo) + .HasForeignKey(d => d.MemberId) + .IsRequired(false); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.Positions"); + entity.Property(e => e.Id).HasColumnName("PositionId"); + + entity.Property(e => e.Description).HasMaxLength(100); + entity.Property(e => e.Inquiries).HasMaxLength(50); + entity.Property(e => e.Name) + .IsRequired() + .HasMaxLength(256); + + entity.ToTable("Positions"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.Members"); + entity.Property(e => e.Id).HasColumnName("Id"); + + entity.Property(e => e.CreatedOn).HasColumnType("datetime"); + entity.Property(e => e.DietaryInstructions).HasMaxLength(50); + entity.Property(e => e.Email) + .IsRequired() + .HasMaxLength(256); + entity.Property(e => e.FirstName) + .IsRequired() + .HasMaxLength(100); + entity.Property(e => e.LastName) + .IsRequired() + .HasMaxLength(50); + entity.Property(e => e.LastUpdatedOn).HasColumnType("datetime"); + + entity.HasOne(d => d.BigBro).WithMany(p => p.LittleBros) + .HasForeignKey(d => d.BigBroId) + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + entity.HasOne(d => d.ExpectedGraduation).WithMany(p => p.GraduatingMembers) + .HasForeignKey(d => d.ExpectedGraduationId) + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + entity.HasOne(d => d.PledgeClass).WithMany(p => p.Users) + .HasForeignKey(d => d.PledgeClassId) + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + entity.ToTable("Members"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => new { e.UserId, e.RoleId, e.SemesterId }).HasName("PK_dbo.Leaders"); + + entity.Property(e => e.RoleId).HasColumnName("LeaderId"); + + entity.Property(e => e.AppointedOn).HasColumnType("datetime"); + + entity.HasOne(d => d.Semester).WithMany(p => p.Leaders) + .HasForeignKey(d => d.SemesterId) + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + entity.HasOne(d => d.User).WithMany(p => p.Roles) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + entity.HasOne(d => d.Role).WithMany(p => p.Users) + .HasForeignKey(d => d.RoleId) + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + entity.ToTable("MembersPositions"); + }); + + modelBuilder.Entity
(entity => + { + entity.HasKey(e => e.AddressId).HasName("PK_dbo.Addresses"); + + entity.Property(e => e.Address1).HasMaxLength(100); + entity.Property(e => e.Address2).HasMaxLength(100); + entity.Property(e => e.City).HasMaxLength(50); + entity.Property(e => e.Country).HasMaxLength(50); + entity.Property(e => e.State).HasMaxLength(2); + entity.Property(e => e.Type) + .IsRequired() + .HasMaxLength(20); + + entity.HasOne(d => d.User).WithMany(p => p.Addresses) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + entity.ToTable("Addresses"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ClassId).HasName("PK_dbo.Classes"); + + entity.Property(e => e.CourseName) + .IsRequired() + .HasMaxLength(100); + entity.Property(e => e.CourseShorthand) + .IsRequired() + .HasMaxLength(50); + + entity.HasOne(d => d.Department).WithMany(p => p.Classes) + .HasForeignKey(d => d.DepartmentId) + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + entity.ToTable("Classes"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ClassTakenId).HasName("PK_dbo.ClassesTaken"); + + entity.Property(e => e.CreatedOn).HasColumnType("datetime"); + + entity.HasOne(d => d.Class).WithMany(p => p.ClassesTaken) + .HasForeignKey(d => d.ClassId) + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + entity.HasOne(d => d.Semester).WithMany(p => p.ClassesTaken) + .HasForeignKey(d => d.SemesterId) + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + entity.HasOne(d => d.User).WithMany(p => p.ClassesTaken) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + entity.ToTable("ClassesTaken"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.DepartmentId).HasName("PK_dbo.Departments"); + + entity.Property(e => e.Name) + .IsRequired() + .HasMaxLength(100); + + entity.ToTable("Departments"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.IncidentReports"); + + entity.Property(e => e.DateTimeOfIncident).HasColumnType("datetime"); + entity.Property(e => e.DateTimeSubmitted).HasColumnType("datetime"); + entity.Property(e => e.Description) + .IsRequired() + .HasMaxLength(1500); + entity.Property(e => e.InvestigationNotes) + .IsRequired() + .HasMaxLength(3000) + .HasDefaultValueSql("('')"); + entity.Property(e => e.OfficialReport).HasMaxLength(1500); + entity.Property(e => e.PolicyBroken) + .IsRequired() + .HasMaxLength(100); + + entity.HasOne(d => d.User).WithMany(p => p.IncidentReports) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + entity.ToTable("IncidentReports"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.DateTimeShift).HasName("PK_dbo.LaundrySignups"); + + entity.Property(e => e.DateTimeShift).HasColumnType("datetime"); + entity.Property(e => e.DateTimeSignedUp).HasColumnType("datetime"); + + entity.HasOne(d => d.User).WithMany(p => p.LaundrySignups) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + entity.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.MajorId).HasName("PK_dbo.Majors"); + + entity.Property(e => e.MajorName) + .IsRequired() + .HasMaxLength(100); + + entity.HasOne(d => d.Department).WithMany(p => p.Majors) + .HasForeignKey(d => d.DepartmentId) + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + entity.ToTable("Majors"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.MajorToMemberId).HasName("PK_dbo.MajorToMembers"); + + entity.HasOne(d => d.Major).WithMany(p => p.MajorToMembers) + .HasForeignKey(d => d.MajorId) + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + entity.HasOne(d => d.User).WithMany(p => p.Majors) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + entity.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.MealItems"); + + entity.Property(e => e.Name) + .IsRequired() + .HasMaxLength(150); + + entity.ToTable("MealItems"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.MealItemVotes"); + + entity.HasIndex(e => new { e.UserId, e.MealItemId }, "IX_User_MealItem").IsUnique(); + + entity.HasOne(d => d.MealItem).WithMany(p => p.Votes) + .HasForeignKey(d => d.MealItemId) + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + entity.HasOne(d => d.User).WithMany(p => p.MealItemVotes) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + entity.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.MealItemsToPeriods"); + + entity.HasIndex(e => new { e.MealPeriodId, e.MealItemId, e.Date }, "IX_MealPeriod_MealItem_Date").IsUnique(); + + entity.Property(e => e.Date).HasColumnType("date"); + + entity.HasOne(d => d.MealItem).WithMany(p => p.Periods) + .HasForeignKey(d => d.MealItemId) + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + entity.HasOne(d => d.MealPeriod).WithMany(p => p.Items) + .HasForeignKey(d => d.MealPeriodId) + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + entity.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.MealPeriods"); + + entity.Property(e => e.EndTime).HasColumnType("datetime"); + entity.Property(e => e.Name) + .IsRequired() + .HasMaxLength(100); + entity.Property(e => e.StartTime).HasColumnType("datetime"); + + entity.ToTable("MealPeriods"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.MealLatePlates"); + + entity.Property(e => e.PlateDateTime).HasColumnType("datetime"); + entity.Property(e => e.SignedUpOn).HasColumnType("datetime"); + entity.Property(e => e.Type) + .IsRequired() + .HasMaxLength(25); + + entity.HasOne(d => d.User).WithMany(p => p.MealPlates) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + entity.ToTable("MealPlates"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.PledgeClassId).HasName("PK_dbo.PledgeClasses"); + + entity.Property(e => e.InitiationDate).HasColumnType("datetime"); + entity.Property(e => e.PinningDate).HasColumnType("datetime"); + entity.Property(e => e.PledgeClassName) + .IsRequired() + .HasMaxLength(50); + + entity.HasOne(d => d.Semester).WithMany(p => p.PledgeClasses) + .HasForeignKey(d => d.SemesterId) + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + entity.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.RoomId).HasName("PK_dbo.Rooms"); + + entity.Property(e => e.Name) + .IsRequired() + .HasMaxLength(100); + + entity.HasOne(d => d.Semester).WithMany(p => p.Rooms) + .HasForeignKey(d => d.SemesterId) + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + entity.ToTable("Rooms"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.RoomToMemberId).HasName("PK_dbo.RoomToMembers"); + + entity.Property(e => e.MovedIn).HasColumnType("datetime"); + entity.Property(e => e.MovedOut).HasColumnType("datetime"); + + entity.HasOne(d => d.Room).WithMany(p => p.Members) + .HasForeignKey(d => d.RoomId) + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + entity.HasOne(d => d.User).WithMany(p => p.Rooms) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + entity.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ScholarshipAnswerId).HasName("PK_dbo.ScholarshipAnswers"); + + entity.Property(e => e.AnswerText).HasMaxLength(3000); + + entity.HasOne(d => d.Question).WithMany(p => p.Answers) + .HasForeignKey(d => d.ScholarshipQuestionId) + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + entity.HasOne(d => d.Submission).WithMany(p => p.Answers) + .HasForeignKey(d => d.ScholarshipSubmissionId) + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + entity.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ScholarshipAppId).HasName("PK_dbo.ScholarshipApps"); + + entity.Property(e => e.AdditionalText) + .IsRequired() + .HasMaxLength(3000); + entity.Property(e => e.ClosesOn).HasColumnType("datetime"); + entity.Property(e => e.OpensOn).HasColumnType("datetime"); + entity.Property(e => e.Title) + .IsRequired() + .HasMaxLength(100); + + entity.HasOne(d => d.Type).WithMany(p => p.Applications) + .HasForeignKey(d => d.ScholarshipTypeId) + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + entity.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ScholarshipAppQuestionId).HasName("PK_dbo.ScholarshipAppQuestions"); + + entity.HasOne(d => d.Application).WithMany(p => p.Questions) + .HasForeignKey(d => d.ScholarshipAppId) + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + entity.HasOne(d => d.Question).WithMany(p => p.Questions) + .HasForeignKey(d => d.ScholarshipQuestionId) + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + entity.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ScholarshipQuestionId).HasName("PK_dbo.ScholarshipQuestions"); + + entity.Property(e => e.Prompt) + .IsRequired() + .HasMaxLength(500); + + entity.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ScholarshipSubmissionId).HasName("PK_dbo.ScholarshipSubmissions"); + + entity.Property(e => e.ScholarshipSubmissionId).HasDefaultValueSql("(newsequentialid())"); + entity.Property(e => e.Address1) + .IsRequired() + .HasMaxLength(100); + entity.Property(e => e.Address2).HasMaxLength(100); + entity.Property(e => e.City) + .IsRequired() + .HasMaxLength(50); + entity.Property(e => e.CommitteeRespondedOn).HasColumnType("datetime"); + entity.Property(e => e.Country) + .IsRequired() + .HasMaxLength(50); + entity.Property(e => e.Email) + .IsRequired() + .HasMaxLength(50); + entity.Property(e => e.FirstName) + .IsRequired() + .HasMaxLength(50); + entity.Property(e => e.HearAboutScholarship) + .IsRequired() + .HasMaxLength(100); + entity.Property(e => e.HighSchool) + .IsRequired() + .HasMaxLength(100); + entity.Property(e => e.LastName) + .IsRequired() + .HasMaxLength(50); + entity.Property(e => e.PhoneNumber) + .IsRequired() + .HasMaxLength(15); + entity.Property(e => e.State).HasMaxLength(2); + entity.Property(e => e.StudentNumber) + .IsRequired() + .HasMaxLength(15); + entity.Property(e => e.SubmittedOn).HasColumnType("datetime"); + + entity.HasOne(d => d.Application).WithMany(p => p.Submissions) + .HasForeignKey(d => d.ScholarshipAppId) + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + entity.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.ScholarshipTypeId).HasName("PK_dbo.ScholarshipTypes"); + + entity.Property(e => e.Name) + .IsRequired() + .HasMaxLength(100); + + entity.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.Semesters"); + entity.Property(e => e.Id).HasColumnName("SemesterId"); + + entity.Property(e => e.DateEnd).HasColumnType("datetime"); + entity.Property(e => e.DateStart).HasColumnType("datetime"); + entity.Property(e => e.TransitionDate).HasColumnType("datetime"); + + entity.ToTable("Semesters"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.EventId).HasName("PK_dbo.ServiceEvents"); + + entity.HasIndex(e => e.SemesterId, "IX_SemesterId"); + + entity.Property(e => e.CreatedOn).HasColumnType("datetime"); + entity.Property(e => e.DateTimeOccurred).HasColumnType("datetime"); + entity.Property(e => e.EventName) + .IsRequired() + .HasMaxLength(50); + + entity.HasOne(d => d.Semester).WithMany(p => p.ServiceEvents) + .HasForeignKey(d => d.SemesterId) + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + entity.HasOne(d => d.Submitter).WithMany(p => p.ServiceEvents) + .HasForeignKey(d => d.SubmitterId) + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + entity.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.ServiceEventAmendments"); + + entity.Property(e => e.Reason) + .IsRequired() + .HasMaxLength(100); + + entity.HasOne(d => d.Semester).WithMany(p => p.ServiceEventAmendments) + .HasForeignKey(d => d.SemesterId) + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + entity.HasOne(d => d.User).WithMany(p => p.ServiceEventAmendments) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + entity.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => new { e.UserId, e.EventId }).HasName("PK_dbo.ServiceHours"); + + entity.Property(e => e.DateTimeSubmitted).HasColumnType("datetime"); + + entity.HasOne(d => d.Event).WithMany(p => p.ServiceHours) + .HasForeignKey(d => d.EventId) + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + entity.HasOne(d => d.User).WithMany(p => p.ServiceHours) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + entity.ToTable("ServiceHours"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PK_dbo.ServiceHourAmendments"); + + entity.Property(e => e.Reason) + .IsRequired() + .HasMaxLength(100); + + entity.HasOne(d => d.Semester).WithMany(p => p.ServiceHourAmendments) + .HasForeignKey(d => d.SemesterId) + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + entity.HasOne(d => d.User).WithMany(p => p.ServiceHourAmendments) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + entity.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.SignupId).HasName("PK_dbo.SoberSignups"); + + entity.Property(e => e.CreatedOn).HasColumnType("datetime"); + entity.Property(e => e.DateOfShift).HasColumnType("datetime"); + entity.Property(e => e.DateTimeSignedUp).HasColumnType("datetime"); + entity.Property(e => e.Description).HasMaxLength(100); + + entity.HasOne(d => d.SoberType).WithMany(p => p.Signups) + .HasForeignKey(d => d.SoberTypeId) + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + entity.HasOne(d => d.User).WithMany(p => p.SoberSignups) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + entity.ToTable("SoberSignups"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.SoberTypeId).HasName("PK_dbo.SoberTypes"); + + entity.Property(e => e.Description).HasMaxLength(3000); + entity.Property(e => e.Name) + .IsRequired() + .HasMaxLength(100); + + entity.ToTable("SoberTypes"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.WorkOrderId).HasName("PK_dbo.WorkOrders"); + + entity.Property(e => e.Description) + .IsRequired() + .HasMaxLength(3000); + entity.Property(e => e.Result).HasMaxLength(3000); + entity.Property(e => e.Title) + .IsRequired() + .HasMaxLength(100); + + entity.Property(e => e.CreatedOn) + .HasColumnType("datetime") + .IsRequired(); + + entity.Property(e => e.ClosedOn) + .HasColumnType("datetime"); + + entity.HasOne(d => d.User).WithMany(p => p.WorkOrders) + .HasForeignKey(d => d.UserId) + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + entity.ToTable("WorkOrders"); + }); + } +} diff --git a/src/Dsp.Data/Entities/Address.cs b/src/Dsp.Data/Entities/Address.cs index 5d63905e..fa1265f0 100644 --- a/src/Dsp.Data/Entities/Address.cs +++ b/src/Dsp.Data/Entities/Address.cs @@ -1,60 +1,57 @@ -namespace Dsp.Data.Entities +using Microsoft.AspNetCore.Identity; +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class Address { - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int AddressId { get; set; } + + public int UserId { get; set; } + + public string Type { get; set; } + + [ProtectedPersonalData] + public string Address1 { get; set; } + + [ProtectedPersonalData] + public string Address2 { get; set; } + + [ProtectedPersonalData] + public string City { get; set; } + + [ProtectedPersonalData] + public string State { get; set; } + + [ProtectedPersonalData] + public int PostalCode { get; set; } + + [ProtectedPersonalData] + public string Country { get; set; } + + public virtual Member User { get; set; } + + public bool IsFilledOut() + { + return !string.IsNullOrEmpty(Address1) && !string.IsNullOrEmpty(City) && !string.IsNullOrEmpty(State); + } - public class Address + public override string ToString() { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int AddressId { get; set; } - - public int UserId { get; set; } - - [Required, StringLength(20), Display(Name = "Type")] - public string Type { get; set; } - - [StringLength(100), Display(Name = "Address 1")] - public string Address1 { get; set; } - - [StringLength(100), Display(Name = "Address 2")] - public string Address2 { get; set; } - - [StringLength(50)] - public string City { get; set; } - - [StringLength(2)] - public string State { get; set; } - - [Display(Name = "Postal Code")] - public int PostalCode { get; set; } - - [StringLength(50)] - public string Country { get; set; } - - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - - public bool IsFilledOut() - { - return !string.IsNullOrEmpty(Address1) && !string.IsNullOrEmpty(City) && !string.IsNullOrEmpty(State); - } - - public override string ToString() - { - var address = string.Empty; - if (!string.IsNullOrEmpty(Address1)) - address += Address1; - if (!string.IsNullOrEmpty(Address2)) - address += ", " + Address2; - if (!string.IsNullOrEmpty(City)) - address += ", " + City; - if (!string.IsNullOrEmpty(State)) - address += ", " + State; - if (PostalCode > 0) - address += ", " + PostalCode; - if (!string.IsNullOrEmpty(Country)) - address += ", " + Country; - return address; - } + var address = string.Empty; + if (!string.IsNullOrEmpty(Address1)) + address += Address1; + if (!string.IsNullOrEmpty(Address2)) + address += ", " + Address2; + if (!string.IsNullOrEmpty(City)) + address += ", " + City; + if (!string.IsNullOrEmpty(State)) + address += ", " + State; + if (PostalCode > 0) + address += ", " + PostalCode; + if (!string.IsNullOrEmpty(Country)) + address += ", " + Country; + return address; } } diff --git a/src/Dsp.Data/Entities/Cause.cs b/src/Dsp.Data/Entities/Cause.cs deleted file mode 100644 index b46c41cb..00000000 --- a/src/Dsp.Data/Entities/Cause.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - [Table("Causes")] - public class Cause - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, StringLength(150)] - public string Name { get; set; } - - [Required, StringLength(5000), DataType(DataType.MultilineText)] - public string Description { get; set; } - - [InverseProperty("Cause")] - public virtual ICollection Fundraisers { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/Chore.cs b/src/Dsp.Data/Entities/Chore.cs deleted file mode 100644 index 907a5ca3..00000000 --- a/src/Dsp.Data/Entities/Chore.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class Chore - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - public int TypeId { get; set; } - - [Required, StringLength(100)] - public string Title { get; set; } - - [DataType(DataType.MultilineText)] - public string Description { get; set; } - - [StringLength(100)] - public string Url { get; set; } - - [ForeignKey("TypeId")] - public virtual ChoreType Type { get; set; } - [InverseProperty("Chore")] - public ICollection Assignments { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/ChoreAssignment.cs b/src/Dsp.Data/Entities/ChoreAssignment.cs deleted file mode 100644 index b6707de1..00000000 --- a/src/Dsp.Data/Entities/ChoreAssignment.cs +++ /dev/null @@ -1,47 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ChoreAssignment - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - public int ChoreId { get; set; } - public int PeriodId { get; set; } - public int GroupId { get; set; } - - public DateTime OpensOnCst { get; set; } - public DateTime DueOnCst { get; set; } - - public bool GroupCompleted { get; set; } - public DateTime GroupCompletionTimeCst { get; set; } - public int? GroupSignerId { get; set; } - - public bool? EnforcerVerified { get; set; } - public DateTime EnforcerVerificationTimeCst { get; set; } - public int? EnforcerId { get; set; } - public string EnforcerFeedback { get; set; } - - public bool IsCancelled { get; set; } - public int? EnforcementChoreId { get; set; } - - public DateTime CreatedOnCst { get; set; } - public DateTime CancelledOnCst { get; set; } - - [ForeignKey("ChoreId")] - public virtual Chore Chore { get; set; } - [ForeignKey("PeriodId")] - public virtual ChorePeriod Period { get; set; } - [ForeignKey("GroupId")] - public virtual ChoreGroup Group { get; set; } - [ForeignKey("GroupSignerId")] - public virtual Member Member { get; set; } - [ForeignKey("EnforcerId")] - public virtual Member Enforcer { get; set; } - [ForeignKey("EnforcementChoreId")] - public virtual ChoreAssignment EnforcementChore { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/ChoreGroup.cs b/src/Dsp.Data/Entities/ChoreGroup.cs deleted file mode 100644 index 5ee3f02d..00000000 --- a/src/Dsp.Data/Entities/ChoreGroup.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ChoreGroup - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - public int TypeId { get; set; } - - public int? SemesterId { get; set; } - - [Required, StringLength(50)] - public string Name { get; set; } - - public string AvatarPath { get; set; } - - [ForeignKey("TypeId")] - public virtual ChoreGroupType Type { get; set; } - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - [InverseProperty("Group")] - public virtual ICollection Members { get; set; } - [InverseProperty("Group")] - public virtual ICollection Assignments { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/ChoreGroupToMember.cs b/src/Dsp.Data/Entities/ChoreGroupToMember.cs deleted file mode 100644 index 05d602a7..00000000 --- a/src/Dsp.Data/Entities/ChoreGroupToMember.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ChoreGroupToMember - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, Column(Order = 0), Index("IX_ChoreGroupToMember", 0, IsUnique = true)] - public int ChoreGroupId { get; set; } - - [Required, Column(Order = 1), Index("IX_ChoreGroupToMember", 1, IsUnique = true)] - public int UserId { get; set; } - - [ForeignKey("ChoreGroupId")] - public virtual ChoreGroup Group { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/ChoreGroupType.cs b/src/Dsp.Data/Entities/ChoreGroupType.cs deleted file mode 100644 index 49bcc9a3..00000000 --- a/src/Dsp.Data/Entities/ChoreGroupType.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ChoreGroupType - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, StringLength(50)] - public string Name { get; set; } - - [InverseProperty("Type")] - public ICollection Groups { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/ChorePeriod.cs b/src/Dsp.Data/Entities/ChorePeriod.cs deleted file mode 100644 index 2f9e5bdb..00000000 --- a/src/Dsp.Data/Entities/ChorePeriod.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ChorePeriod - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Display(Name = "Begins On")] - public DateTime BeginsOnCst { get; set; } - - [Display(Name = "Ends On")] - public DateTime EndsOnCst { get; set; } - - [InverseProperty("Period")] - public virtual ICollection Assignments { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/ChoreType.cs b/src/Dsp.Data/Entities/ChoreType.cs deleted file mode 100644 index a75c2b80..00000000 --- a/src/Dsp.Data/Entities/ChoreType.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ChoreType - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, StringLength(50)] - public string Name { get; set; } - - [InverseProperty("Type")] - public ICollection Chores { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/Class.cs b/src/Dsp.Data/Entities/Class.cs index 654c36a7..e975115e 100644 --- a/src/Dsp.Data/Entities/Class.cs +++ b/src/Dsp.Data/Entities/Class.cs @@ -1,30 +1,21 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class Class { - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int ClassId { get; set; } - public class Class - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ClassId { get; set; } + public int DepartmentId { get; set; } - [Required, Display(Name = "Department")] - public int DepartmentId { get; set; } + public string CourseShorthand { get; set; } - [Required, MinLength(1), StringLength(50), DataType(DataType.Text), Display(Name = "Number")] - public string CourseShorthand { get; set; } + public string CourseName { get; set; } - [Required, MinLength(1), StringLength(100), Display(Name = "Name")] - public string CourseName { get; set; } + public int CreditHours { get; set; } - [Required, Display(Name = "Credit Hours")] - [Range(1, 6, ErrorMessage = "Please enter a valid number of credit hours: 1-6.")] - public int CreditHours { get; set; } + public virtual ICollection ClassesTaken { get; set; } = new List(); - [ForeignKey("DepartmentId")] - public virtual Department Department { get; set; } - [InverseProperty("Class")] - public virtual ICollection ClassesTaken { get; set; } - } + public virtual Department Department { get; set; } } diff --git a/src/Dsp.Data/Entities/ClassTaken.cs b/src/Dsp.Data/Entities/ClassTaken.cs index 6cd24a2d..020bb04c 100644 --- a/src/Dsp.Data/Entities/ClassTaken.cs +++ b/src/Dsp.Data/Entities/ClassTaken.cs @@ -1,36 +1,25 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ClassTaken { - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - [Table("ClassesTaken")] - public class ClassTaken - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ClassTakenId { get; set; } - - [Required, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)] - [Index("IX_ClassTaken", 0, IsUnique = true)] - public int UserId { get; set; } - - [Required, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)] - [Index("IX_ClassTaken", 1, IsUnique = true), Display(Name = "Class")] - public int ClassId { get; set; } - - [Required, Column(Order = 2), DatabaseGenerated(DatabaseGeneratedOption.None)] - [Index("IX_ClassTaken", 2, IsUnique = true), Display(Name = "Semesters")] - public int SemesterId { get; set; } - - public bool IsSummerClass { get; set; } - - public DateTime? CreatedOn { get; set; } - - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - [ForeignKey("ClassId")] - public virtual Class Class { get; set; } - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - } + public int ClassTakenId { get; set; } + + public int UserId { get; set; } + + public int ClassId { get; set; } + + public int SemesterId { get; set; } + + public bool IsSummerClass { get; set; } + + public DateTime? CreatedOn { get; set; } + + public virtual Class Class { get; set; } + + public virtual Semester Semester { get; set; } + + public virtual Member User { get; set; } } diff --git a/src/Dsp.Data/Entities/Department.cs b/src/Dsp.Data/Entities/Department.cs index 9001c856..f863a080 100644 --- a/src/Dsp.Data/Entities/Department.cs +++ b/src/Dsp.Data/Entities/Department.cs @@ -1,20 +1,15 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class Department { - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int DepartmentId { get; set; } - public class Department - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int DepartmentId { get; set; } + public string Name { get; set; } - [Required, StringLength(100), Display(Name = "Name")] - public string Name { get; set; } + public virtual ICollection Classes { get; set; } = new List(); - [InverseProperty("Department")] - public virtual ICollection Majors { get; set; } - [InverseProperty("Department")] - public virtual ICollection Classes { get; set; } - } + public virtual ICollection Majors { get; set; } = new List(); } diff --git a/src/Dsp.Data/Entities/Donation.cs b/src/Dsp.Data/Entities/Donation.cs deleted file mode 100644 index 2234e5c2..00000000 --- a/src/Dsp.Data/Entities/Donation.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class Donation - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - public int FundraiserId { get; set; } - - [Required, StringLength(100), Display(Name = "First Name")] - public string FirstName { get; set; } - - [Required, StringLength(50), Display(Name = "Last Name")] - public string LastName { get; set; } - - public string Email { get; set; } - - [Column("PhoneNumber"), DataType(DataType.PhoneNumber), Display(Name = "Preferred Phone Number")] - [RegularExpression(@"^(([0-9]{3}[-]?([0-9]{3})[-]?[0-9]{4})|([+]?[0-9]{11,15}))$", - ErrorMessage = "Phone number format was invalid.")] - public string PhoneNumber { get; set; } - - [Range(0.01, double.MaxValue, ErrorMessage = "The amount must be at least 1 cent.")] - public double Amount { get; set; } - - public DateTime? ReceivedOn { get; set; } - - public DateTime CreatedOn { get; set; } - - [ForeignKey("FundraiserId")] - public virtual Fundraiser Fundraiser { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/ElmahErrorLog.cs b/src/Dsp.Data/Entities/ElmahErrorLog.cs deleted file mode 100644 index 13d0cfbf..00000000 --- a/src/Dsp.Data/Entities/ElmahErrorLog.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.Data.Entity; - - public class ElmahErrorLog - { - [Key] - public Guid ErrorId { get; set; } - [StringLength(60)] - public string Application { get; set; } - [StringLength(50)] - public string Host { get; set; } - [StringLength(100)] - public string Type { get; set; } - [StringLength(60)] - public string Source { get; set; } - [StringLength(500)] - public string Message { get; set; } - [StringLength(50)] - public string User { get; set; } - public int StatusCode { get; set; } - public DateTime TimeUtc { get; set; } - public int? Sequence { get; set; } - public string AllXml { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Data/Entities/Email.cs b/src/Dsp.Data/Entities/Email.cs deleted file mode 100644 index 404da906..00000000 --- a/src/Dsp.Data/Entities/Email.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class Email - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int EmailId { get; set; } - - public int EmailTypeId { get; set; } - - public DateTime SentOn { get; set; } - - public string Destination { get; set; } - - public string Body { get; set; } - - [ForeignKey("EmailTypeId")] - public virtual EmailType EmailType { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Data/Entities/EmailType.cs b/src/Dsp.Data/Entities/EmailType.cs deleted file mode 100644 index cc6d11d0..00000000 --- a/src/Dsp.Data/Entities/EmailType.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class EmailType - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int EmailTypeId { get; set; } - - [StringLength(100)] - public string Name { get; set; } - - [StringLength(100)] - public string Destination { get; set; } - - [InverseProperty("EmailType")] - public virtual ICollection Emails { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Data/Entities/Fundraiser.cs b/src/Dsp.Data/Entities/Fundraiser.cs deleted file mode 100644 index eb1bb76f..00000000 --- a/src/Dsp.Data/Entities/Fundraiser.cs +++ /dev/null @@ -1,45 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class Fundraiser - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - public int CauseId { get; set; } - - [Required, StringLength(150)] - public string Name { get; set; } - - [Required, Range(0, double.MaxValue)] - public double Goal { get; set; } - - [Required, Display(Name = "Begins")] - public DateTime BeginsOn { get; set; } - - [Display(Name = "Ends")] - public DateTime? EndsOn { get; set; } - - [Required, StringLength(2000), DataType(DataType.MultilineText), Display(Name = "Description")] - public string Description { get; set; } - - [Required, StringLength(2000), DataType(DataType.MultilineText), Display(Name = "Donation Instructions")] - public string DonationInstructions { get; set; } - - [Required, Display(Name = "Display on Donate Page")] - public bool IsPublic { get; set; } - - [Required, Display(Name = "Allow New Members")] - public bool IsPledgeable { get; set; } - - [ForeignKey("CauseId")] - public virtual Cause Cause { get; set; } - - [InverseProperty("Fundraiser")] - public virtual ICollection Donations { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/IncidentReport.cs b/src/Dsp.Data/Entities/IncidentReport.cs index dc527335..5e808a64 100644 --- a/src/Dsp.Data/Entities/IncidentReport.cs +++ b/src/Dsp.Data/Entities/IncidentReport.cs @@ -1,39 +1,27 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class IncidentReport - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Display(Name = "Submitted On")] - public DateTime DateTimeSubmitted { get; set; } - - public int ReportedBy { get; set; } - - [Required, DataType(DataType.Date), Display(Name = "Date of Incident")] - public DateTime DateTimeOfIncident { get; set; } - - [Required, DataType(DataType.Text), StringLength(100), Display(Name = "Policy Broken")] - public string PolicyBroken { get; set; } - - [Required, DataType(DataType.MultilineText), StringLength(1500), Display(Name = "Incident Description")] - public string Description { get; set; } - - [Required, DataType(DataType.MultilineText), StringLength(3000), Display(Name = "Investigation Notes")] - public string InvestigationNotes { get; set; } - - [DataType(DataType.MultilineText), StringLength(1500), Display(Name = "Official Report")] - public string OfficialReport { get; set; } - - [Required, Display(Name = "Share Identity?"), DefaultValue(false)] - public bool ShareIdentity { get; set; } - - [ForeignKey("ReportedBy")] - public virtual Member Member { get; set; } - } -} +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class IncidentReport +{ + public int Id { get; set; } + + public DateTime DateTimeSubmitted { get; set; } + + public int UserId { get; set; } + + public DateTime DateTimeOfIncident { get; set; } + + public string PolicyBroken { get; set; } + + public string Description { get; set; } + + public string OfficialReport { get; set; } + + public string InvestigationNotes { get; set; } + + public bool ShareIdentity { get; set; } + + public virtual Member User { get; set; } +} diff --git a/src/Dsp.Data/Entities/LaundrySignup.cs b/src/Dsp.Data/Entities/LaundrySignup.cs index 502419db..2f062814 100644 --- a/src/Dsp.Data/Entities/LaundrySignup.cs +++ b/src/Dsp.Data/Entities/LaundrySignup.cs @@ -1,46 +1,43 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class LaundrySignup { - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public DateTime DateTimeShift { get; set; } - public class LaundrySignup - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] - public DateTime DateTimeShift { get; set; } + public int UserId { get; set; } - public int UserId { get; set; } + public DateTime DateTimeSignedUp { get; set; } - public DateTime DateTimeSignedUp { get; set; } + public virtual Member User { get; set; } + + public int GetSlotSizeActualSize(int slotSize) + { + // No change occurs during this shift so need to adjust. + if (!DstChangeOccursDuringSlot(slotSize)) return slotSize; - [ForeignKey("UserId")] - public virtual Member Member { get; set; } + // Shift is in the fall (gain an hour) + if (DateTimeShift.IsDaylightSavingTime()) + { + return slotSize + 1; + } + // Shift is in spring (lose an hour) + return slotSize - 1; + } - public int GetSlotSizeActualSize(int slotSize) + public bool DstChangeOccursDuringSlot(int slotSize) + { + if (DateTimeShift.IsDaylightSavingTime() && !DateTimeShift.AddHours(slotSize).IsDaylightSavingTime()) // Fall - DST End { - // No change occurs during this shift so need to adjust. - if (!DstChangeOccursDuringSlot(slotSize)) return slotSize; - - // Shift is in the fall (gain an hour) - if (DateTimeShift.IsDaylightSavingTime()) - { - return slotSize + 1; - } - // Shift is in spring (lose an hour) - return slotSize - 1; + return true; } - public bool DstChangeOccursDuringSlot(int slotSize) + else if (!DateTimeShift.IsDaylightSavingTime() && DateTimeShift.AddHours(slotSize).IsDaylightSavingTime()) // Spring - DST Start { - if (DateTimeShift.IsDaylightSavingTime() && !DateTimeShift.AddHours(slotSize).IsDaylightSavingTime()) // Fall - DST End - { - return true; - } - else if (!DateTimeShift.IsDaylightSavingTime() && DateTimeShift.AddHours(slotSize).IsDaylightSavingTime()) // Spring - DST Start - { - return true; - } - - return false; + return true; } + + return false; } } diff --git a/src/Dsp.Data/Entities/Leader.cs b/src/Dsp.Data/Entities/Leader.cs deleted file mode 100644 index 2b293a82..00000000 --- a/src/Dsp.Data/Entities/Leader.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Dsp.Data.Entities -{ - using Microsoft.AspNet.Identity.EntityFramework; - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class Leader : IdentityUserRole - { - [Required] - public int SemesterId { get; set; } - - public DateTime AppointedOn { get; set; } - - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - - [ForeignKey("RoleId")] - public virtual Position Position { get; set; } - - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/Major.cs b/src/Dsp.Data/Entities/Major.cs index af954431..e488306a 100644 --- a/src/Dsp.Data/Entities/Major.cs +++ b/src/Dsp.Data/Entities/Major.cs @@ -1,23 +1,17 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class Major { - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int MajorId { get; set; } - public class Major - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int MajorId { get; set; } + public int DepartmentId { get; set; } - [Required, Display(Name = "Department")] - public int DepartmentId { get; set; } + public string MajorName { get; set; } - [Required, Display(Name = "Name"), StringLength(100)] - public string MajorName { get; set; } + public virtual Department Department { get; set; } - [ForeignKey("DepartmentId")] - public virtual Department Department { get; set; } - [InverseProperty("Major")] - public virtual ICollection MajorToMembers { get; set; } - } + public virtual ICollection MajorToMembers { get; set; } = new List(); } diff --git a/src/Dsp.Data/Entities/MajorToMember.cs b/src/Dsp.Data/Entities/MajorToMember.cs index e42616ad..5ca83a55 100644 --- a/src/Dsp.Data/Entities/MajorToMember.cs +++ b/src/Dsp.Data/Entities/MajorToMember.cs @@ -1,38 +1,29 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class MajorToMember +{ + public int MajorToMemberId { get; set; } + + public int MajorId { get; set; } + + public int UserId { get; set; } + + public DegreeLevel DegreeLevel { get; set; } + + public virtual Major Major { get; set; } + + public virtual Member User { get; set; } +} + +public enum DegreeLevel { - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class MajorToMember - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int MajorToMemberId { get; set; } - - [Required, Column(Order = 0), Index("IX_MajorToMember", 0, IsUnique = true)] - [Display(Name = "Major")] - public int MajorId { get; set; } - - [Required, Column(Order = 1), Index("IX_MajorToMember", 1, IsUnique = true)] - [Display(Name = "Member")] - public int UserId { get; set; } - - [Required, Column(Order = 2), Index("IX_MajorToMember", 2, IsUnique = true)] - [Display(Name = "Degree Level")] - public DegreeLevel DegreeLevel { get; set; } - - [ForeignKey("MajorId")] - public virtual Major Major { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } - - public enum DegreeLevel - { - Bs, - Minor, - Ms, - PhD, - Cert, - Ba - } + Bs, + Minor, + Ms, + PhD, + Cert, + Ba } diff --git a/src/Dsp.Data/Entities/MealItem.cs b/src/Dsp.Data/Entities/MealItem.cs index f5aa59c8..168a7092 100644 --- a/src/Dsp.Data/Entities/MealItem.cs +++ b/src/Dsp.Data/Entities/MealItem.cs @@ -1,32 +1,21 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; - public class MealItem - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } +public partial class MealItem +{ + public int Id { get; set; } - [Required, StringLength(150)] - public string Name { get; set; } + public string Name { get; set; } - [Required] - public bool IsGlutenFree { get; set; } + public bool IsGlutenFree { get; set; } - public int Upvotes { get; set; } + public int Upvotes { get; set; } - public int Downvotes { get; set; } + public int Downvotes { get; set; } - [InverseProperty("MealItem")] - public virtual ICollection MealPeriods { get; set; } - [InverseProperty("MealItem")] - public virtual ICollection MealVotes { get; set; } + public virtual ICollection Votes { get; set; } = new List(); - public string GetGlutenLabel() - { - return IsGlutenFree ? "Yes" : "No"; - } - } + public virtual ICollection Periods { get; set; } = new List(); } diff --git a/src/Dsp.Data/Entities/MealItemToPeriod.cs b/src/Dsp.Data/Entities/MealItemToPeriod.cs index 4b682964..f927e44e 100644 --- a/src/Dsp.Data/Entities/MealItemToPeriod.cs +++ b/src/Dsp.Data/Entities/MealItemToPeriod.cs @@ -1,27 +1,19 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class MealItemToPeriod { - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int Id { get; set; } - [Table("MealItemsToPeriods")] - public class MealItemToPeriod - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } + public int MealPeriodId { get; set; } - [Required] - public int MealPeriodId { get; set; } + public int MealItemId { get; set; } - [Required] - public int MealItemId { get; set; } + public DateTime Date { get; set; } - [Required, Column(TypeName = "Date")] - public DateTime Date { get; set; } + public virtual MealItem MealItem { get; set; } - [ForeignKey("MealPeriodId")] - public virtual MealPeriod MealPeriod { get; set; } - [ForeignKey("MealItemId")] - public virtual MealItem MealItem { get; set; } - } + public virtual MealPeriod MealPeriod { get; set; } } diff --git a/src/Dsp.Data/Entities/MealItemVote.cs b/src/Dsp.Data/Entities/MealItemVote.cs index 467db698..f0af8790 100644 --- a/src/Dsp.Data/Entities/MealItemVote.cs +++ b/src/Dsp.Data/Entities/MealItemVote.cs @@ -1,22 +1,19 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class MealItemVote { - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int Id { get; set; } - public class MealItemVote - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } + public int UserId { get; set; } - public int UserId { get; set; } + public int MealItemId { get; set; } - public int MealItemId { get; set; } + public bool IsUpvote { get; set; } - public bool IsUpvote { get; set; } + public virtual MealItem MealItem { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - [ForeignKey("MealItemId")] - public virtual MealItem MealItem { get; set; } - } + public virtual Member User { get; set; } } diff --git a/src/Dsp.Data/Entities/MealPeriod.cs b/src/Dsp.Data/Entities/MealPeriod.cs index a0e89dac..7cb0eb67 100644 --- a/src/Dsp.Data/Entities/MealPeriod.cs +++ b/src/Dsp.Data/Entities/MealPeriod.cs @@ -1,23 +1,17 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; - public class MealPeriod - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } +public partial class MealPeriod +{ + public int Id { get; set; } - [Required, StringLength(100)] - public string Name { get; set; } + public string Name { get; set; } - public DateTime StartTime { get; set; } + public DateTime StartTime { get; set; } - public DateTime EndTime { get; set; } + public DateTime EndTime { get; set; } - [InverseProperty("MealPeriod")] - public virtual ICollection MealItems { get; set; } - } + public virtual ICollection Items { get; set; } = new List(); } diff --git a/src/Dsp.Data/Entities/MealPlate.cs b/src/Dsp.Data/Entities/MealPlate.cs index 4fea4abf..d0694ac7 100644 --- a/src/Dsp.Data/Entities/MealPlate.cs +++ b/src/Dsp.Data/Entities/MealPlate.cs @@ -1,24 +1,19 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; - public class MealPlate - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } +public partial class MealPlate +{ + public int Id { get; set; } - public int UserId { get; set; } + public int UserId { get; set; } - public DateTime PlateDateTime { get; set; } + public DateTime PlateDateTime { get; set; } - public DateTime SignedUpOn { get; set; } + public DateTime SignedUpOn { get; set; } - [StringLength(25)] - public string Type { get; set; } + public string Type { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } + public virtual Member User { get; set; } } diff --git a/src/Dsp.Data/Entities/Member.cs b/src/Dsp.Data/Entities/Member.cs index 5ced08a9..25778dce 100644 --- a/src/Dsp.Data/Entities/Member.cs +++ b/src/Dsp.Data/Entities/Member.cs @@ -1,197 +1,227 @@ -namespace Dsp.Data.Entities +using Microsoft.AspNetCore.Identity; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Dsp.Data.Entities; + +public partial class Member { - using Data; - using Microsoft.AspNet.Identity; - using Microsoft.AspNet.Identity.EntityFramework; - using System; - using System.Collections.Generic; - using System.ComponentModel; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - using System.Linq; - using System.Security.Claims; - using System.Threading.Tasks; - - public class Member : IdentityUser + public virtual int Id { get; set; } = default!; + + [ProtectedPersonalData] + public virtual string? Email { get; set; } + + [ProtectedPersonalData] + public string FirstName { get; set; } + + [ProtectedPersonalData] + public string LastName { get; set; } + + public string AvatarPath { get; set; } + + [Obsolete("Status is now inferred from various info--see entity methods.")] + public int StatusId { get; set; } + + public int? PledgeClassId { get; set; } + + public int? ExpectedGraduationId { get; set; } + + public bool IsReleased { get; set; } + + public DateTime? ReleasedOn { get; set; } + + public int? BigBroId { get; set; } + + public string DietaryInstructions { get; set; } + + public DateTime? CreatedOn { get; set; } + + public DateTime? LastUpdatedOn { get; set; } + + public virtual ICollection
Addresses { get; set; } = new List
(); + + public virtual Member BigBro { get; set; } + + public virtual ICollection ClassesTaken { get; set; } = new List(); + + public virtual Semester ExpectedGraduation { get; set; } + + public virtual ICollection IncidentReports { get; set; } = new List(); + + public virtual ICollection LittleBros { get; set; } = new List(); + + public virtual ICollection LaundrySignups { get; set; } = new List(); + + public virtual ICollection Roles { get; set; } = new List(); + + public virtual ICollection Majors { get; set; } = new List(); + + public virtual ICollection MealItemVotes { get; set; } = new List(); + + public virtual ICollection MealPlates { get; set; } = new List(); + + public virtual PledgeClass PledgeClass { get; set; } + + public virtual ICollection Rooms { get; set; } = new List(); + + public virtual ICollection ServiceEventAmendments { get; set; } = new List(); + + public virtual ICollection ServiceHourAmendments { get; set; } = new List(); + + public virtual ICollection ServiceEvents { get; set; } = new List(); + + public virtual ICollection ServiceHours { get; set; } = new List(); + + public virtual ICollection SoberSignups { get; set; } = new List(); + + public virtual ICollection WorkOrders { get; set; } = new List(); + + public virtual User UserInfo { get; set; } + + public RoomToMember GetMostRecentRoomAssignment() { - [Required, StringLength(100), Display(Name = "First Name")] - public string FirstName { get; set; } - - [Required, StringLength(50), Display(Name = "Last Name")] - public string LastName { get; set; } - - [Range(0, 999999999, ErrorMessage = "Pin number is too long."), DataType(DataType.Text)] - public int? Pin { get; set; } - - [Required, Display(Name = "Member Status")] - public int StatusId { get; set; } - - [Display(Name = "Pledge Class")] - public int? PledgeClassId { get; set; } - - [Display(Name = "Graduation")] - public int? ExpectedGraduationId { get; set; } - - [Display(Name = "Big Brother")] - public int? BigBroId { get; set; } - - [Display(Name = "Shirt Size"), DefaultValue("M")] - public string ShirtSize { get; set; } - - public DateTime? CreatedOn { get; set; } - - public DateTime? LastUpdatedOn { get; set; } - - public string AvatarPath { get; set; } - - [StringLength(50), Display(Name = "Dietary Instructions")] - public string DietaryInstructions { get; set; } - - [ForeignKey("StatusId")] - public virtual MemberStatus MemberStatus { get; set; } - [ForeignKey("PledgeClassId")] - public virtual PledgeClass PledgeClass { get; set; } - [ForeignKey("ExpectedGraduationId")] - public virtual Semester GraduationSemester { get; set; } - [ForeignKey("BigBroId")] - public virtual Member BigBrother { get; set; } - [InverseProperty("Member")] - public virtual ICollection
Addresses { get; set; } - [InverseProperty("Member")] - public virtual ICollection ChoreGroups { get; set; } - [InverseProperty("Member")] - public virtual ICollection ChoreSignOffs { get; set; } - [InverseProperty("Enforcer")] - public virtual ICollection ChoresEnforced { get; set; } - [InverseProperty("Member")] - public virtual ICollection ClassesTaken { get; set; } - [InverseProperty("Member")] - public virtual ICollection IncidentReports { get; set; } - [InverseProperty("Member")] - public virtual ICollection LaundrySignups { get; set; } - [InverseProperty("Member")] - public virtual ICollection PositionsHeld { get; set; } - [InverseProperty("Member")] - public virtual ICollection MajorsToMember { get; set; } - [InverseProperty("Member")] - public virtual ICollection MealItemVotes { get; set; } - [InverseProperty("Member")] - public virtual ICollection MealPlates { get; set; } - [InverseProperty("BigBrother")] - public virtual ICollection LittleBrothers { get; set; } - [InverseProperty("Member")] - public virtual ICollection PhoneNumbers { get; set; } - [InverseProperty("Member")] - public virtual ICollection Rooms { get; set; } - [InverseProperty("Member")] - public virtual ICollection ServiceHourAmendments { get; set; } - [InverseProperty("Member")] - public virtual ICollection ServiceEventAmendments { get; set; } - [InverseProperty("Member")] - public virtual ICollection ServiceHours { get; set; } - [InverseProperty("Submitter")] - public virtual ICollection SubmittedEvents { get; set; } - [InverseProperty("Member")] - public virtual ICollection SoberSignups { get; set; } - [InverseProperty("Member")] - public virtual ICollection WorkOrders { get; set; } - [InverseProperty("Member")] - public virtual ICollection WorkOrderComments { get; set; } - [InverseProperty("Member")] - public virtual ICollection WorkOrderPriorityChanges { get; set; } - [InverseProperty("Member")] - public virtual ICollection WorkOrderStatusChanges { get; set; } - - public RoomToMember GetMostRecentRoomAssignment() - { - return Rooms.OrderByDescending(r => r.MovedOut).FirstOrDefault(); - } + return Rooms.OrderByDescending(r => r.MovedOut).FirstOrDefault(); + } - public string RoomString() - { - if (!Rooms.Any()) return "No rooms found"; - - var mostRecentAssignment = GetMostRecentRoomAssignment(); - if (mostRecentAssignment.MovedOut >= DateTime.UtcNow) - { - return mostRecentAssignment.Room.Name; - } - return mostRecentAssignment.Room.Name + " (OOD)"; - } + public IEnumerable<(DateTime, string)> GetMembershipTimeline() + { + /* + * Membership timeline example 1 - public bool HasLivingAssignment(int sid) - { - return Rooms.Any(r => r.Room.SemesterId == sid); - } + Semester i Semester i+1 Semester i+2 Semester i+3 Semester i+4 Semester j + |----------|------------|------------|------------|------------|...|----------|...| + null Pledging Active Neophyte Active Graduation Alumnus + ^ ^ ^ + joined ^active neophyted graduated - public bool IsLivingInHouse() - { - var mostRecentAssignment = GetMostRecentRoomAssignment(); - if (mostRecentAssignment == null) return false; - int value; - return int.TryParse(mostRecentAssignment.Room.Name, out value); - } + * Membership timeline example 2 + + Semester i Semester i+1 Semester i+2 Semester i+3 Semester i+4 + |----------|------------|------------|------------|------------|...| + null Pledging Active Neophyte Released + ^ ^ ^ + joined neophyted released + */ - public bool WasLivingInHouse(DateTime dateTime) + var membershipTimeline = new List<(DateTime, string)> { - var livingSituationOnGivenDate = Rooms - .SingleOrDefault(r => r.MovedIn <= dateTime && dateTime <= r.MovedOut); - if (livingSituationOnGivenDate == null) return false; + (PledgeClass.Semester.DateStart, "New"), + (PledgeClass.Semester.DateEnd, "Active"), + (ExpectedGraduation.DateEnd, "Alumnus"), + }; - int value; - return int.TryParse(livingSituationOnGivenDate.Room.Name, out value); - } + // TODO: add neophyte semesters once supported. - public bool WasLivingInHouse(int sid) + if (IsReleased) { - var assignmentsDuringSemester = Rooms.Where(r => r.Room.SemesterId == sid).ToList(); - if (!assignmentsDuringSemester.Any()) return false; + DateTime releasedOn; + if (ReleasedOn == null) + if (LastUpdatedOn == null) // Best estimate we can make + releasedOn = PledgeClass.Semester.DateEnd; // Assume released at end of pledge semester + else + releasedOn = LastUpdatedOn.Value; // Assume released the last time they were updated + else + releasedOn = ReleasedOn.Value; + + membershipTimeline.RemoveAt(membershipTimeline.Count - 1); // Assume released before graduating + membershipTimeline.Add((releasedOn, "Released")); + } - foreach (var a in assignmentsDuringSemester) - { - int value; - if (int.TryParse(a.Room.Name, out value)) - return true; - } + return membershipTimeline; + } - return false; - } + public string GetStatus(DateTime? asOf = null) + { + if (asOf == null) + asOf = DateTime.UtcNow; + + var membershipTimeline = GetMembershipTimeline(); + var status = membershipTimeline + .TakeWhile(x => asOf.Value > x.Item1) + .Last() + .Item2; + return status; + } + + public string RoomString() + { + if (!Rooms.Any()) return "No rooms found"; - public async Task GenerateUserIdentityAsync(UserManager manager) + var mostRecentAssignment = GetMostRecentRoomAssignment(); + if (mostRecentAssignment.MovedOut >= DateTime.UtcNow) { - // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType - var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); - return userIdentity; + return mostRecentAssignment.Room.Name; } + return mostRecentAssignment.Room.Name + " (OOD)"; + } - public string LivingAssignmentForSemester(int sid) - { - if (!HasLivingAssignment(sid)) - { - return "Unknown"; - } + public bool HasLivingAssignment(int sid) + { + return Rooms.Any(r => r.Room.SemesterId == sid); + } - var assignments = Rooms.Where(r => r.Room.SemesterId == sid).OrderByDescending(r => r.MovedOut); + public bool IsLivingInHouse() + { + var mostRecentAssignment = GetMostRecentRoomAssignment(); + if (mostRecentAssignment == null) return false; - return assignments.First().Room.Name; - } + int value; + return int.TryParse(mostRecentAssignment.Room.Name, out value); + } - public string GetAvatarString() - { - var filePath = "";//AccountController.ImageUpload.GetUploadPath(AvatarPath ?? string.Empty); - var fileExists = System.IO.File.Exists(filePath); - return fileExists ? AvatarPath : "NoAvatar.jpg"; - } + public bool WasLivingInHouse(DateTime dateTime) + { + var livingSituationOnGivenDate = Rooms + .SingleOrDefault(r => r.MovedIn <= dateTime && dateTime <= r.MovedOut); + if (livingSituationOnGivenDate == null) return false; + + int value; + return int.TryParse(livingSituationOnGivenDate.Room.Name, out value); + } + + public bool WasLivingInHouse(int sid) + { + var assignmentsDuringSemester = Rooms.Where(r => r.Room.SemesterId == sid).ToList(); + if (!assignmentsDuringSemester.Any()) return false; - public string ToShortLastNameString() + foreach (var a in assignmentsDuringSemester) { - return FirstName + " " + LastName.Substring(0, 1) + "."; + int value; + if (int.TryParse(a.Room.Name, out value)) + return true; } - public override string ToString() + return false; + } + + public string LivingAssignmentForSemester(int sid) + { + if (!HasLivingAssignment(sid)) { - return FirstName + " " + LastName; + return "Unknown"; } + + var assignments = Rooms.Where(r => r.Room.SemesterId == sid).OrderByDescending(r => r.MovedOut); + + return assignments.First().Room.Name; + } + + public string GetAvatarString() + { + var filePath = "";//AccountController.ImageUpload.GetUploadPath(AvatarPath ?? string.Empty); + var fileExists = System.IO.File.Exists(filePath); + return fileExists ? AvatarPath : "NoAvatar.jpg"; + } + + public string ToShortLastNameString() + { + return FirstName + " " + LastName.Substring(0, 1) + "."; + } + + public override string ToString() + { + return FirstName + " " + LastName; } -} \ No newline at end of file +} diff --git a/src/Dsp.Data/Entities/MemberPosition.cs b/src/Dsp.Data/Entities/MemberPosition.cs new file mode 100644 index 00000000..2f4ac084 --- /dev/null +++ b/src/Dsp.Data/Entities/MemberPosition.cs @@ -0,0 +1,20 @@ +using System; + +namespace Dsp.Data.Entities; + +public partial class MemberPosition +{ + public virtual int UserId { get; set; } = default!; + + public virtual int RoleId { get; set; } = default!; + + public int SemesterId { get; set; } + + public DateTime AppointedOn { get; set; } + + public virtual Position Role { get; set; } + + public virtual Semester Semester { get; set; } + + public virtual Member User { get; set; } +} diff --git a/src/Dsp.Data/Entities/MemberStatus.cs b/src/Dsp.Data/Entities/MemberStatus.cs deleted file mode 100644 index 23d4e920..00000000 --- a/src/Dsp.Data/Entities/MemberStatus.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - [Table("MemberStatuses")] - public class MemberStatus - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int StatusId { get; set; } - - [Required, StringLength(50), DataType(DataType.Text), Display(Name = "Name")] - public string StatusName { get; set; } - - [InverseProperty("MemberStatus")] - public virtual ICollection Members { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/PhoneNumber.cs b/src/Dsp.Data/Entities/PhoneNumber.cs deleted file mode 100644 index dc2e7d94..00000000 --- a/src/Dsp.Data/Entities/PhoneNumber.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class PhoneNumber - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int PhoneNumberId { get; set; } - - public int UserId { get; set; } - - [Column("PhoneNumber"), DataType(DataType.PhoneNumber)] - [RegularExpression(@"^(([0-9]{3}[-]([0-9]{3})[-][0-9]{4})|([+]?[0-9]{11,15}))$", - ErrorMessage = "Phone number format was invalid.")] - public string Number { get; set; } - - [StringLength(100)] - public string Type { get; set; } - - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/PledgeClass.cs b/src/Dsp.Data/Entities/PledgeClass.cs index c7f5362e..99a6a130 100644 --- a/src/Dsp.Data/Entities/PledgeClass.cs +++ b/src/Dsp.Data/Entities/PledgeClass.cs @@ -1,38 +1,31 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - using System.Linq; - - public class PledgeClass - { - public int PledgeClassId { get; set; } - - public int SemesterId { get; set; } - - [DataType(DataType.Date), Display(Name = "Pinning Date")] - public DateTime? PinningDate { get; set; } - - [DataType(DataType.Date), Display(Name = "Initiation Date")] - public DateTime? InitiationDate { get; set; } - - [Required, StringLength(50), Display(Name = "Name")] - public string PledgeClassName { get; set; } - - [InverseProperty("PledgeClass")] - public virtual ICollection Members { get; set; } - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - - public string GetLetters() - { - var splits = PledgeClassName.Split(' '); - var isTrueAlpha = splits.Contains("Alpha") && (splits.Contains("1") || splits.Contains("2") || splits.Contains("3")); - if (isTrueAlpha) return "Α"; - - return string.Join("", splits.Select(m => "&" + m + ";")); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Dsp.Data.Entities; + +public partial class PledgeClass +{ + public int PledgeClassId { get; set; } + + public int SemesterId { get; set; } + + public DateTime? PinningDate { get; set; } + + public DateTime? InitiationDate { get; set; } + + public string PledgeClassName { get; set; } + + public virtual ICollection Users { get; set; } = new List(); + + public virtual Semester Semester { get; set; } + + public string GetLetters() + { + var splits = PledgeClassName.Split(' '); + var isTrueAlpha = splits.Contains("Alpha") && (splits.Contains("1") || splits.Contains("2") || splits.Contains("3")); + if (isTrueAlpha) return "Α"; + + return string.Join("", splits.Select(m => "&" + m + ";")); + } +} diff --git a/src/Dsp.Data/Entities/Position.cs b/src/Dsp.Data/Entities/Position.cs index 081d11f2..5d028530 100644 --- a/src/Dsp.Data/Entities/Position.cs +++ b/src/Dsp.Data/Entities/Position.cs @@ -1,54 +1,44 @@ -namespace Dsp.Data.Entities +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class Position { - using Microsoft.AspNet.Identity.EntityFramework; - using System.Collections.Generic; - using System.ComponentModel; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public virtual int Id { get; set; } = default!; + + public virtual string? Name { get; set; } - public class Position : IdentityRole - { - [StringLength(100)] - public string Description { get; set; } + public virtual string? NormalizedName { get; set; } - [StringLength(50)] - public string Inquiries { get; set; } + public virtual string? ConcurrencyStamp { get; set; } - [Required, DefaultValue(PositionType.Active)] - public PositionType Type { get; set; } + public string Description { get; set; } - [Required, DefaultValue(false)] - public bool IsExecutive { get; set; } + public PositionType Type { get; set; } - [Required, DefaultValue(false)] - public bool IsElected { get; set; } + public bool IsExecutive { get; set; } - [Required, DefaultValue(1)] - public int DisplayOrder { get; set; } + public bool IsElected { get; set; } - [Required, DefaultValue(false)] - public bool IsDisabled { get; set; } + public int DisplayOrder { get; set; } - [Required, DefaultValue(true)] - public bool IsPublic { get; set; } + public bool IsDisabled { get; set; } - [DefaultValue(true)] - public bool CanBeRemoved { get; set; } + public bool IsPublic { get; set; } - [InverseProperty("Position")] - public virtual ICollection Leaders { get; set; } + public bool CanBeRemoved { get; set; } - public Position() { } - public Position(string name) { Name = name; } + public string Inquiries { get; set; } - public enum PositionType - { - NonMember, - Active, - New, - Alumni, - Affiliate, - Advisor - } - } + public virtual ICollection Users { get; set; } = new List(); } + +public enum PositionType : int +{ + NonMember, + Active, + New, + Alumni, + Affiliate, + Advisor +} \ No newline at end of file diff --git a/src/Dsp.Data/Entities/Room.cs b/src/Dsp.Data/Entities/Room.cs index 43654fa3..094bf8f0 100644 --- a/src/Dsp.Data/Entities/Room.cs +++ b/src/Dsp.Data/Entities/Room.cs @@ -1,28 +1,19 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class Room { - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int RoomId { get; set; } - public class Room - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int RoomId { get; set; } + public string Name { get; set; } - [Required] - [Column(Order = 0), Index("IX_RoomSemesterName", 0, IsUnique = true)] - public int SemesterId { get; set; } + public int MaxCapacity { get; set; } - [Required, StringLength(100)] - [Column(Order = 1), Index("IX_RoomSemesterName", 1, IsUnique = true)] - public string Name { get; set; } + public int SemesterId { get; set; } - [Required, Range(0, 10), Display(Name = "Max Capacity")] - public int MaxCapacity { get; set; } + public virtual ICollection Members { get; set; } = new List(); - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - [InverseProperty("Room")] - public virtual ICollection Members { get; set; } - } -} \ No newline at end of file + public virtual Semester Semester { get; set; } +} diff --git a/src/Dsp.Data/Entities/RoomToMember.cs b/src/Dsp.Data/Entities/RoomToMember.cs index 84894ad1..46117c4b 100644 --- a/src/Dsp.Data/Entities/RoomToMember.cs +++ b/src/Dsp.Data/Entities/RoomToMember.cs @@ -1,34 +1,28 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class RoomToMember { - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int RoomToMemberId { get; set; } - public class RoomToMember - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int RoomToMemberId { get; set; } + public int RoomId { get; set; } - [Required] - public int RoomId { get; set; } + public int UserId { get; set; } - [Required] - public int UserId { get; set; } + public DateTime MovedIn { get; set; } - public DateTime MovedIn { get; set; } + public DateTime MovedOut { get; set; } - public DateTime MovedOut { get; set; } + public virtual Room Room { get; set; } - [ForeignKey("RoomId")] - public virtual Room Room { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } + public virtual Member User { get; set; } - public string GetSemester() - { - if (MovedIn.Month < 6) return "Spring " + MovedIn.Year; - else if (MovedIn.Month < 8) return "Summer " + MovedIn.Year; - else return "Fall " + MovedIn.Year; - } + public string GetSemester() + { + if (MovedIn.Month < 6) return "Spring " + MovedIn.Year; + else if (MovedIn.Month < 8) return "Summer " + MovedIn.Year; + else return "Fall " + MovedIn.Year; } -} \ No newline at end of file +} diff --git a/src/Dsp.Data/Entities/ScholarshipAnswer.cs b/src/Dsp.Data/Entities/ScholarshipAnswer.cs index bdccc41c..b65a0c1b 100644 --- a/src/Dsp.Data/Entities/ScholarshipAnswer.cs +++ b/src/Dsp.Data/Entities/ScholarshipAnswer.cs @@ -1,24 +1,19 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ScholarshipAnswer { - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int ScholarshipAnswerId { get; set; } + + public Guid ScholarshipSubmissionId { get; set; } + + public int ScholarshipQuestionId { get; set; } + + public string AnswerText { get; set; } - public class ScholarshipAnswer - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ScholarshipAnswerId { get; set; } - - public Guid ScholarshipSubmissionId { get; set; } - - public int ScholarshipQuestionId { get; set; } - - [StringLength(3000), DataType(DataType.MultilineText), Display(Name = "Answer")] - public string AnswerText { get; set; } + public virtual ScholarshipQuestion Question { get; set; } - [ForeignKey("ScholarshipSubmissionId")] - public virtual ScholarshipSubmission Submission { get; set; } - [ForeignKey("ScholarshipQuestionId")] - public virtual ScholarshipQuestion Question { get; set; } - } -} \ No newline at end of file + public virtual ScholarshipSubmission Submission { get; set; } +} diff --git a/src/Dsp.Data/Entities/ScholarshipApp.cs b/src/Dsp.Data/Entities/ScholarshipApp.cs index 176b7d93..b7cd4002 100644 --- a/src/Dsp.Data/Entities/ScholarshipApp.cs +++ b/src/Dsp.Data/Entities/ScholarshipApp.cs @@ -1,37 +1,27 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ScholarshipApp { - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ScholarshipApp - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ScholarshipAppId { get; set; } - - public int ScholarshipTypeId { get; set; } - - [Required, StringLength(100), Display(Name = "Title")] - public string Title { get; set; } - - [Required, StringLength(3000), DataType(DataType.MultilineText)] - [Display(Name = "Description")] - public string AdditionalText { get; set; } - - [Required, DataType(DataType.Date), Display(Name = "Open Date")] - public DateTime OpensOn { get; set; } - - [Required, DataType(DataType.Date), Display(Name = "Close Date")] - public DateTime ClosesOn { get; set; } - - public bool IsPublic { get; set; } - - [ForeignKey("ScholarshipTypeId")] - public virtual ScholarshipType Type { get; set; } - [InverseProperty("Application")] - public virtual ICollection Submissions { get; set; } - [InverseProperty("Application")] - public virtual ICollection Questions { get; set; } - } -} \ No newline at end of file + public int ScholarshipAppId { get; set; } + + public int ScholarshipTypeId { get; set; } + + public string Title { get; set; } + + public string AdditionalText { get; set; } + + public DateTime OpensOn { get; set; } + + public DateTime ClosesOn { get; set; } + + public bool IsPublic { get; set; } + + public virtual ICollection Questions { get; set; } = new List(); + + public virtual ICollection Submissions { get; set; } = new List(); + + public virtual ScholarshipType Type { get; set; } +} diff --git a/src/Dsp.Data/Entities/ScholarshipAppQuestion.cs b/src/Dsp.Data/Entities/ScholarshipAppQuestion.cs index 5f91478e..a16e79dd 100644 --- a/src/Dsp.Data/Entities/ScholarshipAppQuestion.cs +++ b/src/Dsp.Data/Entities/ScholarshipAppQuestion.cs @@ -1,26 +1,21 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ScholarshipAppQuestion { - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ScholarshipAppQuestion - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ScholarshipAppQuestionId { get; set; } - - public int ScholarshipAppId { get; set; } - - public int ScholarshipQuestionId { get; set; } - - [Required] - public int FormOrder { get; set; } - - [Required] - public bool IsOptional { get; set; } - - [ForeignKey("ScholarshipAppId")] - public virtual ScholarshipApp Application { get; set; } - [ForeignKey("ScholarshipQuestionId")] - public virtual ScholarshipQuestion Question { get; set; } - } -} \ No newline at end of file + public int ScholarshipAppQuestionId { get; set; } + + public int ScholarshipAppId { get; set; } + + public int ScholarshipQuestionId { get; set; } + + public int FormOrder { get; set; } + + public bool IsOptional { get; set; } + + public virtual ScholarshipApp Application { get; set; } + + public virtual ScholarshipQuestion Question { get; set; } +} diff --git a/src/Dsp.Data/Entities/ScholarshipQuestion.cs b/src/Dsp.Data/Entities/ScholarshipQuestion.cs index bd119984..d54b18ad 100644 --- a/src/Dsp.Data/Entities/ScholarshipQuestion.cs +++ b/src/Dsp.Data/Entities/ScholarshipQuestion.cs @@ -1,26 +1,19 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ScholarshipQuestion { - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int ScholarshipQuestionId { get; set; } - public class ScholarshipQuestion - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ScholarshipQuestionId { get; set; } + public string Prompt { get; set; } - [Required, StringLength(500), DataType(DataType.MultilineText)] - public string Prompt { get; set; } + public int AnswerMinimumLength { get; set; } - [Required, Range(1, 3000), Display(Name = "Minimum Length (characters)")] - public int AnswerMinimumLength { get; set; } + public int AnswerMaximumLength { get; set; } - [Required, Range(1, 3000), Display(Name = "Maximum Length (characters)")] - public int AnswerMaximumLength { get; set; } + public virtual ICollection Answers { get; set; } = new List(); - [InverseProperty("Question")] - public virtual ICollection AppQuestions { get; set; } - [InverseProperty("Question")] - public virtual ICollection Answers { get; set; } - } -} \ No newline at end of file + public virtual ICollection Questions { get; set; } = new List(); +} diff --git a/src/Dsp.Data/Entities/ScholarshipSubmission.cs b/src/Dsp.Data/Entities/ScholarshipSubmission.cs index bdfc96f3..63345120 100644 --- a/src/Dsp.Data/Entities/ScholarshipSubmission.cs +++ b/src/Dsp.Data/Entities/ScholarshipSubmission.cs @@ -1,75 +1,53 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ScholarshipSubmission { - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public Guid ScholarshipSubmissionId { get; set; } - public class ScholarshipSubmission - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public Guid ScholarshipSubmissionId { get; set; } + public int ScholarshipAppId { get; set; } - public int ScholarshipAppId { get; set; } + public bool IsWinner { get; set; } - public bool IsWinner { get; set; } + public DateTime SubmittedOn { get; set; } - public DateTime SubmittedOn { get; set; } + public string FirstName { get; set; } - [Required, StringLength(50), Display(Name = "First Name")] - public string FirstName { get; set; } + public string LastName { get; set; } - [Required, StringLength(50), Display(Name = "Last Name")] - public string LastName { get; set; } + public string StudentNumber { get; set; } - [Required, Display(Name = "Student Number"), StringLength(15)] - public string StudentNumber { get; set; } + public string PhoneNumber { get; set; } - [Required, DataType(DataType.PhoneNumber), Display(Name = "Phone Number"), StringLength(15)] - public string PhoneNumber { get; set; } + public string Email { get; set; } - [Required(ErrorMessage = "An email address is required"), StringLength(50), Display(Name = "Email")] - [EmailAddress(ErrorMessage = "Invalid Email Address")] - public string Email { get; set; } + public string Address1 { get; set; } - [Required, StringLength(100),Display(Name = "Address 1")] - public string Address1 { get; set; } + public string Address2 { get; set; } - [StringLength(100)] - public string Address2 { get; set; } + public string City { get; set; } - [Required, StringLength(50), Display(Name = "City")] - public string City { get; set; } + public string State { get; set; } - [StringLength(2), Display(Name = "State")] - public string State { get; set; } + public int PostalCode { get; set; } - [Display(Name = "Postal Code")] - public int PostalCode { get; set; } + public string Country { get; set; } - [Required, StringLength(50), Display(Name = "Country")] - public string Country { get; set; } + public string HighSchool { get; set; } - [Required, StringLength(100), Display(Name = "High School")] - public string HighSchool { get; set; } + public int ActSatScore { get; set; } - [Required, Range(0, 2400), Display(Name = "ACT or SAT")] - public int ActSatScore { get; set; } + public double Gpa { get; set; } - [Required, Range(0, 5), Display(Name = "GPA")] - public double Gpa { get; set; } + public string HearAboutScholarship { get; set; } - [Required, StringLength(100), Display(Name = "How Did You Heard About Us")] - public string HearAboutScholarship { get; set; } + public DateTime? CommitteeRespondedOn { get; set; } - [Display(Name = "Committee Response"), DataType(DataType.MultilineText)] - public string CommitteeResponse { get; set; } + public string CommitteeResponse { get; set; } - public DateTime? CommitteeRespondedOn { get; set; } + public virtual ICollection Answers { get; set; } = new List(); - [ForeignKey("ScholarshipAppId")] - public virtual ScholarshipApp Application { get; set; } - [InverseProperty("Submission")] - public virtual ICollection Answers { get; set; } - } -} \ No newline at end of file + public virtual ScholarshipApp Application { get; set; } +} diff --git a/src/Dsp.Data/Entities/ScholarshipType.cs b/src/Dsp.Data/Entities/ScholarshipType.cs index fffbf911..95d78b23 100644 --- a/src/Dsp.Data/Entities/ScholarshipType.cs +++ b/src/Dsp.Data/Entities/ScholarshipType.cs @@ -1,18 +1,13 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ScholarshipType { - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int ScholarshipTypeId { get; set; } - public class ScholarshipType - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ScholarshipTypeId { get; set; } + public string Name { get; set; } - [Required, StringLength(100)] - public string Name { get; set; } - - [InverseProperty("Type")] - public virtual ICollection Applications { get; set; } - } -} \ No newline at end of file + public virtual ICollection Applications { get; set; } = new List(); +} diff --git a/src/Dsp.Data/Entities/Semester.cs b/src/Dsp.Data/Entities/Semester.cs index 9cb5ed16..a17a9723 100644 --- a/src/Dsp.Data/Entities/Semester.cs +++ b/src/Dsp.Data/Entities/Semester.cs @@ -1,56 +1,50 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.Collections.Generic; - using System.ComponentModel; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class Semester - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity), Column("SemesterId")] - public int Id { get; set; } - - [Required, DataType(DataType.Date), Display(Name = "Start Date")] - public DateTime DateStart { get; set; } - - [Required, DataType(DataType.Date), Display(Name = "End Date")] - public DateTime DateEnd { get; set; } - - [Required, DataType(DataType.Date), Display(Name = "Transition Date")] - public DateTime TransitionDate { get; set; } - - [Required, DefaultValue(10), Display(Name = "Minimum Service Hours")] - public int MinimumServiceHours { get; set; } - - [Required, DefaultValue(4), Display(Name = "Minimum Service Events")] - public int MinimumServiceEvents { get; set; } - - [Display(Name = "Recruitment Book URL")] - public string RecruitmentBookUrl { get; set; } - - [InverseProperty("Semester")] - public virtual ICollection ClassesTaken { get; set; } - [InverseProperty("Semester")] - public virtual ICollection Leaders { get; set; } - [InverseProperty("GraduationSemester")] - public virtual ICollection GraduatingMembers { get; set; } - [InverseProperty("Semester")] - public virtual ICollection PledgeClasses { get; set; } - [InverseProperty("Semester")] - public virtual ICollection Rooms { get; set; } - [InverseProperty("Semester")] - public virtual ICollection ServiceEvents { get; set; } - [InverseProperty("Semester")] - public virtual ICollection ServiceHourAmendments { get; set; } - [InverseProperty("Semester")] - public virtual ICollection ServiceEventAmendments { get; set; } - [InverseProperty("Semester")] - public virtual ICollection ChoreGroups { get; set; } - - public override string ToString() - { - return (DateStart.Month < 6 ? "Spring " : "Fall ") + DateStart.Year; - } - } -} +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class Semester +{ + public int Id { get; set; } + + public DateTime DateStart { get; set; } + + public DateTime DateEnd { get; set; } + + public DateTime TransitionDate { get; set; } + + public int MinimumServiceHours { get; set; } + + public int MinimumServiceEvents { get; set; } + + public string RecruitmentBookUrl { get; set; } + + public virtual ICollection ClassesTaken { get; set; } = new List(); + + public virtual ICollection Leaders { get; set; } = new List(); + + public virtual ICollection GraduatingMembers { get; set; } = new List(); + + public virtual ICollection PledgeClasses { get; set; } = new List(); + + public virtual ICollection Rooms { get; set; } = new List(); + + public virtual ICollection ServiceEventAmendments { get; set; } = new List(); + + public virtual ICollection ServiceHourAmendments { get; set; } = new List(); + + public virtual ICollection ServiceEvents { get; set; } = new List(); + + public virtual string Name + { + get + { + return ToString(); + } + } + + public override string ToString() + { + return (DateStart.Month < 6 ? "Spring " : "Fall ") + DateStart.Year; + } +} diff --git a/src/Dsp.Data/Entities/ServiceEvent.cs b/src/Dsp.Data/Entities/ServiceEvent.cs index 900f01b5..891353f9 100644 --- a/src/Dsp.Data/Entities/ServiceEvent.cs +++ b/src/Dsp.Data/Entities/ServiceEvent.cs @@ -1,41 +1,29 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ServiceEvent { - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int EventId { get; set; } + + public int? SubmitterId { get; set; } - public class ServiceEvent - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int EventId { get; set; } + public bool IsApproved { get; set; } - public int? SubmitterId { get; set; } + public DateTime DateTimeOccurred { get; set; } - public int SemesterId { get; set; } + public string EventName { get; set; } - [Required, Display(Name = "Approved")] - public bool IsApproved { get; set; } + public double DurationHours { get; set; } - [Required, Display(Name = "Date/Time of Event")] - [DisplayFormat(DataFormatString = "{0:MM-dd-yyyy hh:mm tt}", ApplyFormatInEditMode = true)] - public DateTime DateTimeOccurred { get; set; } + public DateTime? CreatedOn { get; set; } - [Required, DataType(DataType.Text), Display(Name = "Event Name")] - [StringLength(50, MinimumLength = 1, ErrorMessage = "Length of Event name must be 1-50 characters.")] - public string EventName { get; set; } + public int SemesterId { get; set; } - [Required, DataType(DataType.Duration), Display(Name = "Event Duration (Hrs)")] - [Range(0.5, 1000, ErrorMessage = "Please enter a number from 0.5-1000")] - public double DurationHours { get; set; } + public virtual Semester Semester { get; set; } - public DateTime? CreatedOn { get; set; } + public virtual ICollection ServiceHours { get; set; } = new List(); - [ForeignKey("SubmitterId")] - public virtual Member Submitter { get; set; } - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - [InverseProperty("Event")] - public virtual ICollection ServiceHours { get; set; } - } + public virtual Member Submitter { get; set; } } diff --git a/src/Dsp.Data/Entities/ServiceEventAmendment.cs b/src/Dsp.Data/Entities/ServiceEventAmendment.cs index 87a09124..439c666d 100644 --- a/src/Dsp.Data/Entities/ServiceEventAmendment.cs +++ b/src/Dsp.Data/Entities/ServiceEventAmendment.cs @@ -1,30 +1,21 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ServiceEventAmendment { - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ServiceEventAmendment - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, Display(Name = "Member")] - public int UserId { get; set; } - - [Required, Display(Name = "Semester")] - public int SemesterId { get; set; } - - [Required, Range(-50,50)] - [Display(Name = "Number of Events")] - public int NumberEvents { get; set; } - - [Required, StringLength(100)] - [Display(Name = "Reason for Amendment")] - public string Reason { get; set; } - - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - } + public int Id { get; set; } + + public int UserId { get; set; } + + public int SemesterId { get; set; } + + public string Reason { get; set; } + + public int NumberEvents { get; set; } + + public virtual Semester Semester { get; set; } + + public virtual Member User { get; set; } } diff --git a/src/Dsp.Data/Entities/ServiceHour.cs b/src/Dsp.Data/Entities/ServiceHour.cs index e8278151..94cedaaa 100644 --- a/src/Dsp.Data/Entities/ServiceHour.cs +++ b/src/Dsp.Data/Entities/ServiceHour.cs @@ -1,24 +1,19 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ServiceHour { - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int UserId { get; set; } + + public int EventId { get; set; } - public class ServiceHour - { - [Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)] - public int UserId { get; set; } + public double DurationHours { get; set; } - [Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)] - public int EventId { get; set; } + public DateTime DateTimeSubmitted { get; set; } - public double DurationHours { get; set; } + public virtual ServiceEvent Event { get; set; } - public DateTime DateTimeSubmitted { get; set; } - - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - [ForeignKey("EventId")] - public virtual ServiceEvent Event { get; set; } - } + public virtual Member User { get; set; } } diff --git a/src/Dsp.Data/Entities/ServiceHourAmendment.cs b/src/Dsp.Data/Entities/ServiceHourAmendment.cs index 3721d9e2..b520d89e 100644 --- a/src/Dsp.Data/Entities/ServiceHourAmendment.cs +++ b/src/Dsp.Data/Entities/ServiceHourAmendment.cs @@ -1,30 +1,21 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class ServiceHourAmendment { - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class ServiceHourAmendment - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - - [Required, Display(Name = "Member")] - public int UserId { get; set; } - - [Required, Display(Name = "Semester")] - public int SemesterId { get; set; } - - [Required, Range(-50,50)] - [Display(Name = "Amount of Hours")] - public double AmountHours { get; set; } - - [Required, StringLength(100)] - [Display(Name = "Reason for Amendment")] - public string Reason { get; set; } - - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - [ForeignKey("SemesterId")] - public virtual Semester Semester { get; set; } - } + public int Id { get; set; } + + public int UserId { get; set; } + + public int SemesterId { get; set; } + + public double AmountHours { get; set; } + + public string Reason { get; set; } + + public virtual Semester Semester { get; set; } + + public virtual Member User { get; set; } } diff --git a/src/Dsp.Data/Entities/SoberSignup.cs b/src/Dsp.Data/Entities/SoberSignup.cs index 089171f8..74394960 100644 --- a/src/Dsp.Data/Entities/SoberSignup.cs +++ b/src/Dsp.Data/Entities/SoberSignup.cs @@ -1,32 +1,25 @@ -namespace Dsp.Data.Entities +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; + +public partial class SoberSignup { - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; + public int SignupId { get; set; } - public class SoberSignup - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int SignupId { get; set; } + public int? UserId { get; set; } - public int? UserId { get; set; } + public int SoberTypeId { get; set; } - [Display(Name = "Type")] - public int SoberTypeId { get; set; } + public string Description { get; set; } - [StringLength(100), Display(Name = "Description")] - public string Description { get; set; } + public DateTime DateOfShift { get; set; } - [Required, DataType(DataType.Date), Display(Name = "Date of Shift")] - public DateTime DateOfShift { get; set; } + public DateTime? DateTimeSignedUp { get; set; } - public DateTime? DateTimeSignedUp { get; set; } + public DateTime? CreatedOn { get; set; } - public DateTime? CreatedOn { get; set; } + public virtual SoberType SoberType { get; set; } - [ForeignKey("SoberTypeId")] - public virtual SoberType SoberType { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } + public virtual Member User { get; set; } } diff --git a/src/Dsp.Data/Entities/SoberType.cs b/src/Dsp.Data/Entities/SoberType.cs index eed29994..943f1cb1 100644 --- a/src/Dsp.Data/Entities/SoberType.cs +++ b/src/Dsp.Data/Entities/SoberType.cs @@ -1,21 +1,15 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; +using System; +using System.Collections.Generic; + +namespace Dsp.Data.Entities; - public class SoberType - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int SoberTypeId { get; set; } +public partial class SoberType +{ + public int SoberTypeId { get; set; } - [Required, StringLength(100)] - public string Name { get; set; } + public string Name { get; set; } - [StringLength(3000),DataType(DataType.MultilineText)] - public string Description { get; set; } + public string Description { get; set; } - [InverseProperty("SoberType")] - public virtual ICollection Signups { get; set; } - } + public virtual ICollection Signups { get; set; } = new List(); } diff --git a/src/Dsp.Data/Entities/User.cs b/src/Dsp.Data/Entities/User.cs new file mode 100644 index 00000000..442e5cba --- /dev/null +++ b/src/Dsp.Data/Entities/User.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Identity; +using System; + +namespace Dsp.Data.Entities; + +public partial class User : IdentityUser +{ + [PersonalData] + public string FirstName { get; set; } + + [PersonalData] + public string LastName { get; set; } + + public int? MemberId { get; set; } + + public DateTime? CreatedOn { get; set; } + + [PersonalData] + public string EmergencyContact { get; set; } + + [PersonalData] + public string EmergencyRelation { get; set; } + + [PersonalData] + public string EmergencyPhoneNumber { get; set; } + + public virtual Member MemberInfo { get; set; } +} diff --git a/src/Dsp.Data/Entities/WorkOrder.cs b/src/Dsp.Data/Entities/WorkOrder.cs index 19c15ec9..87e5d50d 100644 --- a/src/Dsp.Data/Entities/WorkOrder.cs +++ b/src/Dsp.Data/Entities/WorkOrder.cs @@ -1,64 +1,32 @@ -namespace Dsp.Data.Entities +using System; + +namespace Dsp.Data.Entities; + +public partial class WorkOrder { - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - using System.Linq; + public int WorkOrderId { get; set; } - public class WorkOrder - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int WorkOrderId { get; set; } + public int UserId { get; set; } - public int? UserId { get; set; } + public string Title { get; set; } - [Required, StringLength(100)] - public string Title { get; set; } + public string Description { get; set; } - [Required, DataType(DataType.MultilineText), StringLength(3000)] - public string Description { get; set; } + public string Result { get; set; } - [DataType(DataType.MultilineText), StringLength(3000)] - public string Result { get; set; } + public DateTime CreatedOn { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - [InverseProperty("WorkOrder")] - public virtual ICollection StatusChanges { get; set; } - [InverseProperty("WorkOrder")] - public virtual ICollection PriorityChanges { get; set; } - [InverseProperty("WorkOrder")] - public virtual ICollection Comments { get; set; } + public DateTime? ClosedOn { get; set; } - public string GetCurrentStatus() - { - return StatusChanges.OrderBy(o => o.ChangedOn).Last().Status.Name; - } - public string GetCurrentPriority() - { - return PriorityChanges.OrderBy(o => o.ChangedOn).Last().Priority.Name; - } - public DateTime GetDateTimeCreated() - { - return StatusChanges.OrderBy(o => o.ChangedOn).First().ChangedOn; - } - public DateTime GetMostRecentActivityDateTime() - { - var mostRecentComment = new DateTime(); - if (Comments.Any()) - { - mostRecentComment = Comments.Max(w => w.SubmittedOn); - } + public virtual Member User { get; set; } - var dates = new List - { - StatusChanges.Max(w => w.ChangedOn), - PriorityChanges.Max(w => w.ChangedOn), - mostRecentComment - }; + public bool IsClosed + { + get { return ClosedOn != null; } + } - return dates.Max(); - } + public bool IsOpen + { + get { return ClosedOn == null; } } -} \ No newline at end of file +} diff --git a/src/Dsp.Data/Entities/WorkOrderComment.cs b/src/Dsp.Data/Entities/WorkOrderComment.cs deleted file mode 100644 index 289e5351..00000000 --- a/src/Dsp.Data/Entities/WorkOrderComment.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class WorkOrderComment - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int WorkOrderCommentId { get; set; } - - public int WorkOrderId { get; set; } - - public int? UserId { get; set; } - - public DateTime SubmittedOn { get; set; } - - [Required, StringLength(3000)] - public string Text { get; set; } - - [ForeignKey("WorkOrderId")] - public virtual WorkOrder WorkOrder { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/WorkOrderPriority.cs b/src/Dsp.Data/Entities/WorkOrderPriority.cs deleted file mode 100644 index 40bd7a1a..00000000 --- a/src/Dsp.Data/Entities/WorkOrderPriority.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class WorkOrderPriority - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int WorkOrderPriorityId { get; set; } - - [Required, StringLength(100)] - public string Name { get; set; } - - [InverseProperty("Priority")] - public virtual ICollection PriorityChanges { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/WorkOrderPriorityChange.cs b/src/Dsp.Data/Entities/WorkOrderPriorityChange.cs deleted file mode 100644 index 91023812..00000000 --- a/src/Dsp.Data/Entities/WorkOrderPriorityChange.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class WorkOrderPriorityChange - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int WorkOrderPriorityChangeId { get; set; } - - public int WorkOrderId { get; set; } - - public int WorkOrderPriorityId {get; set; } - - public int? UserId { get; set; } - - public DateTime ChangedOn { get; set; } - - [ForeignKey("WorkOrderId")] - public virtual WorkOrder WorkOrder { get; set; } - [ForeignKey("WorkOrderPriorityId")] - public virtual WorkOrderPriority Priority { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/WorkOrderStatus.cs b/src/Dsp.Data/Entities/WorkOrderStatus.cs deleted file mode 100644 index a16b4230..00000000 --- a/src/Dsp.Data/Entities/WorkOrderStatus.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - [Table("WorkOrderStatuses")] - public class WorkOrderStatus - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int WorkOrderStatusId { get; set; } - - [Required, StringLength(100)] - public string Name { get; set; } - - [InverseProperty("Status")] - public virtual ICollection StatusChanges { get; set; } - } -} diff --git a/src/Dsp.Data/Entities/WorkOrderStatusChange.cs b/src/Dsp.Data/Entities/WorkOrderStatusChange.cs deleted file mode 100644 index 271a8e8a..00000000 --- a/src/Dsp.Data/Entities/WorkOrderStatusChange.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace Dsp.Data.Entities -{ - using System; - using System.ComponentModel.DataAnnotations; - using System.ComponentModel.DataAnnotations.Schema; - - public class WorkOrderStatusChange - { - [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int WorkOrderStatusChangeId { get; set; } - - public int WorkOrderId { get; set; } - - public int WorkOrderStatusId {get; set; } - - public int? UserId { get; set; } - - public DateTime ChangedOn { get; set; } - - [ForeignKey("WorkOrderId")] - public virtual WorkOrder WorkOrder { get; set; } - [ForeignKey("WorkOrderStatusId")] - public virtual WorkOrderStatus Status { get; set; } - [ForeignKey("UserId")] - public virtual Member Member { get; set; } - } -} diff --git a/src/Dsp.Data/GlobalSuppressions.cs b/src/Dsp.Data/GlobalSuppressions.cs new file mode 100644 index 00000000..536ba0cc --- /dev/null +++ b/src/Dsp.Data/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE0161:Convert to file-scoped namespace", Justification = "", Scope = "namespace", Target = "~N:Dsp.Data.Migrations")] diff --git a/src/Dsp.Data/Migrations/201507142355194_Initial.Designer.cs b/src/Dsp.Data/Migrations/201507142355194_Initial.Designer.cs deleted file mode 100644 index ebaf7ac2..00000000 --- a/src/Dsp.Data/Migrations/201507142355194_Initial.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class Initial : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(Initial)); - - string IMigrationMetadata.Id - { - get { return "201507142355194_Initial"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201507142355194_Initial.cs b/src/Dsp.Data/Migrations/201507142355194_Initial.cs deleted file mode 100644 index 347e46a3..00000000 --- a/src/Dsp.Data/Migrations/201507142355194_Initial.cs +++ /dev/null @@ -1,854 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class Initial : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.Addresses", - c => new - { - AddressId = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - Type = c.String(nullable: false, maxLength: 20), - Address1 = c.String(maxLength: 100), - Address2 = c.String(maxLength: 100), - City = c.String(maxLength: 50), - State = c.String(maxLength: 2), - PostalCode = c.Int(nullable: false), - Country = c.String(maxLength: 50), - }) - .PrimaryKey(t => t.AddressId) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId); - - CreateTable( - "dbo.Members", - c => new - { - UserId = c.Int(nullable: false, identity: true), - FirstName = c.String(nullable: false, maxLength: 100), - LastName = c.String(nullable: false, maxLength: 50), - Pin = c.Int(), - Room = c.Int(), - StatusId = c.Int(nullable: false), - PledgeClassId = c.Int(), - ExpectedGraduationId = c.Int(), - BigBroId = c.Int(), - ShirtSize = c.String(), - CreatedOn = c.DateTime(), - LastUpdatedOn = c.DateTime(), - Email = c.String(maxLength: 256), - EmailConfirmed = c.Boolean(nullable: false), - PasswordHash = c.String(), - SecurityStamp = c.String(), - PhoneNumber = c.String(), - PhoneNumberConfirmed = c.Boolean(nullable: false), - TwoFactorEnabled = c.Boolean(nullable: false), - LockoutEndDateUtc = c.DateTime(), - LockoutEnabled = c.Boolean(nullable: false), - AccessFailedCount = c.Int(nullable: false), - UserName = c.String(nullable: false, maxLength: 256), - }) - .PrimaryKey(t => t.UserId) - .ForeignKey("dbo.Semesters", t => t.ExpectedGraduationId) - .ForeignKey("dbo.PledgeClasses", t => t.PledgeClassId) - .ForeignKey("dbo.Members", t => t.BigBroId) - .ForeignKey("dbo.MemberStatuses", t => t.StatusId, cascadeDelete: true) - .Index(t => t.StatusId) - .Index(t => t.PledgeClassId) - .Index(t => t.ExpectedGraduationId) - .Index(t => t.BigBroId) - .Index(t => t.UserName, unique: true, name: "UserNameIndex"); - - CreateTable( - "dbo.MemberClaims", - c => new - { - Id = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - ClaimType = c.String(), - ClaimValue = c.String(), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId); - - CreateTable( - "dbo.ClassesTaken", - c => new - { - UserId = c.Int(nullable: false), - ClassId = c.Int(nullable: false), - SemesterId = c.Int(nullable: false), - ClassTakenId = c.Int(nullable: false, identity: true), - MidtermGrade = c.String(maxLength: 1), - FinalGrade = c.String(maxLength: 1), - Dropped = c.Boolean(), - IsSummerClass = c.Boolean(nullable: false), - CreatedOn = c.DateTime(), - }) - .PrimaryKey(t => t.ClassTakenId) - .ForeignKey("dbo.Classes", t => t.ClassId, cascadeDelete: true) - .ForeignKey("dbo.Semesters", t => t.SemesterId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => new { t.UserId, t.ClassId, t.SemesterId }, unique: true, name: "IX_ClassTaken"); - - CreateTable( - "dbo.Classes", - c => new - { - ClassId = c.Int(nullable: false, identity: true), - DepartmentId = c.Int(nullable: false), - CourseShorthand = c.String(nullable: false, maxLength: 15), - CourseName = c.String(nullable: false, maxLength: 100), - CreditHours = c.Int(nullable: false), - }) - .PrimaryKey(t => t.ClassId) - .ForeignKey("dbo.Departments", t => t.DepartmentId, cascadeDelete: true) - .Index(t => t.DepartmentId); - - CreateTable( - "dbo.ClassFiles", - c => new - { - ClassFileId = c.Int(nullable: false, identity: true), - ClassId = c.Int(nullable: false), - UserId = c.Int(), - UploadedOn = c.DateTime(nullable: false), - LastAccessedOn = c.DateTime(), - DownloadCount = c.Int(nullable: false), - AwsCode = c.String(maxLength: 200), - }) - .PrimaryKey(t => t.ClassFileId) - .ForeignKey("dbo.Classes", t => t.ClassId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId) - .Index(t => t.ClassId) - .Index(t => t.UserId); - - CreateTable( - "dbo.ClassFileVotes", - c => new - { - UserId = c.Int(nullable: false), - ClassFileId = c.Int(nullable: false), - ClassFileVoteId = c.Int(nullable: false, identity: true), - IsUpvote = c.Boolean(nullable: false), - }) - .PrimaryKey(t => t.ClassFileVoteId) - .ForeignKey("dbo.ClassFiles", t => t.ClassFileId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => new { t.UserId, t.ClassFileId }, unique: true, name: "IX_ClassFileVote"); - - CreateTable( - "dbo.Departments", - c => new - { - DepartmentId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 100), - }) - .PrimaryKey(t => t.DepartmentId); - - CreateTable( - "dbo.Majors", - c => new - { - MajorId = c.Int(nullable: false, identity: true), - DepartmentId = c.Int(nullable: false), - MajorName = c.String(nullable: false, maxLength: 100), - }) - .PrimaryKey(t => t.MajorId) - .ForeignKey("dbo.Departments", t => t.DepartmentId, cascadeDelete: true) - .Index(t => t.DepartmentId); - - CreateTable( - "dbo.MajorToMembers", - c => new - { - MajorId = c.Int(nullable: false), - UserId = c.Int(nullable: false), - DegreeLevel = c.Int(nullable: false), - MajorToMemberId = c.Int(nullable: false, identity: true), - }) - .PrimaryKey(t => t.MajorToMemberId) - .ForeignKey("dbo.Majors", t => t.MajorId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => new { t.MajorId, t.UserId, t.DegreeLevel }, unique: true, name: "IX_MajorToMember"); - - CreateTable( - "dbo.Semesters", - c => new - { - SemesterId = c.Int(nullable: false, identity: true), - DateStart = c.DateTime(nullable: false), - DateEnd = c.DateTime(nullable: false), - TransitionDate = c.DateTime(nullable: false), - MinimumServiceHours = c.Int(nullable: false), - }) - .PrimaryKey(t => t.SemesterId); - - CreateTable( - "dbo.Leaders", - c => new - { - UserId = c.Int(nullable: false), - LeaderId = c.Int(nullable: false), - SemesterId = c.Int(nullable: false), - AppointedOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => new { t.UserId, t.LeaderId }) - .ForeignKey("dbo.Positions", t => t.LeaderId, cascadeDelete: true) - .ForeignKey("dbo.Semesters", t => t.SemesterId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId) - .Index(t => t.LeaderId) - .Index(t => t.SemesterId); - - CreateTable( - "dbo.Positions", - c => new - { - PositionId = c.Int(nullable: false, identity: true), - Description = c.String(maxLength: 100), - Inquiries = c.String(maxLength: 50), - Type = c.Int(nullable: false), - IsExecutive = c.Boolean(nullable: false), - IsElected = c.Boolean(nullable: false), - DisplayOrder = c.Int(nullable: false), - IsDisabled = c.Boolean(nullable: false), - IsPublic = c.Boolean(nullable: false), - CanBeRemoved = c.Boolean(nullable: false), - Name = c.String(nullable: false, maxLength: 256), - }) - .PrimaryKey(t => t.PositionId) - .Index(t => t.Name, unique: true, name: "RoleNameIndex"); - - CreateTable( - "dbo.PledgeClasses", - c => new - { - PledgeClassId = c.Int(nullable: false, identity: true), - SemesterId = c.Int(nullable: false), - PinningDate = c.DateTime(), - InitiationDate = c.DateTime(), - PledgeClassName = c.String(nullable: false, maxLength: 50), - }) - .PrimaryKey(t => t.PledgeClassId) - .ForeignKey("dbo.Semesters", t => t.SemesterId, cascadeDelete: true) - .Index(t => t.SemesterId); - - CreateTable( - "dbo.IncidentReports", - c => new - { - IncidentId = c.Int(nullable: false, identity: true), - DateTimeSubmitted = c.DateTime(nullable: false), - ReportedBy = c.Int(nullable: false), - DateTimeOfIncident = c.DateTime(nullable: false), - PolicyBroken = c.String(nullable: false, maxLength: 100), - Description = c.String(nullable: false, maxLength: 1500), - OfficialReport = c.String(maxLength: 1500), - }) - .PrimaryKey(t => t.IncidentId) - .ForeignKey("dbo.Members", t => t.ReportedBy, cascadeDelete: true) - .Index(t => t.ReportedBy); - - CreateTable( - "dbo.LaundrySignups", - c => new - { - DateTimeShift = c.DateTime(nullable: false), - UserId = c.Int(nullable: false), - DateTimeSignedUp = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.DateTimeShift) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId); - - CreateTable( - "dbo.MemberLogins", - c => new - { - LoginProvider = c.String(nullable: false, maxLength: 128), - ProviderKey = c.String(nullable: false, maxLength: 128), - UserId = c.Int(nullable: false), - }) - .PrimaryKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId }) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId); - - CreateTable( - "dbo.MealPlates", - c => new - { - MealPlateId = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - PlateDateTime = c.DateTime(nullable: false), - SignedUpOn = c.DateTime(nullable: false), - Type = c.String(maxLength: 25), - }) - .PrimaryKey(t => t.MealPlateId) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId); - - CreateTable( - "dbo.MealVotes", - c => new - { - UserId = c.Int(nullable: false), - MealItemId = c.Int(nullable: false), - MealVoteId = c.Int(nullable: false, identity: true), - IsUpvote = c.Boolean(nullable: false), - }) - .PrimaryKey(t => t.MealVoteId) - .ForeignKey("dbo.MealItems", t => t.MealItemId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => new { t.UserId, t.MealItemId }, unique: true, name: "IX_MealVote"); - - CreateTable( - "dbo.MealItems", - c => new - { - MealItemId = c.Int(nullable: false, identity: true), - MealItemTypeId = c.Int(nullable: false), - Name = c.String(nullable: false, maxLength: 150), - IsGlutenFree = c.Boolean(nullable: false), - }) - .PrimaryKey(t => t.MealItemId) - .ForeignKey("dbo.MealItemTypes", t => t.MealItemTypeId, cascadeDelete: true) - .Index(t => t.MealItemTypeId); - - CreateTable( - "dbo.MealItemTypes", - c => new - { - MealItemTypeId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 50), - }) - .PrimaryKey(t => t.MealItemTypeId); - - CreateTable( - "dbo.MealToItems", - c => new - { - MealId = c.Int(nullable: false), - MealItemId = c.Int(nullable: false), - MealToItemId = c.Int(nullable: false, identity: true), - DisplayOrder = c.Int(nullable: false), - }) - .PrimaryKey(t => t.MealToItemId) - .ForeignKey("dbo.Meals", t => t.MealId, cascadeDelete: true) - .ForeignKey("dbo.MealItems", t => t.MealItemId, cascadeDelete: true) - .Index(t => new { t.MealId, t.MealItemId }, unique: true, name: "IX_MealToItem"); - - CreateTable( - "dbo.Meals", - c => new - { - MealId = c.Int(nullable: false, identity: true), - }) - .PrimaryKey(t => t.MealId); - - CreateTable( - "dbo.MealToPeriods", - c => new - { - MealToPeriodId = c.Int(nullable: false, identity: true), - MealPeriodId = c.Int(nullable: false), - MealId = c.Int(nullable: false), - Date = c.DateTime(nullable: false, storeType: "date"), - }) - .PrimaryKey(t => t.MealToPeriodId) - .ForeignKey("dbo.MealPeriods", t => t.MealPeriodId, cascadeDelete: true) - .ForeignKey("dbo.Meals", t => t.MealId, cascadeDelete: true) - .Index(t => t.MealPeriodId) - .Index(t => t.MealId); - - CreateTable( - "dbo.MealPeriods", - c => new - { - MealPeriodId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 100), - StartTime = c.DateTime(nullable: false), - EndTime = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.MealPeriodId); - - CreateTable( - "dbo.MemberStatuses", - c => new - { - StatusId = c.Int(nullable: false, identity: true), - StatusName = c.String(nullable: false, maxLength: 50), - }) - .PrimaryKey(t => t.StatusId); - - CreateTable( - "dbo.PhoneNumbers", - c => new - { - PhoneNumberId = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - PhoneNumber = c.String(), - Type = c.String(maxLength: 100), - }) - .PrimaryKey(t => t.PhoneNumberId) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId); - - CreateTable( - "dbo.RoomToMembers", - c => new - { - RoomToMemberId = c.Int(nullable: false, identity: true), - RoomId = c.Int(nullable: false), - UserId = c.Int(nullable: false), - MovedIn = c.DateTime(nullable: false), - MovedOut = c.DateTime(), - }) - .PrimaryKey(t => t.RoomToMemberId) - .ForeignKey("dbo.Rooms", t => t.RoomId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.RoomId) - .Index(t => t.UserId); - - CreateTable( - "dbo.Rooms", - c => new - { - RoomId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 100), - MaxCapacity = c.Int(nullable: false), - }) - .PrimaryKey(t => t.RoomId); - - CreateTable( - "dbo.ServiceHours", - c => new - { - UserId = c.Int(nullable: false), - EventId = c.Int(nullable: false), - DurationHours = c.Double(nullable: false), - DateTimeSubmitted = c.DateTime(nullable: false), - }) - .PrimaryKey(t => new { t.UserId, t.EventId }) - .ForeignKey("dbo.Events", t => t.EventId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId) - .Index(t => t.EventId); - - CreateTable( - "dbo.Events", - c => new - { - EventId = c.Int(nullable: false, identity: true), - SubmitterId = c.Int(), - IsApproved = c.Boolean(nullable: false), - DateTimeOccurred = c.DateTime(nullable: false), - EventName = c.String(nullable: false, maxLength: 50), - DurationHours = c.Double(nullable: false), - CreatedOn = c.DateTime(), - }) - .PrimaryKey(t => t.EventId) - .ForeignKey("dbo.Members", t => t.SubmitterId) - .Index(t => t.SubmitterId); - - CreateTable( - "dbo.SoberSignups", - c => new - { - SignupId = c.Int(nullable: false, identity: true), - UserId = c.Int(), - SoberTypeId = c.Int(nullable: false), - Description = c.String(maxLength: 100), - DateOfShift = c.DateTime(nullable: false), - DateTimeSignedUp = c.DateTime(), - CreatedOn = c.DateTime(), - }) - .PrimaryKey(t => t.SignupId) - .ForeignKey("dbo.SoberTypes", t => t.SoberTypeId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId) - .Index(t => t.UserId) - .Index(t => t.SoberTypeId); - - CreateTable( - "dbo.SoberTypes", - c => new - { - SoberTypeId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 100), - Description = c.String(maxLength: 3000), - }) - .PrimaryKey(t => t.SoberTypeId); - - CreateTable( - "dbo.WorkOrderComments", - c => new - { - WorkOrderCommentId = c.Int(nullable: false, identity: true), - WorkOrderId = c.Int(nullable: false), - UserId = c.Int(), - SubmittedOn = c.DateTime(nullable: false), - Text = c.String(nullable: false, maxLength: 3000), - }) - .PrimaryKey(t => t.WorkOrderCommentId) - .ForeignKey("dbo.WorkOrders", t => t.WorkOrderId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId) - .Index(t => t.WorkOrderId) - .Index(t => t.UserId); - - CreateTable( - "dbo.WorkOrders", - c => new - { - WorkOrderId = c.Int(nullable: false, identity: true), - UserId = c.Int(), - Title = c.String(nullable: false, maxLength: 100), - Description = c.String(nullable: false, maxLength: 3000), - Result = c.String(maxLength: 3000), - }) - .PrimaryKey(t => t.WorkOrderId) - .ForeignKey("dbo.Members", t => t.UserId) - .Index(t => t.UserId); - - CreateTable( - "dbo.WorkOrderPriorityChanges", - c => new - { - WorkOrderPriorityChangeId = c.Int(nullable: false, identity: true), - WorkOrderId = c.Int(nullable: false), - WorkOrderPriorityId = c.Int(nullable: false), - UserId = c.Int(), - ChangedOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.WorkOrderPriorityChangeId) - .ForeignKey("dbo.WorkOrderPriorities", t => t.WorkOrderPriorityId, cascadeDelete: true) - .ForeignKey("dbo.WorkOrders", t => t.WorkOrderId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId) - .Index(t => t.WorkOrderId) - .Index(t => t.WorkOrderPriorityId) - .Index(t => t.UserId); - - CreateTable( - "dbo.WorkOrderPriorities", - c => new - { - WorkOrderPriorityId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 100), - }) - .PrimaryKey(t => t.WorkOrderPriorityId); - - CreateTable( - "dbo.WorkOrderStatusChanges", - c => new - { - WorkOrderStatusChangeId = c.Int(nullable: false, identity: true), - WorkOrderId = c.Int(nullable: false), - WorkOrderStatusId = c.Int(nullable: false), - UserId = c.Int(), - ChangedOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.WorkOrderStatusChangeId) - .ForeignKey("dbo.WorkOrderStatuses", t => t.WorkOrderStatusId, cascadeDelete: true) - .ForeignKey("dbo.WorkOrders", t => t.WorkOrderId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId) - .Index(t => t.WorkOrderId) - .Index(t => t.WorkOrderStatusId) - .Index(t => t.UserId); - - CreateTable( - "dbo.WorkOrderStatuses", - c => new - { - WorkOrderStatusId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 100), - }) - .PrimaryKey(t => t.WorkOrderStatusId); - - CreateTable( - "dbo.Emails", - c => new - { - EmailId = c.Int(nullable: false, identity: true), - EmailTypeId = c.Int(nullable: false), - SentOn = c.DateTime(nullable: false), - Destination = c.String(), - Body = c.String(), - }) - .PrimaryKey(t => t.EmailId) - .ForeignKey("dbo.EmailTypes", t => t.EmailTypeId, cascadeDelete: true) - .Index(t => t.EmailTypeId); - - CreateTable( - "dbo.EmailTypes", - c => new - { - EmailTypeId = c.Int(nullable: false, identity: true), - Name = c.String(maxLength: 100), - Destination = c.String(maxLength: 100), - }) - .PrimaryKey(t => t.EmailTypeId); - - CreateTable( - "dbo.ScholarshipAnswers", - c => new - { - ScholarshipAnswerId = c.Int(nullable: false, identity: true), - ScholarshipSubmissionId = c.Guid(nullable: false), - ScholarshipQuestionId = c.Int(nullable: false), - AnswerText = c.String(maxLength: 3000), - }) - .PrimaryKey(t => t.ScholarshipAnswerId) - .ForeignKey("dbo.ScholarshipQuestions", t => t.ScholarshipQuestionId, cascadeDelete: true) - .ForeignKey("dbo.ScholarshipSubmissions", t => t.ScholarshipSubmissionId, cascadeDelete: true) - .Index(t => t.ScholarshipSubmissionId) - .Index(t => t.ScholarshipQuestionId); - - CreateTable( - "dbo.ScholarshipQuestions", - c => new - { - ScholarshipQuestionId = c.Int(nullable: false, identity: true), - Prompt = c.String(nullable: false, maxLength: 500), - AnswerMinimumLength = c.Int(nullable: false), - AnswerMaximumLength = c.Int(nullable: false), - }) - .PrimaryKey(t => t.ScholarshipQuestionId); - - CreateTable( - "dbo.ScholarshipAppQuestions", - c => new - { - ScholarshipAppQuestionId = c.Int(nullable: false, identity: true), - ScholarshipAppId = c.Int(nullable: false), - ScholarshipQuestionId = c.Int(nullable: false), - FormOrder = c.Int(nullable: false), - IsOptional = c.Boolean(nullable: false), - }) - .PrimaryKey(t => t.ScholarshipAppQuestionId) - .ForeignKey("dbo.ScholarshipApps", t => t.ScholarshipAppId, cascadeDelete: true) - .ForeignKey("dbo.ScholarshipQuestions", t => t.ScholarshipQuestionId, cascadeDelete: true) - .Index(t => t.ScholarshipAppId) - .Index(t => t.ScholarshipQuestionId); - - CreateTable( - "dbo.ScholarshipApps", - c => new - { - ScholarshipAppId = c.Int(nullable: false, identity: true), - ScholarshipTypeId = c.Int(nullable: false), - Title = c.String(nullable: false, maxLength: 100), - AdditionalText = c.String(nullable: false, maxLength: 3000), - OpensOn = c.DateTime(nullable: false), - ClosesOn = c.DateTime(nullable: false), - IsPublic = c.Boolean(nullable: false), - }) - .PrimaryKey(t => t.ScholarshipAppId) - .ForeignKey("dbo.ScholarshipTypes", t => t.ScholarshipTypeId, cascadeDelete: true) - .Index(t => t.ScholarshipTypeId); - - CreateTable( - "dbo.ScholarshipSubmissions", - c => new - { - ScholarshipSubmissionId = c.Guid(nullable: false, identity: true), - ScholarshipAppId = c.Int(nullable: false), - IsWinner = c.Boolean(nullable: false), - SubmittedOn = c.DateTime(nullable: false), - FirstName = c.String(nullable: false, maxLength: 50), - LastName = c.String(nullable: false, maxLength: 50), - StudentNumber = c.String(nullable: false, maxLength: 15), - PhoneNumber = c.String(nullable: false, maxLength: 15), - Email = c.String(nullable: false, maxLength: 50), - Address1 = c.String(nullable: false, maxLength: 100), - Address2 = c.String(maxLength: 100), - City = c.String(nullable: false, maxLength: 50), - State = c.String(maxLength: 2), - PostalCode = c.Int(nullable: false), - Country = c.String(nullable: false, maxLength: 50), - HighSchool = c.String(nullable: false, maxLength: 100), - ActSatScore = c.Int(nullable: false), - Gpa = c.Double(nullable: false), - HearAboutScholarship = c.String(nullable: false, maxLength: 100), - CommitteeResponse = c.String(), - CommitteeRespondedOn = c.DateTime(), - }) - .PrimaryKey(t => t.ScholarshipSubmissionId) - .ForeignKey("dbo.ScholarshipApps", t => t.ScholarshipAppId, cascadeDelete: true) - .Index(t => t.ScholarshipAppId); - - CreateTable( - "dbo.ScholarshipTypes", - c => new - { - ScholarshipTypeId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 100), - }) - .PrimaryKey(t => t.ScholarshipTypeId); - - } - - public override void Down() - { - DropForeignKey("dbo.ScholarshipAppQuestions", "ScholarshipQuestionId", "dbo.ScholarshipQuestions"); - DropForeignKey("dbo.ScholarshipApps", "ScholarshipTypeId", "dbo.ScholarshipTypes"); - DropForeignKey("dbo.ScholarshipSubmissions", "ScholarshipAppId", "dbo.ScholarshipApps"); - DropForeignKey("dbo.ScholarshipAnswers", "ScholarshipSubmissionId", "dbo.ScholarshipSubmissions"); - DropForeignKey("dbo.ScholarshipAppQuestions", "ScholarshipAppId", "dbo.ScholarshipApps"); - DropForeignKey("dbo.ScholarshipAnswers", "ScholarshipQuestionId", "dbo.ScholarshipQuestions"); - DropForeignKey("dbo.Emails", "EmailTypeId", "dbo.EmailTypes"); - DropForeignKey("dbo.WorkOrderStatusChanges", "UserId", "dbo.Members"); - DropForeignKey("dbo.WorkOrders", "UserId", "dbo.Members"); - DropForeignKey("dbo.WorkOrderPriorityChanges", "UserId", "dbo.Members"); - DropForeignKey("dbo.WorkOrderComments", "UserId", "dbo.Members"); - DropForeignKey("dbo.WorkOrderStatusChanges", "WorkOrderId", "dbo.WorkOrders"); - DropForeignKey("dbo.WorkOrderStatusChanges", "WorkOrderStatusId", "dbo.WorkOrderStatuses"); - DropForeignKey("dbo.WorkOrderPriorityChanges", "WorkOrderId", "dbo.WorkOrders"); - DropForeignKey("dbo.WorkOrderPriorityChanges", "WorkOrderPriorityId", "dbo.WorkOrderPriorities"); - DropForeignKey("dbo.WorkOrderComments", "WorkOrderId", "dbo.WorkOrders"); - DropForeignKey("dbo.Events", "SubmitterId", "dbo.Members"); - DropForeignKey("dbo.SoberSignups", "UserId", "dbo.Members"); - DropForeignKey("dbo.SoberSignups", "SoberTypeId", "dbo.SoberTypes"); - DropForeignKey("dbo.ServiceHours", "UserId", "dbo.Members"); - DropForeignKey("dbo.ServiceHours", "EventId", "dbo.Events"); - DropForeignKey("dbo.RoomToMembers", "UserId", "dbo.Members"); - DropForeignKey("dbo.RoomToMembers", "RoomId", "dbo.Rooms"); - DropForeignKey("dbo.PhoneNumbers", "UserId", "dbo.Members"); - DropForeignKey("dbo.Members", "StatusId", "dbo.MemberStatuses"); - DropForeignKey("dbo.MealVotes", "UserId", "dbo.Members"); - DropForeignKey("dbo.MealVotes", "MealItemId", "dbo.MealItems"); - DropForeignKey("dbo.MealToItems", "MealItemId", "dbo.MealItems"); - DropForeignKey("dbo.MealToPeriods", "MealId", "dbo.Meals"); - DropForeignKey("dbo.MealToPeriods", "MealPeriodId", "dbo.MealPeriods"); - DropForeignKey("dbo.MealToItems", "MealId", "dbo.Meals"); - DropForeignKey("dbo.MealItems", "MealItemTypeId", "dbo.MealItemTypes"); - DropForeignKey("dbo.MealPlates", "UserId", "dbo.Members"); - DropForeignKey("dbo.MajorToMembers", "UserId", "dbo.Members"); - DropForeignKey("dbo.MemberLogins", "UserId", "dbo.Members"); - DropForeignKey("dbo.Members", "BigBroId", "dbo.Members"); - DropForeignKey("dbo.Leaders", "UserId", "dbo.Members"); - DropForeignKey("dbo.LaundrySignups", "UserId", "dbo.Members"); - DropForeignKey("dbo.IncidentReports", "ReportedBy", "dbo.Members"); - DropForeignKey("dbo.ClassFileVotes", "UserId", "dbo.Members"); - DropForeignKey("dbo.ClassFiles", "UserId", "dbo.Members"); - DropForeignKey("dbo.ClassesTaken", "UserId", "dbo.Members"); - DropForeignKey("dbo.PledgeClasses", "SemesterId", "dbo.Semesters"); - DropForeignKey("dbo.Members", "PledgeClassId", "dbo.PledgeClasses"); - DropForeignKey("dbo.Leaders", "SemesterId", "dbo.Semesters"); - DropForeignKey("dbo.Leaders", "LeaderId", "dbo.Positions"); - DropForeignKey("dbo.Members", "ExpectedGraduationId", "dbo.Semesters"); - DropForeignKey("dbo.ClassesTaken", "SemesterId", "dbo.Semesters"); - DropForeignKey("dbo.Majors", "DepartmentId", "dbo.Departments"); - DropForeignKey("dbo.MajorToMembers", "MajorId", "dbo.Majors"); - DropForeignKey("dbo.Classes", "DepartmentId", "dbo.Departments"); - DropForeignKey("dbo.ClassFiles", "ClassId", "dbo.Classes"); - DropForeignKey("dbo.ClassFileVotes", "ClassFileId", "dbo.ClassFiles"); - DropForeignKey("dbo.ClassesTaken", "ClassId", "dbo.Classes"); - DropForeignKey("dbo.MemberClaims", "UserId", "dbo.Members"); - DropForeignKey("dbo.Addresses", "UserId", "dbo.Members"); - DropIndex("dbo.ScholarshipSubmissions", new[] { "ScholarshipAppId" }); - DropIndex("dbo.ScholarshipApps", new[] { "ScholarshipTypeId" }); - DropIndex("dbo.ScholarshipAppQuestions", new[] { "ScholarshipQuestionId" }); - DropIndex("dbo.ScholarshipAppQuestions", new[] { "ScholarshipAppId" }); - DropIndex("dbo.ScholarshipAnswers", new[] { "ScholarshipQuestionId" }); - DropIndex("dbo.ScholarshipAnswers", new[] { "ScholarshipSubmissionId" }); - DropIndex("dbo.Emails", new[] { "EmailTypeId" }); - DropIndex("dbo.WorkOrderStatusChanges", new[] { "UserId" }); - DropIndex("dbo.WorkOrderStatusChanges", new[] { "WorkOrderStatusId" }); - DropIndex("dbo.WorkOrderStatusChanges", new[] { "WorkOrderId" }); - DropIndex("dbo.WorkOrderPriorityChanges", new[] { "UserId" }); - DropIndex("dbo.WorkOrderPriorityChanges", new[] { "WorkOrderPriorityId" }); - DropIndex("dbo.WorkOrderPriorityChanges", new[] { "WorkOrderId" }); - DropIndex("dbo.WorkOrders", new[] { "UserId" }); - DropIndex("dbo.WorkOrderComments", new[] { "UserId" }); - DropIndex("dbo.WorkOrderComments", new[] { "WorkOrderId" }); - DropIndex("dbo.SoberSignups", new[] { "SoberTypeId" }); - DropIndex("dbo.SoberSignups", new[] { "UserId" }); - DropIndex("dbo.Events", new[] { "SubmitterId" }); - DropIndex("dbo.ServiceHours", new[] { "EventId" }); - DropIndex("dbo.ServiceHours", new[] { "UserId" }); - DropIndex("dbo.RoomToMembers", new[] { "UserId" }); - DropIndex("dbo.RoomToMembers", new[] { "RoomId" }); - DropIndex("dbo.PhoneNumbers", new[] { "UserId" }); - DropIndex("dbo.MealToPeriods", new[] { "MealId" }); - DropIndex("dbo.MealToPeriods", new[] { "MealPeriodId" }); - DropIndex("dbo.MealToItems", "IX_MealToItem"); - DropIndex("dbo.MealItems", new[] { "MealItemTypeId" }); - DropIndex("dbo.MealVotes", "IX_MealVote"); - DropIndex("dbo.MealPlates", new[] { "UserId" }); - DropIndex("dbo.MemberLogins", new[] { "UserId" }); - DropIndex("dbo.LaundrySignups", new[] { "UserId" }); - DropIndex("dbo.IncidentReports", new[] { "ReportedBy" }); - DropIndex("dbo.PledgeClasses", new[] { "SemesterId" }); - DropIndex("dbo.Positions", "RoleNameIndex"); - DropIndex("dbo.Leaders", new[] { "SemesterId" }); - DropIndex("dbo.Leaders", new[] { "LeaderId" }); - DropIndex("dbo.Leaders", new[] { "UserId" }); - DropIndex("dbo.MajorToMembers", "IX_MajorToMember"); - DropIndex("dbo.Majors", new[] { "DepartmentId" }); - DropIndex("dbo.ClassFileVotes", "IX_ClassFileVote"); - DropIndex("dbo.ClassFiles", new[] { "UserId" }); - DropIndex("dbo.ClassFiles", new[] { "ClassId" }); - DropIndex("dbo.Classes", new[] { "DepartmentId" }); - DropIndex("dbo.ClassesTaken", "IX_ClassTaken"); - DropIndex("dbo.MemberClaims", new[] { "UserId" }); - DropIndex("dbo.Members", "UserNameIndex"); - DropIndex("dbo.Members", new[] { "BigBroId" }); - DropIndex("dbo.Members", new[] { "ExpectedGraduationId" }); - DropIndex("dbo.Members", new[] { "PledgeClassId" }); - DropIndex("dbo.Members", new[] { "StatusId" }); - DropIndex("dbo.Addresses", new[] { "UserId" }); - DropTable("dbo.ScholarshipTypes"); - DropTable("dbo.ScholarshipSubmissions"); - DropTable("dbo.ScholarshipApps"); - DropTable("dbo.ScholarshipAppQuestions"); - DropTable("dbo.ScholarshipQuestions"); - DropTable("dbo.ScholarshipAnswers"); - DropTable("dbo.EmailTypes"); - DropTable("dbo.Emails"); - DropTable("dbo.WorkOrderStatuses"); - DropTable("dbo.WorkOrderStatusChanges"); - DropTable("dbo.WorkOrderPriorities"); - DropTable("dbo.WorkOrderPriorityChanges"); - DropTable("dbo.WorkOrders"); - DropTable("dbo.WorkOrderComments"); - DropTable("dbo.SoberTypes"); - DropTable("dbo.SoberSignups"); - DropTable("dbo.Events"); - DropTable("dbo.ServiceHours"); - DropTable("dbo.Rooms"); - DropTable("dbo.RoomToMembers"); - DropTable("dbo.PhoneNumbers"); - DropTable("dbo.MemberStatuses"); - DropTable("dbo.MealPeriods"); - DropTable("dbo.MealToPeriods"); - DropTable("dbo.Meals"); - DropTable("dbo.MealToItems"); - DropTable("dbo.MealItemTypes"); - DropTable("dbo.MealItems"); - DropTable("dbo.MealVotes"); - DropTable("dbo.MealPlates"); - DropTable("dbo.MemberLogins"); - DropTable("dbo.LaundrySignups"); - DropTable("dbo.IncidentReports"); - DropTable("dbo.PledgeClasses"); - DropTable("dbo.Positions"); - DropTable("dbo.Leaders"); - DropTable("dbo.Semesters"); - DropTable("dbo.MajorToMembers"); - DropTable("dbo.Majors"); - DropTable("dbo.Departments"); - DropTable("dbo.ClassFileVotes"); - DropTable("dbo.ClassFiles"); - DropTable("dbo.Classes"); - DropTable("dbo.ClassesTaken"); - DropTable("dbo.MemberClaims"); - DropTable("dbo.Members"); - DropTable("dbo.Addresses"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201507142355194_Initial.resx b/src/Dsp.Data/Migrations/201507142355194_Initial.resx deleted file mode 100644 index 52ef0f22..00000000 --- a/src/Dsp.Data/Migrations/201507142355194_Initial.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.Designer.cs b/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.Designer.cs deleted file mode 100644 index 3f49cd35..00000000 --- a/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class IncreasedClassShorthand : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(IncreasedClassShorthand)); - - string IMigrationMetadata.Id - { - get { return "201507150136182_IncreasedClassShorthand"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.cs b/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.cs deleted file mode 100644 index 47ceaf72..00000000 --- a/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class IncreasedClassShorthand : DbMigration - { - public override void Up() - { - AlterColumn("dbo.Classes", "CourseShorthand", c => c.String(nullable: false, maxLength: 50)); - } - - public override void Down() - { - AlterColumn("dbo.Classes", "CourseShorthand", c => c.String(nullable: false, maxLength: 15)); - } - } -} diff --git a/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.resx b/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.resx deleted file mode 100644 index b476dc0a..00000000 --- a/src/Dsp.Data/Migrations/201507150136182_IncreasedClassShorthand.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.Designer.cs b/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.Designer.cs deleted file mode 100644 index 6387295a..00000000 --- a/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class LeaderPKRefactoring : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(LeaderPKRefactoring)); - - string IMigrationMetadata.Id - { - get { return "201507152053564_LeaderPKRefactoring"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.cs b/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.cs deleted file mode 100644 index 51f937f9..00000000 --- a/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class LeaderPKRefactoring : DbMigration - { - public override void Up() - { - DropPrimaryKey("dbo.Leaders"); - AddPrimaryKey("dbo.Leaders", new[] { "UserId", "LeaderId", "SemesterId" }); - } - - public override void Down() - { - DropPrimaryKey("dbo.Leaders"); - AddPrimaryKey("dbo.Leaders", new[] { "UserId", "LeaderId" }); - } - } -} diff --git a/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.resx b/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.resx deleted file mode 100644 index 46920b61..00000000 --- a/src/Dsp.Data/Migrations/201507152053564_LeaderPKRefactoring.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.Designer.cs b/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.Designer.cs deleted file mode 100644 index 34d472d6..00000000 --- a/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class AddRoomSemester : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddRoomSemester)); - - string IMigrationMetadata.Id - { - get { return "201507230024165_AddRoomSemester"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.cs b/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.cs deleted file mode 100644 index c3a9ae36..00000000 --- a/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class AddRoomSemester : DbMigration - { - public override void Up() - { - AddColumn("dbo.Rooms", "SemesterId", c => c.Int(nullable: false)); - CreateIndex("dbo.Rooms", new[] { "SemesterId", "Name" }, unique: true, name: "IX_RoomSemesterName"); - AddForeignKey("dbo.Rooms", "SemesterId", "dbo.Semesters", "SemesterId", cascadeDelete: true); - } - - public override void Down() - { - DropForeignKey("dbo.Rooms", "SemesterId", "dbo.Semesters"); - DropIndex("dbo.Rooms", "IX_RoomSemesterName"); - DropColumn("dbo.Rooms", "SemesterId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.resx b/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.resx deleted file mode 100644 index 45c322bf..00000000 --- a/src/Dsp.Data/Migrations/201507230024165_AddRoomSemester.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.Designer.cs b/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.Designer.cs deleted file mode 100644 index 67d912fd..00000000 --- a/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class RemoveRoomField : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemoveRoomField)); - - string IMigrationMetadata.Id - { - get { return "201507231924452_RemoveRoomField"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.cs b/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.cs deleted file mode 100644 index eda16f7b..00000000 --- a/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemoveRoomField : DbMigration - { - public override void Up() - { - DropColumn("dbo.Members", "Room"); - } - - public override void Down() - { - AddColumn("dbo.Members", "Room", c => c.Int()); - } - } -} diff --git a/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.resx b/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.resx deleted file mode 100644 index 3202a9a9..00000000 --- a/src/Dsp.Data/Migrations/201507231924452_RemoveRoomField.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.Designer.cs b/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.Designer.cs deleted file mode 100644 index 2192d9b3..00000000 --- a/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class ChangedMoveOutFieldType : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangedMoveOutFieldType)); - - string IMigrationMetadata.Id - { - get { return "201507232040482_ChangedMoveOutFieldType"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.cs b/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.cs deleted file mode 100644 index 24d17ff6..00000000 --- a/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class ChangedMoveOutFieldType : DbMigration - { - public override void Up() - { - AlterColumn("dbo.RoomToMembers", "MovedOut", c => c.DateTime(nullable: false)); - } - - public override void Down() - { - AlterColumn("dbo.RoomToMembers", "MovedOut", c => c.DateTime()); - } - } -} diff --git a/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.resx b/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.resx deleted file mode 100644 index c3a1465a..00000000 --- a/src/Dsp.Data/Migrations/201507232040482_ChangedMoveOutFieldType.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.Designer.cs b/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.Designer.cs deleted file mode 100644 index 8d8aaf16..00000000 --- a/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class AddMemberAvatarField : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddMemberAvatarField)); - - string IMigrationMetadata.Id - { - get { return "201508082327224_AddMemberAvatarField"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.cs b/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.cs deleted file mode 100644 index d2bf422d..00000000 --- a/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class AddMemberAvatarField : DbMigration - { - public override void Up() - { - AddColumn("dbo.Members", "AvatarPath", c => c.String()); - } - - public override void Down() - { - DropColumn("dbo.Members", "AvatarPath"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.resx b/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.resx deleted file mode 100644 index 42698322..00000000 --- a/src/Dsp.Data/Migrations/201508082327224_AddMemberAvatarField.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.Designer.cs b/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.Designer.cs deleted file mode 100644 index 96677b44..00000000 --- a/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class RemoveClassFileVotes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemoveClassFileVotes)); - - string IMigrationMetadata.Id - { - get { return "201508160431007_RemoveClassFileVotes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.cs b/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.cs deleted file mode 100644 index 38edd98c..00000000 --- a/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemoveClassFileVotes : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.ClassFileVotes", "ClassFileId", "dbo.ClassFiles"); - DropForeignKey("dbo.ClassFileVotes", "UserId", "dbo.Members"); - DropIndex("dbo.ClassFileVotes", "IX_ClassFileVote"); - DropTable("dbo.ClassFileVotes"); - } - - public override void Down() - { - CreateTable( - "dbo.ClassFileVotes", - c => new - { - UserId = c.Int(nullable: false), - ClassFileId = c.Int(nullable: false), - ClassFileVoteId = c.Int(nullable: false, identity: true), - IsUpvote = c.Boolean(nullable: false), - }) - .PrimaryKey(t => t.ClassFileVoteId); - - CreateIndex("dbo.ClassFileVotes", new[] { "UserId", "ClassFileId" }, unique: true, name: "IX_ClassFileVote"); - AddForeignKey("dbo.ClassFileVotes", "UserId", "dbo.Members", "UserId", cascadeDelete: true); - AddForeignKey("dbo.ClassFileVotes", "ClassFileId", "dbo.ClassFiles", "ClassFileId", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.resx b/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.resx deleted file mode 100644 index a4538501..00000000 --- a/src/Dsp.Data/Migrations/201508160431007_RemoveClassFileVotes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201508222223219_StudyHours.Designer.cs b/src/Dsp.Data/Migrations/201508222223219_StudyHours.Designer.cs deleted file mode 100644 index 12d02e1a..00000000 --- a/src/Dsp.Data/Migrations/201508222223219_StudyHours.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class StudyHours : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StudyHours)); - - string IMigrationMetadata.Id - { - get { return "201508222223219_StudyHours"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201508222223219_StudyHours.cs b/src/Dsp.Data/Migrations/201508222223219_StudyHours.cs deleted file mode 100644 index 5cfdb72d..00000000 --- a/src/Dsp.Data/Migrations/201508222223219_StudyHours.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class StudyHours : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.StudyAssignments", - c => new - { - Id = c.Int(nullable: false, identity: true), - PeriodId = c.Int(nullable: false), - MemberId = c.Int(nullable: false), - AmountOfHours = c.Double(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.StudyPeriods", t => t.PeriodId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.MemberId, cascadeDelete: true) - .Index(t => t.PeriodId) - .Index(t => t.MemberId); - - CreateTable( - "dbo.StudyPeriods", - c => new - { - Id = c.Int(nullable: false, identity: true), - BeginsOn = c.DateTime(nullable: false), - EndsOn = c.DateTime(nullable: false), - FineAmount = c.Double(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.StudyHours", - c => new - { - Id = c.Int(nullable: false, identity: true), - AssignmentId = c.Int(), - SessionId = c.Int(), - MemberId = c.Int(nullable: false), - SignedInOn = c.DateTime(nullable: false), - SignedOutOn = c.DateTime(nullable: false), - DurationMinutes = c.Double(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.StudySessions", t => t.SessionId) - .ForeignKey("dbo.StudyAssignments", t => t.AssignmentId) - .ForeignKey("dbo.Members", t => t.MemberId, cascadeDelete: true) - .Index(t => t.AssignmentId) - .Index(t => t.SessionId) - .Index(t => t.MemberId); - - CreateTable( - "dbo.StudySessions", - c => new - { - Id = c.Int(nullable: false, identity: true), - Location = c.String(), - BeginsOn = c.DateTime(nullable: false), - EndsOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.StudyProctors", - c => new - { - Id = c.Int(nullable: false, identity: true), - SessionId = c.Int(nullable: false), - MemberId = c.Int(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.StudySessions", t => t.SessionId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.MemberId, cascadeDelete: true) - .Index(t => t.SessionId) - .Index(t => t.MemberId); - - } - - public override void Down() - { - DropForeignKey("dbo.StudyProctors", "MemberId", "dbo.Members"); - DropForeignKey("dbo.StudyHours", "MemberId", "dbo.Members"); - DropForeignKey("dbo.StudyAssignments", "MemberId", "dbo.Members"); - DropForeignKey("dbo.StudyHours", "AssignmentId", "dbo.StudyAssignments"); - DropForeignKey("dbo.StudyHours", "SessionId", "dbo.StudySessions"); - DropForeignKey("dbo.StudyProctors", "SessionId", "dbo.StudySessions"); - DropForeignKey("dbo.StudyAssignments", "PeriodId", "dbo.StudyPeriods"); - DropIndex("dbo.StudyProctors", new[] { "MemberId" }); - DropIndex("dbo.StudyProctors", new[] { "SessionId" }); - DropIndex("dbo.StudyHours", new[] { "MemberId" }); - DropIndex("dbo.StudyHours", new[] { "SessionId" }); - DropIndex("dbo.StudyHours", new[] { "AssignmentId" }); - DropIndex("dbo.StudyAssignments", new[] { "MemberId" }); - DropIndex("dbo.StudyAssignments", new[] { "PeriodId" }); - DropTable("dbo.StudyProctors"); - DropTable("dbo.StudySessions"); - DropTable("dbo.StudyHours"); - DropTable("dbo.StudyPeriods"); - DropTable("dbo.StudyAssignments"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201508222223219_StudyHours.resx b/src/Dsp.Data/Migrations/201508222223219_StudyHours.resx deleted file mode 100644 index f2f2d886..00000000 --- a/src/Dsp.Data/Migrations/201508222223219_StudyHours.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.Designer.cs b/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.Designer.cs deleted file mode 100644 index ddee38d8..00000000 --- a/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class StudyHoursUpdate : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StudyHoursUpdate)); - - string IMigrationMetadata.Id - { - get { return "201510010058282_StudyHoursUpdate"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.cs b/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.cs deleted file mode 100644 index 4995808f..00000000 --- a/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class StudyHoursUpdate : DbMigration - { - public override void Up() - { - AlterColumn("dbo.StudyHours", "DurationMinutes", c => c.Double()); - AlterColumn("dbo.StudySessions", "Location", c => c.String(nullable: false)); - } - - public override void Down() - { - AlterColumn("dbo.StudySessions", "Location", c => c.String()); - AlterColumn("dbo.StudyHours", "DurationMinutes", c => c.Double(nullable: false)); - } - } -} diff --git a/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.resx b/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.resx deleted file mode 100644 index 78a791fc..00000000 --- a/src/Dsp.Data/Migrations/201510010058282_StudyHoursUpdate.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.Designer.cs b/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.Designer.cs deleted file mode 100644 index bc41307e..00000000 --- a/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class UpdateServiceHourTables : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(UpdateServiceHourTables)); - - string IMigrationMetadata.Id - { - get { return "201510220016341_UpdateServiceHourTables"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.cs b/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.cs deleted file mode 100644 index acd6277f..00000000 --- a/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class UpdateServiceHourTables : DbMigration - { - public override void Up() - { - RenameTable(name: "dbo.Events", newName: "ServiceEvents"); - } - - public override void Down() - { - RenameTable(name: "dbo.ServiceEvents", newName: "Events"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.resx b/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.resx deleted file mode 100644 index 66ccf08e..00000000 --- a/src/Dsp.Data/Migrations/201510220016341_UpdateServiceHourTables.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.Designer.cs b/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.Designer.cs deleted file mode 100644 index 80adea73..00000000 --- a/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class ServiceAmendments : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ServiceAmendments)); - - string IMigrationMetadata.Id - { - get { return "201510220032149_ServiceAmendments"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.cs b/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.cs deleted file mode 100644 index bdf2bd6d..00000000 --- a/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class ServiceAmendments : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.ServiceAmendments", - c => new - { - Id = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - SemesterId = c.Int(nullable: false), - AmountHours = c.Double(nullable: false), - Reason = c.String(nullable: false, maxLength: 100), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Semesters", t => t.SemesterId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId) - .Index(t => t.SemesterId); - - } - - public override void Down() - { - DropForeignKey("dbo.ServiceAmendments", "UserId", "dbo.Members"); - DropForeignKey("dbo.ServiceAmendments", "SemesterId", "dbo.Semesters"); - DropIndex("dbo.ServiceAmendments", new[] { "SemesterId" }); - DropIndex("dbo.ServiceAmendments", new[] { "UserId" }); - DropTable("dbo.ServiceAmendments"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.resx b/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.resx deleted file mode 100644 index bff3acad..00000000 --- a/src/Dsp.Data/Migrations/201510220032149_ServiceAmendments.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.Designer.cs b/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.Designer.cs deleted file mode 100644 index 8fe572e7..00000000 --- a/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class ServiceAmendmentsV2 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ServiceAmendmentsV2)); - - string IMigrationMetadata.Id - { - get { return "201510230422211_ServiceAmendmentsV2"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.cs b/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.cs deleted file mode 100644 index 2a9116fa..00000000 --- a/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.cs +++ /dev/null @@ -1,41 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class ServiceAmendmentsV2 : DbMigration - { - public override void Up() - { - RenameTable(name: "dbo.ServiceAmendments", newName: "ServiceEventAmendments"); - CreateTable( - "dbo.ServiceHourAmendments", - c => new - { - Id = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - SemesterId = c.Int(nullable: false), - AmountHours = c.Double(nullable: false), - Reason = c.String(nullable: false, maxLength: 100), - }) - .PrimaryKey(t => t.Id) - .Index(t => t.UserId) - .Index(t => t.SemesterId); - - AddColumn("dbo.Semesters", "MinimumServiceEvents", c => c.Int(nullable: false)); - AddColumn("dbo.ServiceEventAmendments", "NumberEvents", c => c.Int(nullable: false)); - DropColumn("dbo.ServiceEventAmendments", "AmountHours"); - } - - public override void Down() - { - AddColumn("dbo.ServiceEventAmendments", "AmountHours", c => c.Double(nullable: false)); - DropIndex("dbo.ServiceHourAmendments", new[] { "SemesterId" }); - DropIndex("dbo.ServiceHourAmendments", new[] { "UserId" }); - DropColumn("dbo.ServiceEventAmendments", "NumberEvents"); - DropColumn("dbo.Semesters", "MinimumServiceEvents"); - DropTable("dbo.ServiceHourAmendments"); - RenameTable(name: "dbo.ServiceEventAmendments", newName: "ServiceAmendments"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.resx b/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.resx deleted file mode 100644 index 4aee5c96..00000000 --- a/src/Dsp.Data/Migrations/201510230422211_ServiceAmendmentsV2.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19WXPduJLm+0TMf1DoaabntmW7unqpsLtD1uJStF3Stey686agz4EkdvGQvCSPl56YXzYP85PmLwxAcMGS2MHl6PqhyjpEIpFIfEgAiSX/3//5v6/+7dsuO/qCqjot8tfHL549Pz5C+abYpvnD6+N9c//3/3z8b//6X//Lq4vt7tvR7z3dT4QO58zr18ePTVP+cnJSbx7RLqmf7dJNVdTFffNsU+xOkm1x8vL58385efHiBGEWx5jX0dGrD/u8SXeo/YF/nhX5BpXNPsneF1uU1d13nHLbcj36Ldmhukw26PXxeV0+O0+a5PjoNEsTXP4tyu6Pj5I8L5qkwdL98qlGt01V5A+3Jf6QZB+/lwjT3SdZjTqpfxnJbSvw/CWpwMmYsWe12ddNsXNk+OKnTiMnYnYvvR4PGsM6u8C6bb6TWrd6e318ut1WqK6Pj8SyfjnLKkJHtdrmS1H9rKP/0xH++qeh0TE2nv38T//007N/ePn8H//pT0dn+6zZV+h1jvZNlWR/OrrZf87Szb+j7x+LP1D+Ot9nGSsXlgyncR/wp5uqKFHVfP+A7nlpr7bHRyd89hMx/5BbzkqrdZU3P708PvoNi5J8ztAAAkYFt01RobcoR1XSoO1N0jSowm14tUWtGiUhhCIx2CpzeXoeJG/PASMXd73jo/fJt3cof2geXx+/xH3tMv2Gtv2HjumnPMUdFedpqj1yLrTT1QtNwS+e25VsVdDLyQs6a5tLWcjPMcq4xajRtlWEMm6KukmyM0wfBquzAlvZKr5Kfku+pA9t5xEKfI92n1F1fPQBZW1y/ZiW1D4/o0l3HRYQtkWXVbH7UGRDtjHt7mNSPaAGy10oCG6LfbURBHt1Mto9rTXspbQ0hpR8IVvoYwTntH6XaVU35M8IndsR3e8SY8mW8HYs+CbNBQWbTcbeYkwylJqh7QM6yxJgeNPnvPhWog1u3LdVst23re7I4E368KYqHDPdPqZVc5v+p6598J8xzH6FCHavh1bBs0P0Md1ZIehTufXLfPoFz0Er3GEeJ6/gxS5JM92Y8/M/xioFT8Tv02qHhrZ+U2ALnOTucMU4/VpU21+TenoF3aLNvsLWCve0XTl5aTePRY5+29NBZL6yojXNx6/FZbLBdv8iJ7mC+b0rNn8U++Yi35K+86nZOPfDnkEUcU43GzxJuMRgRtt2BhRmd8n83jDM2PY/U8nKeRUzawqdWvUzJ+XUqp972cpGB4fmUT/ve5c2TYY6QkhCnkA1AxSooGmgTlY8eqY7rRJ7Ckk+mqBSX5fqqrt2NEf1xwRPEQ1SMXSQbEOyRsKRxkvOS9yhPpVZkWxNGhRoYXkZEq3MLJ2r3OOM5xbtUN0oMNon3vX0+QOVgBNeTSWhVUPqCtmrfJOSufgHVBZVo9W8RCopXqBQ6V0kc1X7u2Sfb6vvt+lDvi+1IouUslngCFQCC1TO8qJk2za2RtCeRJaQpihF65KdZRIMZjzTqhIUNsDW8hYPaa6Xs6OQ5WsTlHLRVFd53if/UVT1x8LskhApJfl4ApWcApWzvCjJbrCI+jGepZLlHBKVMo4UPvL9XliI1xGB0rVpOuEogbtshAFdZmvEowR3gGmH0hVTEIHI1Zwz83mtJnk6SZlsskqfHI2rShlvAygmkw4pFEiW9AnRuKqTcNLqsSOQFNh+V2mOJrqq7ENR6OeWHQEgS6GeWdJEV1luUfUl3aCLL3gUP92hfIv/008eVDkkaWFClfgKas/6/IoLcaqOmEFVG57OUBmBOKAutlUwSG4jsIecBTF35jkcTyfLySQr5WRpnOVs9tvvp3WNs5thIdHK8gokSplFOi+5zShgqGBZ9QgYKbzkw9+Ip+j2Mb230KxADcvLEWnl5imd5d9/3uE5Ldq2xkcvvEgqS85TKMUWyFxl/ktR/XFdbYmzb2cEM0AsyS3RqCSXCb1lv6nSgnhjzx6T/EE/PKvzqGsikBorJNJ718uuJlrZzdIGyEenpi5aF3Ko5eYIjXXgqaH6WO/V3paPaf6N+GBbF5tp05acC3om5PmxcwuWFePcSqtfw+GVSHt8pKTfk2wfuyhrJLYLlc4Da3lyYMyyEAZHAXzQyOdeFy7N5f2GV78WqIpzWMymsN4pPFd579MtJt4RF7T2dEaE3nmZ5kk2R0Hn+GcJbBHqc13Vt3s8qak6d0bY9qL9aQP9dgo4QFNviGq7R06VnCoAiatPxewxddmOUmzkBUlot5mjkhIkUG/hGCV1G0HcBo8lxw3vIWPO0eIclUnVkAVL8FyGLJLR7WNRNXjiutUYsmlOldHylzlKh23aNm06L4OTEv23tp1Nnbjq0FhD531tozXuiEAB2zSdeJTAVbgR2qBwY3KvA1Y8OVWycABJuHkjVXUzcSTHkmaOlO9t6vrMc5k7S/vqMcM2ZGkPYMCzHo9ju/SIls+py/Pia05EiXCw6/RrzR6xB+9dxD0ebzXvM1sazZyPN0W2cnWta57zOR7r0c39oOM/XmaHNZOWdmfMspDh4WctrpbHZc4Tz/TMNDMxTSjijIXiYK0ZLt0OnJjE66lA6WiiTriOIsil2vKwv/1CqBfqJm3ZPj1kyHh4y5BW9KX7mv3U0wbPmomngHinvtYftVJsdRCSO5GQGbOAdHljAyIK73zjWTOXTtjnWrIz9jJ4d0qWwVyd09IaTL9dco4eKoTeoS9ovM1D+xPz3bvTdnY9Vl+QJm+6DhPPt+h6GlMxx1Sc2fTbgxzcjZbdtc+wUE9lNxpcO2nMTQrrwRPnum3wkBC8tiQZL0bfnTefj1WS1ymp2zlz29ub3fs0T3f7HX+gK2iSwDHsD63M5LjzdLCLY6veDe96w4O5sTHFBQ+l8Oq7IDEuHwzFANcPxDS1jL5XEJgDuop111CEQApIyVGoZeXJ4h3BHQqQDuHyKWrJJj+IO5RkPoprIFVXYvbjuGLJ6gO5ekpjlSwO5VoP+LTDWA/3lHyhwb6fl56YSYniLElDphAxZsq9qCE87KcyBj9xWRZprtjy95+tG2fC5itnqkuywoBgbe8LOueBL3x0iZBYYpp81UMkmGbH32aUVO7z60SzthyjCi1tR5/hxyFFsKxzVG+qtKQqnfj1qKv8r/u0SlGtKSnKE1LcgUm2b9EER/N0VV98Q5t9k34ZmPoebcKssvalmFBG52ldZsn39jBwmPG9qjGvKM9CXNW0zwSf/0ryN+gD2hVfwmUy+Hknf1dCt/ZwMvji7Ew5IlhvSdZGuToSQKo2RS0TTQ6aIXLXI21N/ZhnIWsvPCHlavh1L1BNOAbEmsfdpHmOexjs0TENDbgJE7U/yFDwqDdDh490ssww6Yx2o1fqYZpbv3Fneq7+BuWsD3ZLeNkE4iCwNgaEeCErQIr26f59vkPr98scqcQlnCVlsmGeJA31zOp6L2kcqNuy36X+yiVO01FN7jZlx+S9cd4d0nmrlc20YAcN2WgV88/VYe0MxPTbrO/J1Pwq/KRiy+d677EtFeD10T8SofD4qDuLyVvub0xEUUBL47nfCjipHTZfgdw/3CuT9bZow3T7Uo3XXqaIa5TUUfxFE3bz0OdWFIbAsB8Ud2wP36dSjv4O9XA1K9xGkatV4TL/MCqrNyqnO3JPgDtxcV7gZnCfDByQUfF89EhvUhTbsZNYFO9NYpM9saiEtTnhH8m0NiR8tqVMSCeElylh8s55QozMvIfndYLn9lT9aPvGdXWukOz6vtdLsGg3BW7i72+qoj1WNbffwnLH7edpSr++v083aZL1nSpcgHjW1f15XYVFVb3C63dWhX361v7ICptrqUtQfacmz3t53ILisxs7XZxHNaIcA+8lx9pH20/lrP4F1xeXVWdM4HeZ/Sbmw3tN7Vu/jm88tXkWgnBbNv78JW03ui0OVvXEmL0VPXy8y9w7BMnUdvTlP08SIoet5tyFu/dRh9BR3QPKDtGjuhxLXdvpy/e6ssNmPqT1Yyv0aE8DZ2S9oY5w+507+wOd+Jh5UmP7oLjqmo385Lh3vyJvfzt1K5JhwV5FivftVH3eQ+pTRO6rBgVv8VzVn8ovxXiMwvrwlPZteiKZAug0UfU4vZgKQF0imeDam9XL+ZpeqBbMqRNSNTp0QpJhwU7YA9KnE9qBOeI91K5MUt7UhxqmeaPqqn6b7RuUX1Zogu5Lx0ZNFyYEd/0PsBvzFMquLJC5d+ck+1h0QphMzkCoMDpdOvCoLkAUO2qHo2nUyqiO3eFsgSgSHK0QSVrYEvU929ca2VmG2d50mf444tCVY/Z6FUoVxsEbqbRTOuGUZlkQpVQAX4yOuWcdM1cycQ241aDtAkr0t2CtFQMIlwiOdDyFzyBnN6m2HeG0E2udmE690qk/Ljle+I4TU/Y+LRpq05zHAa+QjYYR7SjhDarSQhmhcixkoIOl7JK1cvY0EQYSyspxKKGZFh1MqAj+w8mYf84BxbbU6Ycmv+dFwkYTS+TrRhSxd7jI10NdISVNvmPhIYkK0YDygoTBI4xHZ128q4Z11Pm76TKXNtpXiKJsGVzkWz8+BqeDaXjz7j7QQKftZ57dhzgs+0id1h1ozLTUk1pt4V4Pag05Z7s31Za4+NJe8zQj057W0VjhmFOKkK1+d3rHeKn2d3rHPEvd6R0l8LrTy2c/pP2ovqmUGI8TecqwY+v59kTAVpFLaGDFhhEYPjj0UL3PWfr1P5rUXkGY7hmkOKfSBiHnKOx8X7U8Ypyqj3CwV9mTWqUozpuPt0uUYXaVRMApcxVl/H1il6DA5gP9ES/qed3PW6j7e/fpaP3Mei7X9QvXeB1X9WlZVjGeqBkOuG82+6qKcPK+1eE8s9MJDVeEKHDGOOCBZkp+MdFk0Kwl71EZN6ayyl4pQi/7mawx0ri9xRrzLLX8bAv3Wn4OORed2husHFFwjFMxcz4XRzr89b3t7YPQGwGTWyOLqcfYDcDezCQruzJL43yFsEcJbCz71DtARClRnsNJFOFmxukUy5BjKRPD9kFnK2PfgQ/dRWxnYn56HtktMIA6HPrSvEDZOfyg3+y330/rGvNyu2HP5/txuR4sK9bWpZ3Dz+Zy/fW913w6ZCDikQIORgKJckAS6ZzfTFbvZra8uy0UhbQKEnl0UtA5D6GEj2bBwWvjjiUXhAapZNOiJg23MY7bsEyeH7YFLOsNekjzOsIlp4t8G4PNZZojamOiGReuH8btsyD2NX3bH/huzvY+xw/Qg2WNTeO6aEU1UaRjrjgjL10nXuUROhlldb1vPGLxdv6092m+b5A0A3Dvk9MMSuBgqh+/Is9VlN56tZAyhfuLOy0+1TrtCHQKlUlgbQJ0Yctnhqmbpesy/TB2YFnvik1iWLnabpo7mpnF5xbqGXxVbBpV5F4O3SOlopv0BPBcQKJydrtbzN79OrVW3riTdlp5x1k7zfSjU4NlqSYi8/gEQsfGrm1bP7pyjOSItGMlTznZmGlvCrTjpWQwvDrWX4rqj/ZS0lmxc3K5iRkX6mCiGD4dDuIxVwccyp7k8Wu7AwJewcnEk27om+7JNWuf9oQmQ2xmyGJINCqDIRO62ouBAyjzkHoHSSunSnICJHEMhbuFWNo0BNmElW9/f0yb7PB3spwf4KwxZubcQhs7YYy+Kk6ZNd15AvOntXtmg+exz1GlRYXhf/aY5A+K5yRGFUjUkCoFIo1GRUr3hRO5JWAnukALCc6RaMTm6YLWTgNTXhXudpzPv7RV56UJsvEyq4Ob/kl1WWA+SdU3d6hbRStqrZzKKKhsnsrcuFpAvf3oqaxMoIpYPRFU5phq5uplydXzWBux/Y2ivzlciyGMYgKf4CGsOPOSOJ1TOeAbu3MYytnphDvS2dxLo52VJQjxIqPDHfJtrwk/tQFfOd3WEhoHe3iK7rZe0NuS7uaxebkAEapHSJB6qsHdea2jHtjNAvsaPF9Ttw4jF8G8/S0N5w4r9bAOqBzEtd3VC88XuyS1f5WspV7qXiQp2+teZJ9xLpy2Bca4MXSLy4uwdXKO6ibNY52tMBylKLa6oAqehaivUfeqBrvjkHrX/sX1QDFNGj4kgqBxgxHUpa8teOeGQ7FXnzvQOzcxOlPshzd6/IaCXBxZlL3A7xDN5rHIkooId5rXXx228qScS100E+XwunAGMZntwM1YeLv9Lhy/ebtPt+7j0Mjzz3uC//ADPVQxsTb1bbtRLz18hkau5R0Vkz9JoyaTz9NoaJ3XfUNrmqQfKQ3yy4S6GgDUYedoZeX42Is+7/IWg+0bATbDvotFvLmH4VHquuJEIRUpkN6nebrb7yjnGHYFC+7NUH0VoO9L09gO6ZirhZ2xFr0ceDjIz2UyVIKhtasJmyHapKMMsiRM9uWNCSNM6BykXMSk8BIEL4XjT0Eui2rn81y+eJq6vm6PKZHHjSmf8KAzWGEYTonNVAWT3pm6KUejG+J5QtcZivvsytfCWM2zIJMUwcJ4WpZVWJRwS7KQBYnhTVvoJOPpdptS+zDXEWZBgOsSRbncdJYVNYrB6Kqm4I5nL60nN+7WUjOZgc2q+3rOSmqOXCk3Q2WSnCV1lV3pcRW67B0zkKnEluh01l0mjmXZ2eW1u4Efcy9v53m3T4C5d/AfrXXaeFX/Jc3zcYrn+9BkzJssl2lVL/PG5LtkoYLJvTLysKbpUewXdhGGHUvn3k6fuexuf3VmfeM5R4Xq+sUisx1S8svJ92HOWlsyO46ZkDhQhOwIFbsp6ibJzjB9mOk7I2/TVPPr6Nf04ZEY8UIH+6nQt2luk+Z2g0egMOW9LRPXZ31ENaCkOv1c7BtmQJtfIeS6Dxm30AdUl3i6pANvnAMAQonbsIc/LX2uITsemmmyZn9kIk+O+yzf4M2BFgShU2WnYwxCvuWnx75HGpy9Eas72BDDHWnsiv7LPk1HVK8R7bC83zFIPkcPFULv0BeER6ir+jJLHupBJZaoZnjEQDRuqS2qsu+4ZVlM8c1DjxH356ywXn9Psj3+87nUkBzl+zQnT5p0xC8MxCNb+XA2R3nzeD6Q/qQnPcNQGmj/QW4z2jqaFsNTotaFRg2PZ5P1TP4Hy22ZxvutyPtT6HZtiOc16Rdk24g3Gdo+INuGPM32uzxVtSXcPqd1XWzSVtvcqfq7bvqPaqH6F/n2iDsMPxCO3Z6at/EcPrZxWP0p6fS4U5Nai3b+Oj9HGWrQEdEPbr7js6TeJFvZsuFKbK0FGkbUUaAuUZTo76SC8IiDKmLUyQw+rzFo0ryRh6c036RlkhlUIuQDBzYwUNDJUIKYco5KlJNRx1B5m6KVcYpOhlKEVjBp59UJAywrvJ1lSbozgo1SrQVpnTQAzG7LxzT/RvTa0kwLN14p82GNr/7qgYbFreu79v+o/phgq69Em0wKQa5NnwlxgEQA7Np0WrVpEKdWjE3zt/kCsadWRKAE8yLwMs00Q6tIuCL0UXlU2COp00OP08kCwON0sH7Y4SKSqmkfoe36jRJ4MikEvZFqJvwBYqkQOBH61Iqxaf8xdyAI1YqIIcYcs73kP4rqrv3/x6IPyqucZgHE4NyPUMw19YNkAsDIUUw1/9PoxwYPbc7QuaBGH4EyzGsaW0GsLCOlXJth7KRSQXF6u8irZSmzyKvhQKziLdqhuqFLKvPqBKSG4NgTzgRGWK4llilaDdlgomcQiEutRsLlmBOZb6tku8cp+YNp1FZnccHo82fPZOeoVSGQBZxyFDbXdwnEKfViI8zFtxJtGrTtmUAH0GYCYO/jv3uHkq0OdiIhBLaeZiaDKIkEQJMmTQRNlU5m8BGq6m5TNOGwPOCIs9ICbi3ZmsBGBVoMapw+5gQaV+/Vw2ww1Ca7JhKuaaK3lF1T6WSJgdbDvi0+q6P7ytSjaZrOAbSgtRvJHKdyUAFzz+E0lbRpUCZ7qDVTKyOKIHNaNkYYjcsZJl+TleMFA6CpwX5sgwcqaQmzByrlIIzfh6LYGa0eSwRhkaTPhENOFAB9JH1iRzOkDbsZVrELBBxU+7Ci5zSBRAoL09eSrcnkUYEUYJvaxnHaWMK2cbU/CJs2iH6Lqi/pBl18wXxPd7hYGmTE2OBwvjVBUiEhdPgKopwatHoFLoFivcIOEtYkPKQHqvlsKwS1IKAa0xzhTJCGtbcgomFtHQSgx5OT5m0+gHZFB1+X3eDT6GYGl6NGCzalr+S4NT3H9qnMimRrc/Cao7dHosH7o+K/wAlDQ1VnBhagjEMB1xWuLSnoAyqLSjNOw+RrMXKiWAAieZJpYanQ0nyoVOjDajHeZkHbN9IFyXmB+S7Z59vq+236kO9LIy556rXAUpAK2nphKaYFJayi+TAJK+NQ7KRp648nWw0AF9r0g7UxI9bcN/pWAbK0aTL0piqaRxuscdSxZ3kC97l3+bR1nBFIoBZsyn+TPuBsiyOqeEhzM5JaqtUYLSqN9qpmSzMx9DilzAg5rvqHYrroWe5hb8vQxDz1WoAnSLXUTRGdiuaDIayMg4EjSrKbLGnMbyKMlKuB4SgROOp2qRPDT1LLjNCTFHAAsEuyqwa1b3bc9T902IPIYQCOlLPBEBROgUWSOBkUdVqywQTLIRibOq3EEWYmoLbiY9NuxihHqYLnjLDk5VEgkiZPiElQK9YICIchqIWw8mdC3g2q0mJ7R1uJ/tADEMqgwiFNnhGNoHBKUMLiRYSlTle26KDZImBUp5sYwsxsKm2wKtCuyFwuj02FbhYwmp5YXHxmeTcObeZ5JUusm1XOPKPkxFpq9Fbpx2UKF2kuCekjXIy5Qfl7oV9mi6RrAyQVSgFHkjgHGDnNLAVFThMHAsTBY2CCIU+4JmfPcgCEdTKvp8cZdCvwL5KQBHvzfTyIWA08Sjcr/ATRltnkg/VjgwSaMwoUYU2ECjGfBWTCrRiNIEu7FjvIyQTd22PDyUxpDSHlzGcQITUciE28IxUxYq8lWgvoqDALHY7hNDEfwrg6Hw60dHfzWKL1QEtzK2+eHWTnu3mxAOZ4I28NAHO8i6fNtRYIrvMWnpXq5kNr+M27FcHX8s6dLtPKwLuq23Y2epsduf437BYFLtvv2KrobooqcsCXREfi2S6KquTTo3ayq6EGddlApM0dfCXUoJdAQRaxsi7GdY02dSFQapSziOE8IHtZYNHbs0emG1ESJWgfe6K5jKMkFIQ/QjTpVSilbqwcfX3mUIOo0kUEIWY0hmNjmY0hQxv7ngrHexFQaSo5o1ED1LB+o9bst9+7k0I4FUtveCwEpgcN3Eg6l4lTCAdhkpCONFMZO722ZsCmQSU2Eix8BqytwS2i4YixdJtGF3gCpFaisyOcE56SbCpwdgRTIlOlp7lwqdKF1ShM864Dlu0Pw9oZpneFpumhf0UpKpBNufrVV3hujMnKOBiUjXbbGmhgFiXW1OOgDdzgspZCnLbmc4FOqxIbIUYGiy8y+PqYFxoC/Wo8L6Jci00KDYqaccGiUImNBJTFKsBp5wzUWsHFALmYrVSqZWb4OVvGFQGvm7bePqb3lnaRy7EqIPKSLbMmMWpqZmyCOjkgjO4/79KmQdt258YMUJ48upNQYG84AzExxOC6zogvWBtWS5Iu63L4+ktR/XFdbcnTi8VOPymUSSFcDVQzGT5AKgCOA1VHNBEk1SqyQcOQOxCXapVEkGJOTOIaFxVun7v+j7PHJH/QnIo15tQitqedG7lKYXVA5mmnxrNJn07A6nnEgrlJfxGFm9UiO6PeCe2z2+f1ojsKqqMZ7RgoXh693Q0g+o81gqFcWhTPestLL6YOzyzl1GjW6dAJRFHug1npLJpYs9pnR2w7oHp227xOJEfAcDSrHI7bpX0I4hrI6EWQMsT2I8gFLLd0M9V5Pn+CUis2Iqzh+oRiFmePN4tpbBTYrW5GaqmIBbAYMCldFSTtQTgd7PRAmwlaS4LpcOFjN+XT5poMVquaw1mpYAHoeU/jFoXhxS5Js/aMe/uXGnkiIQS2gWamVYYkEwDNNmUiKKp0YtPqQ95AGKp0EEGGOU6ubR6LLKnqx7T88x7VJOXuNK+/6oZTTR7w7JpMPtdJXo2g0MbmSE6ppjoAZ9afDXgANqGH4sz6iirYvPg+Lcu7Xh4rcHMZDMjGtPODmhfQgOhS2fviwxrUnCN0MI94cAY1FUugeWHcHiygh6UdDLWcywDoMcP8uAaEXYe5VmvREUsjo3gYV2stsnDzm+1RImvDzWRZq+lmRdTjW90Zp7HdgPKWtt6Asg7TfrdLBSwLbsHEeioiZTJges4L6zopjXOS6fGsVJ0jfGLcZ7dQVTSpllo8jvNMxxUkk/EAlpGstCuaeWvVuaJVJaC+dS8tL3Ce5jvO0+AcqOrlaeMsnn8m39E3DIHNvm6KXZLnRdOy+OVTjc6y9h2K+vVxU+2R1CkI31vU9FfKttsK1TWqj49oEgOqLg1wHPM8iEMTyt/7og3Zx+CRZ1mS7iBOAomRZRv8HdUfkz9QDrBrk7tEO04qJnb5SRh6JQuSaGSD8ZVUDd1rl/mMqUZGNHog1FgkwTJ7/0ymks/4jqap7dEOdyuYU59mZNKHgJZZ9M/FGhi0T68C2W+KOqV21MDgJkPbB6TGCpNuIUwB9gHy3S6zrnn4V06NrQM+vgk1FfhOpR174XFEJXfhJUED8ys8WhCD/AGVRQWy5SnMKOPj3gNg40PGW1u9LhSwzup1UXVNnXOMrQkZ4yE8pQUbGrMB5kIDH1gwoSFxYCY0poglk3Y40zCiyw8LZn2YHphVH+HGgpGKhaUUfdQqlRz9+zg2Da5lZc2IjXOgGMj7ZJMtZB+8B0wh+168vYEw2AUnU2ayYGZm7BNbAC/2ZSsbVip8M4/BmdiI9/EBZuI1dhuWanRx7zjZsFK24nin2YZN9/aGktPwQopV9fqHg1T162+2GpjJByJlhvLpQ1umWm72bMQzdBqm4hE1xyJSO+72fPnDMhrW/HkUN/Y2nI08u1MVMqPuXIJNdpU5YI5bmMAt7lWACJc3NOzZjk4XLePRE+EgcWnLnXN1OBVgZuzCkN0v0PJlHev27JXDg+iAFVgyrgVxqL9j1v0MGTfeMzSiv0M6OjaQDq60oT6Df0Dymmi49C4uhgsjsehM4ytqr4Te36DUQEdgFJzSBdW9YwFUXPaPBNe/XYne8V4SWQkAlboaMjGkjmGJrFEIwAnQCi98TI103hqtPiiNVR1a0gi6oHxUmuiEDtbD6Eq6G+STNQFQqesgE0Pa4DxcGo0A3NToiGEqiD/rjvNqwRYDotP0eoAcUkvvr9MZEIgVoBPJdxcTLL2cWqx0RFaNS2kjIaVjplRKBF303kqjVYUJ1dUA6SG9ML5UjVZgdtMb2KHct1Wy3ePE/EHTmzTUFlWTMkVQl8wT0Bk42nsoq3c83w2ubVlFEo26EiIppI7OB65RhcQFUMAgbzwVdDrVKIBSWAjeEgZWnvKYtOoD5jStL9FYQFjT+o6dYR4EjJsmdxpTAZFp2lGmhvQhbOjogAEwnNAyDE0gSKhBCE9p0bpchgho4fkBytFq20NJZJNLBxkuXV0Blgy2GoW8GlNzACoubtfFg0cnmwYWQOhGuPn48I3+MOAjL5r0GFJ51b6lRhs2cQbhahliDfrryxAmkGMM1ze6RsWtWrNCdZHvtNVWRL8LVqcicJ2sTbGuEZ1O2vUBRGbjPdKuDVzcUHOuCthSiQvjU5kVydbgkuNJ7arE5AjXD8tsaodMV650nEGpIJHSWCUhQ5B6RF6AdqSaxFKReEBDqSGB0Fgpnj5IPwIraP4s1CKadtRrCYHCXAn1OsJeEXOsIPqy0qbJ0JuqaB4NGuAJzZXg6MP0wbOacAXRF9idOlIrgxKYJW/pwipPWWj3Pnp5Y9Wf94Zq9CAQGivD0wfpRWA1i0+3L5o5S6ZWzUhkrstAG6aSkQ2kDkbqCJoYT5fdMefZIHWAlLrKQBlA/z9/BE6rIJCnQktdXaIoqS2tHs7WwfrhifTV4GhVWjFrg2ejUMQgdhRVdDHVhFN+sEZAWn2NoCwq/QylG7QE8lQqS8E1EDkGTYlkds1u0I89fmZWCsHjHQdNtcXh6My2gSXXWRs7S8Nxm6V7DaV255MNiqFUlhVpiSMphfJSqKSTPeZIrVGHQGM1wCpV4TRMz6iE7kVY3fY8RGeqBk8OY0N9MtrMcPpZPn8YW4kPjszYuCx1EEo4RtC+ACd9LJ10m31KZdB0o/AtWVD1KYc5VsDK3QAu3UJgxU6AQ5V1ewATrGPstwL0GYw1s98GsFbWCjYAeEnM7n8tvW2Fza5/VxUu5/RnW4aVRrF5oiLW7W8o8sBbJtwtGO22iYqtXnnTgM4Sa24Qi4asOXQyXAW60/i3ZSJNA4u0IF6Y20k6sEi8IIVwl6aigYTjqgYJS2ZuW4Y6DCQso+l1ogjrDkJFQappZH3Ueq5a3NUxHXD0ceglnlyl4qhLiiGvUpY+2LxcLWW4ebFS4402k6aUUeIl3Q+Viask9iKfQU2qIKzqWgHBWMNVBcRTFZlGM9HqqNwqZcHUhqqBmZQq03QZW9ZTK643lpK4anOuDT8NWmJVAGovs66KGj2tvWJLN86KbOAk0YZrZX7E8PF2DRrRBOdVVgkOz+utITim7oQWvC9cCPyq0ZQuRCxYL0WQWC8dKSLC2q5iPBQERC4FlGOKb8pVRhPhlKkIe8NboxlNYFKI2ViJeJpRxs/UKcou6CZcVWPYTajm7PVzG30aw2VqChk1EBF/Ltr10aqTNm1BuRLlgWECdQo0xxWEK6yNLAhVenxewEaf2oiAavZTwNFel+5adNCfLRCXU1k3dgEmWDnIGmKoQUOjOoqaz0CrDpk28aAilm9h9ExZ7CtrYQDdNbisBRSlsdKgi84iaUmvlyk0YbRf+gz2VTPaMndtLWfMpBBBgOL0YYS4iikDCTF1YZ+90ehIGf9HZBXFnaMJVQP5c2wj2/BeF4vYNuzKB3yAR+fVsQhJA/MfqhpTkXxMFL0WNfFTVFWEI6go6lfKLnc7vga9leqmCVMeEIlDr0FT6A5VdTXBO+A6c+8f2alUE3NjZjxywhsRqQwNocMOFBwiDiqhmA7ObRSmQznAgF6LhoAEqtqqQxLA9bXYtbSJJGDfTLGGGM5+WI4zykfwzYMB9Ax+9BEHer0+qvkkD+oTdsOD6UPaqxPMHe2S7sOrE0yyQWWzT7L3xRZldZ/wPinLNH+ox5zdl6PbMtngmp39/e3x0bddltevjx+bpvzl5KRuWdfPdummKurivnm2KXYnybY4efn8+b+cvHhxsqM8TjZcw7wSpB1KaooqeUBCKi4aS3qZVnVznjTJ56TGbXS23Ulk4vPwvPYGhfeliS/Ay41KMpC+0ecgf3dP/9TlMyLM8Ei8kHlU3yWuEVk6tpVDTKsrc+K8t5sEA6J/kJ+XlLzAf1Zk+10ufRZxqebVB+FkGakCc6q50Gf3WB7QQ3wWdXoBVkmK2WrB6SXI6aULp7OUvM3JcqFf7DmQJYmgmO6TPY+bom5I1IStwIj97lCnYp83lVit/qPM59WJAF+xc5xIvUOwVWJ3s+qMqqdsLDoifD/Noh+qMqpUGd5tWlNG/uQZMZ/teb1LIFbjVwfAkSfWOaTJb67r8tN1uKid8auDJON7KCI7Icme58W3Em0atO3fsaKRTFjWMIV9CW/ShzdVIXIdvzpo8jGtmtv0P0UTMn526PgVwoZney20LfPZDWufyi3ET0hyMNtfcOetbpLmUTDczHeHVqavDHPNCj08bOSBpxD3abVDIkaENAdMY8R+Lartr0kt1JRPcUAJ2uyJJxX3sF0pIIVPcpCSfZ2eE1L9bL0lP4VGYQqHKcjX4jIhRwUu8uRzJnKXUx3QXmz+KPYNntrj8QV9ajYC4uVkD96AzGKaQ1/abPBc5xJDFG3bsV3oUnKy24RRHmfGr6uZQkjPBXvNJsSIS+7TCiMH2/nFEhP7VmR5ds98duT1e5LtIWbd99Wgx/DskAVymOBa7qDRZdbot8sjtjufsgCG5Pmbx8ytf8FKmlky3+25vU+3OM+OTPIEPPIpLrP5PMkAfux3e27n+GcpDgnDR3s+V/XtfrdrjQ8JusUZFD5p2rnksv04oAv79l7Hjhuhg4wPPYvM+BQnb0FVo9vHomoek1yUUEx05StPI9jvTnDcpk13plYA5JiwLkiqHs63RWUbLdETmXBeLTpJFhChfcL8w0GcwYk+XyfbMva728KYzq7hlTGb5tCvi685kQaYygtJDkuEr7XsUhw+rqavsG/ce3UWJiSoe2/RZZ7PCMtmcmUrLWU4AxtvbRtu1cNZC+dTzvYIudggw8clh9hWCLmJmc8ra2ddVA/bBle9Imfb8Or8WjX32UAgsImOzRcBWHFGs3P0UCH0Dn1BmYhOJmE1gBpfLvbzzfSBkT2cMsqs86w+iavwtkkqcTgfP7vxuhAn58NHBw9qleQ0uMO5tGspprmss/N0t9/xzwDwy22AwJd/fxdKXYDqzYfFOoH6uVmLLtAF9nbvAKqM09oncjRG5EIlWdIVdFqWRZoDDg0uYTWAUb3LZAGXIZC7O2DUWW391z0H1yGt3lRp2RYtDGlMgoM/LP/rPq3aq3GcL2z8POexl6v64hva7Jv0i8CIS3Dil7Wb1xK3/rOD5tO6zJLvXXRdTvVciot0OCew08V+d+F2s/+cpRuRV//VwSWR5G/QB7QrvoiS8SlPaM1mCoZjY0xGFj72RJdbuY08wYGQuGPJTZrnuNryDIpLcDFX2GYm8KRMTPM6WCMjVUpcDWhVz/NZgJVk9UApnE09vSl2Ioz6b0sB0t4SqZe4386SMtlIpyG5hHWBJNBJQXgE+Cj02XXoUXkoxDSXKXcMTMaZ/r8nw+iVMI8bPjryud43AKP262qwaP2IppW3A+Dl5fqw4mM7q18CR5EtZHvoDPIc8CkOfQ4ltbhc6b+tDZvGt0ntocmx8kemgc3fDjBPd2RXD3CZcQlPDJbmsF0WgOSZeEDRxEA9Xaf5JDAy3908ux/THRregpJ9vEKyCxhIzdD2zXcREON3d0mv7/uawqKy6S5XYPCC/vubqmiD7fE+JTZlOa/S9f19ukmTrMMLx1JMW01XM8Z/s3FAszx8/ND6/MaeQV6PU/QKmjT7FlxfPK4R2n4qFcINqatBgxRizG8qwHMJOi+t4KDSfEuOv31JJYelkORgebo8/44EM8klTIWxpfb5deHMrG7gdfm9LuEp8ypXg30WaRueTZjbDrQF991ddLBxSQ7Ty85qiPtU7Pcpdi8WxKEqWo8lDEl2TxTCWXUgJDkgDPbfZ3e3dKGYIJn67y7bLZ/KL4Xkgx6+rgo2qkBglrAh2T1hA2edp4nY0Icqjn3anB7kq/pttm9QflkhCT5syuogRB9PCYJRa1P9oQRnXysAFmwudfA/y8aiDDybSpVZ11A0D9RMY4pj34eafMEhw/8EwYJACoCQJ3gc+7d1Iy/aG2+UMUqt+yNl4d0jVdn1fZLmgnvlmObWo9Q8fTmG93T5OIHqEMGSq9BQEAVByAdAcZs6fOrVniaWl6DMZ3teF/lW5jR8XBFwmFiknshRc7DCji67pqUiPZtD88jYYb+vprUMIVdtzqExT5K4N5Y2t9K5M2aSzqHxSXOv+SO+2bJ6/5Ah4qHbxnXYfvXcB+nbMwnSw1X9R4dZwL5qDxACm8xC0ry7lis4rxPhmE7g6Rx7UMWCQ98m8gEGNsHF8XNalpV8rJr97rHJvNnsq0qFqzHVsTvJAybzedkudUAPbhgijNr0oJGDTwfS5dZtrOxLCfTD19nPEfWBZCWR2ITljjuQvnZ9r9h8HxLm3DR/Kj0nwOM85PftNW6+5tgYDV/r+qJ8qfY2B++0aXWei0/bmzgoR/egE5ewp8TPIQZe6vc4LE8PVl7fK89cDknrQlGQn4zh4IseV09ZGHLeIHI+STTp41cnj5bEp/9mz+UyzRGFB8+J/b4uvIQsmfv8vlhxWy6HIWW0aiIfPsXlhHcbO0Q+4D18XsJu0ZnRVQ4fDKLfXbld7xuYXZfgviJ6n+b7Rrx4LSWuq6cMkdb9O0vHwre/KLNP02XeFTT0i3iAsv+6fjO96EDch6sOGIkpC++hWJV9Grgsaw8XamqbmKUWzS2y8WhyMwuVssWcotqhdPumHHIr2S7iVuldztLAxiY47JCQ4EL8Dkn7ZX1ADUVoCDQ9MLkq1HxMm0zcCKOflnPAfUD1PhOw139bH/rMYYpdsMhzC0GmiZMRpzwDJWplsuUsqSSUUeol+hzVlOy2HT+vFuVpNIDHgHYAqCMDw96/u3RDmqJfu7QlyyukPfV8jG3KZle2q0i0AiMFH4oCkn8YKFtcR4J0OJi9YRwVDqs3S8rA8hZtRmOeubeUIp/SP0PIpeMn/UcHP08f1x7k5b6leIvrJi31um9Oc/cmzQGnGJfg4BcrtsJlYvplXYgL2Ige8vsiz20jOjZq7C1CbMQs5bmUo8v7uS9FPj4+TDMPZW8Xs0pOSYjAwZpAQeQ1ZfBEXuX0IcA1pbAkDhtjbf1l/xX7fY341IV3d0NozykMo2ouS7Yu/rkrhZbtv7lipHs9/R3KH6TQrBCBM//km4E/T7BGVJ6WEYHJMAu0nzpGNka0tEGoQOVl5jAPfQnrM6CXRbUD7rUyn11OSV+3DuBECNrBfl8p7KPAPRjmvvCeCHTgoUg5ed4diNPtNqVgAkZ9Ic2e63WJ5C3+4aODOyUraiQxGr+6dCbXV+GX70jjTDG8P428wrqVjs+KZsiRe/FV/Zc0z0WrPn5dbq/5Mq1q4IoK89nhjE8CsRq/ulw13ZPHHKFbh0KSw+w1cux56sySPQOO1rNCdf1CspvdV2dOL0FOL51sZio+yE6/uF0UBu4Iu4USKOomyeRYkux3hzqR07KVWK3+oz2fX9OHR2IHCqHh2e8ObbZpbpPmdoONpdBsbII9v7dlwvNpPzjUDiXV6edi3zCmTqgnSOHSDrvWSKEPqC7xsCTF6ZWSvXkDwVdhijWO3CHXdXguYaO149WdCeeqK9lP6RPPirxJ0py4EXiSofTuy/C77j8QdScP6D02YVk95sPaQbukrW1dJpsWrlvUjsOkXT8nNaIkx0c33SOhWKXf6wbtuob/a3aWpeSw3kDwPsnTe7wM/UjeMX59/PL5CzwSnGZpUpMNi+z++OjbLsvrXzb7uil2SZ4XTetEfn382DTlLycndVti/WyXbqqiLu6bZ5tid5JsixPM66eTFy9O0HZ3Imbv2Fpxef4vPZe63nJ7Qwzc+TGOB+Srf0ffxRbusfMB3fNZZcy9OhHzv4JHVpKVyPL6OCUqbjvNW4QRQC783STkEnNOTrmiVurjo9/2WUZiT70+vk8y2ZKJpfRbxUwRolp/ucIm69vr4//VZvnl6Op/3tFcfzpqfQO/HD0/+t/OBdPHF2ix+Zek2jwmeBr0PvlGPWMENc48xwmMhu+L5xzjptrb8n0Zmy+d4Gh4/uzMspvw6PTqypKd+jAwcWybYdYTUF3WhGp7LBSrxq7DwkcnzL0V6EexuyqzNrKHoRXncalk3ThWfG/SXAEZWyjvRftnYZz6fEHmSYi/5iYBl1klho0KLr6VbZzDt1Wy3Se9W9dNGIhHiExv0oc3VeEuR58vpOzbx7RqbtP/lJD633bJt//ubH7HW/OU2xb/bNrXv9wYkf7zqdzGYXb6Bc+qKmwuHqNUsvMN6AaEn//Riymei96n1Q4NSPicug8LN7iPfC2q7a9JHae+t2izJ6c5sRXYlVE4cn6auPyiqPDj1+IyIZekLvIu6Kg/r3fF5g+8zL7It+SVik/NJrhr9AyDRTvdbPAc7BIDD23P6C1k/9kIGa7hEc9kyfqc7ec/HV3Vn/L0r3uc8BFrg1g0dc8CJLOe0YxhJPCwku58pjY+05qnuvpolQgtQfwGEsLt9yTb+7CzhkA7n/iYkNBAHq0/5o40vbVoqLHMsbGgLuPeeD6zMkCaFxGkYYOhBQv0MpZ6hpaesPe+T7eYw45MLA1rEtcOdZnmSTYB33P8s1QOQzYcrurb/W7XWuG6DhnOPCefbtbC21D42AioW8aG3Dkqk6rpL/C6dTc2b9jgQZ4bQbePRdU8JvlWC1GPVTNlP8lCH4Num/aRFm1nT26Qu8TzM2/Ykcze0OszTwi/kJEnEHRTTJVsDN6nMiuSrclQWbuZ6Cw+xjr5vPiaE9GC1wKnX2vWualwRsdyTY5WyKeX8PbPtZsorWfsfhLBeNn7epP/EN8HsdNlm9FHjUPGpz7QtRWdvS3hUPMObaqOLO/XthYq58qNutjxs/uwPDGWO+fooULoHfqCsjhCxVjySM0erWfaO2i6ZaAPatXxtM2AVSw/o9sjzKaNshE8CyCcLsZZszefj1WS1+0533Nmy9ObXXfvg3uEP2BSwbPrXmCPP+V+hxLpSZqQjU6QlBZiSRyC5cXcgWMN3Yru8wUV7u9AGnMGCXBalgUu0mOOb43Tm4J2VR+k9nl9EMXmnXS2xjx7FPeMyFX+131akVdY4h4UYZ3fPgbuqr74hjb7Jv0ysPFxg2E2Wbs9HcKED78XUifMKXijarycEeAdTPI36APa0ZgS/nz89rg+FBlaYI+LOTbhZSf4IxvOpkJ54iO2tVjc4N+keZ7mD6Z5k515wvY1sZmFWW2Nj21gXHYaPavWuPtQFF4bqiRfxCm7RfuTEvvc5GPUlaafrdBJBa43A13YvdKn3NdKvp0lZbJhTmdGnLKTCoS4ONj8PugT80+oSKCtLOG0Qme5HXTIgH0V7ipv+VzvXVfbDt6KcV16ukP51tch/eNQyYrGdXqozNXZAPRblNRuK5kIWCQulx9QfCpQpIFCODfafVYka8fiVb5JSWN/QGVR+aGw4+CFRibvxL5cIWRl4HBF1YW2b747D/ZDziC4DdES73sdBtfppsBr+O9vKnKHLfpBDGuH0c8ezK/v79NNmmQdiF34B2xsv0v2+bb6DsUqtNzb7mEJhduz2Nzmswe2/mKWW44OONEMcDhQ/K54SL0cs23Gm+7Op9XmQE+M2VvR+97GEiTTdYCX/+xuGdhaROY9E+4cbtIl2U1GXDs+u/F9Zq+deDbzU5yjtZXru3uwwertRYRzWuzWgOLGULR7mkn2e+EPLpJ3vo3GvsSoXjfC9KpBHn4SSZwYxztYrU7Y6bCc5ZdidBib9zacMEUU6oupvjF87BXQkNGdk10xpAg/zIy5w5wNJgf9C4+zz1f122zfoPyyQlNio7VwAfjole+LEaDxZj+CGW//hNTqYxHS52hub416dQNa5opsuSBQLGs+6nZKl4LXDrwTwrz7axxUzXSMkLbYDRCA2KU33SjCTtvVnM0/8UgGFmTZX/q8YRs23vYjwjqfnalHXbAFwScMPLNAxzz38HCbtcdbo6zFLvKtBx/H122gqDOWx40VcWUsTi5AT7JEPx7TFjLj/IV94MFDnUx2r3NHfPYn6emI/IKG0UFhPGfpszk58Snrdtv2oE5NDxK7ldxlCxs9uzDrETYYQ3fDvM5c+GDJGyBQO0U32p32fHacx6whF1Wv6tOyrEIPzA4biZvNvqoibI22yg8fzCbtAlO/RXBbkPmK98Ygzek1XxlyHtiwavXSFdGqnxuQyRpmhqe790A64vV9nM1clz3VCR+Oc+svvj5KDhbOHUaBqYNYwNmi8afn8aaHzX77/bSuMbCe0LE1X69MJI8MsBSy8snQfBGOrV3fOw+qbojxd9CsEC1v0ENKA+SEu01isLlMc0TbcboG9F0PrrD5Ruvl3ufYvEFTGTSEzXGcyPQZQ0pf1OLQOclVHgH4lNX1vonwuE63uHif5vsGqS1h6NDZtd8T6Urvik0CzT4kJ9cB2FXHAa0qyAu0T6QdpzNHa5sBWbfyEJSeBLPxnOmKPHxaHuIxIRKG4txbg8m6urtsVmMyG9gt9ERhG4fRYUkWBapBGA0C5xP1OH2kUTpXsmy3vJlS7zM37AXMaQYA3OD1HXmF/uwxyR+83DgKVkGwlFk9bdMpVTxAlJHFQVpz2uQTvvAjKSoK6KPAff2+THct00MSEcwLyyhI2yKjvxHT4hulSGLww6xYAD4C1COA/AkZFBoeyEOrbUav0wh9xgk12JbhtzXKZA28gZ8b/HC2k+Mmze28SlbRu4qtdGkxZpCSQX3emPLdulS1+dK908rdqm7lqc61MVHl8/qr57u1IhOvLWeIyZTOvbG81sUhuPr27Y2L9gmB9D5Fdi9gKXiGGZCR55/3BB9eDkmISdgOadtGzg6dOFDt6xAIVlafAXBVNEv03fiq2JV6bfu8EkEbsnunmDKyv7mjZJd882HnZbbKWHBgOIUasHIuUPCFBhmGNv9TNFWXRbWL8CbsdeuaTIbn7iPeR+VbIRzG4fCdD7aeJxdFBmFByCdxaJ9utymFTIx9D5n/dYmi7AufZUWNYjByf/HYp4eMM6vAjsJP+wL6i9388Umb/qv6L2mejybW58x9zJ1GuyDpHsftp4qRTo5PkBsC4O0o4T2FmBevQlmb40p7KANbzgrV9YspTDJh/DL2wv2MeSM4HiKYq8Hw+zuuYt4UdZNkbJQzn6lQG2mtil7fX9OHR2KTCj2cvJp909wmze0GG+CQir8tk7ALNr+ipDr9XOwbxvZGryw5EUPMKPqA6rLIawlDfrGNea7GSIBxFvq+HkRgfhkwvq/Qm+gwlzqt62JD3+bnDpbddcYQibspF/m2Df3QE/Zy3aLs/ln/6f0+a9IST/ZwiSQCr9gm1/k5ylCDjnDfwyWTUBb1pg3kKzYELk5VfichJ8DwjZfg7yTGGA2oIs1BLF5eN1WCW06GTppv0jLJ+BoLZCDGlHd6TwamYso5wlN2AhGhfmHFDVwFxZoU8OqEgYYVYtoA5+uFy/iWZSsoJ4iU9gTgI9Zp9TBqI3rQMLgIDGE/tiUXWLttwe7LLEgaY6fLInSfJ8EPEPRG0Y6K+DZO+GGqE1jkvNghEZ7VVmgFyGmDX0sS0K9PBTdygO9VwmYMgtvbHSVwmJDMbNuxn+eDkBnAkaCjCkStaE1d5Gl3EEUpco75Dwksyweu1UyD2kjU3CyIfpkFPXzsZEmKMWWaCZAchVvRqoqw204Y0sSJdi91XmPUCrJ+W2SJ5QO3RfaoXYEt6iOz2M2jh3jU3GJo+PikZ9NwLG5Fy6oDFk85p9aXOiea3lbJdo9T8gfT+OYEqefPnr2QWtPDZXDAkHAYni6+lW0U3L4xoK3JmYDRh0zuglur4TDEdGYbcfw4i4Xp4p+zEvSfJoERHMda0ajqwNVOMIJivCtK1ERqnxU6xNn0Azg/gOM8GJlszhpmNXNDZ4mhywE6i89kmKDRd6YpDBtinLM+7PdVT2SUQdIVzaONij7VdMZY6Jw2hRFG4wRcg2XxQOcB2xhXJC9uaEhgaqOFaYPJs41HP8yCHy60uCjDxA7Atpo2zdgHBQ9AjjqEunOZcxoiIsW6DZAVeA/Y5FiDdHFbM4AGjNS+bhTBweV5gUCKJ4MzuH4HCTwuLPtB4I4PJA/ATiB4aqjjq3cQoBuPmZk3NpY+bLbUpsa8R8wctzNWckiRnk75VGZFso1wXNGw9F/myM8COLA+8rMGGFzhipGCPqCyqDQj1tJ2hJeTk0NMegI4EqpktWhrSdH2DRQrfkZAvUv2+bb6TmOJrBdPnJi8d5pPeQJo4mt0KJbJtLmxOIJm3tiYGTP2WxqrAEvaNBl6UxXNYxTMWG1jkPzzbWXM2/5MDW1KfJM+YOUvjoKCvAG/WosxXkRpBVVcvOnSngCGxDodijGhh05hl/mK4LTwEeZ5zZHzEeZVAIlEeM6SZsV3RwcRBRGGr08BPENtDgA4SXbVoB1pi7v+hw49I7nUgGPCbEgiRYJyTIYjppo2jctmiICqtmpxyp0JXC2o8NhmxpXUjjPiiMonSdB/ngxL9m0Zjp2uMmElzoSamzYC3x0Vm/7Qg4fSyGNK93lGICkkGRMmA9MNELZQ08A3QxjJYGBFLHlms2SDrWUN03J4mtc4OWJo8RnT3WhTzfMlqznKExzfnOcrC4xzylLnBtPvhX7htg4oESklGejHJwWjtkoHAqJh8W+C0PJr//nhM/fK3xo4K/AY0YApxlPTLDEAnz5hJhDNe6ODq6JNs6ri2DgCyRq2uvLmsz7MW6brNUDAg6v0Bgf7/QmYIbY+B2KJ7ojk60XOj833VUFFd1Njaagsec1nXtg4X/RZA3gcb2wsjaZ13daYeT/f+57GioBmeUNjJThbxe2MRVDmfi9jUZCxfYOFmu4O0JhDaUDmR5sKZJPd/GEqa9PKLWU8iIWWuYj9OgizNTOQFjNSB2CbCqyZ9kSJ6VT+QMk33vh1HhCR8oCT+dz3aazRUFMrT09PHQompl4Ryp3RJI2CT3/mejlUzGxaHNGwrGlp9tvv3ekQnIqlNlx8Hun5RmS/z2NkSImjyLI0bNo0xoaps01Dh+JKqJRNkQufDGlFvkVtzLg7LN2m0T0GzFLLzTkkzIeuTmIA6H3CdLjqqzsXsPoqWY1fSBFOcAlYtT8MKzUfYJlGs75YmeGUq60loGE9SV4FLkYLaQ0Nv1FkvQBxHCRmxcgo2+KTX15VK16TLz7TmXkC7YFhKuEqILVyB88iZmkBAFlbpBVBp5uE3T6m92u3RwvNjRcAksvMeCVY6iNMt37vGTw7PjshhwkI192OvimWw8RfiuqPNuL5HYltq8XDQMo1IvN1FvMylNfJCwszJE6CqrHONo08UAeiS6pchMLnRBiuaFHhZrjr/zh7TPIHzSk0KSfc1mPqvADkq6GXraeZFo6DJpyQ0eeKBU+hzhFlmdUeOqN0HWZxfahcxkiGoHB59HU3Beg/1ggErgxIafOika2ATq55kOhwrUDIEwuVXG2jyTGrXXTE5Dqs4rpwuIxF9Mfe0itWceY7/Zp1DauMedeuXquLNRz8VYz4M2JkNVOuhRDjMdVaFXBmhIrdaHjYcDg8ANhNaaKDYRWTkoVA4jwZWRQwF7skzdojtu1faowMhFx7Ml9nmfa25ckSTISgsXY27ThQByKJ1ihCiXOcPNk8FllS1Y9p+ec9qknK3Wlef9UG95Tz8JsnUPo8G3xjybQSKrn61GmOsgD1t0EDkC9010eqcVQ55sXnaVne9fJYgRNnULZ/KR3ZngGSpbG/cCRTg5MowREPOEtESJbe/UMpx7yQbDdJ6WlOB6M55lLBgKX42zScjAYcoTHmXNp4miSZ33yOEh2kAQ3pOE/PfPp3kZVYz3bVgmXBTZRYD+ryHUExbYFh3aGXxMeh/a1BPk/UgTyeAEstesbJyKGvfFY2zVzRGsh/wjnzQugC52m+4zwNzoGqTp6zYosu06puzpMm+ZzUSAIqyXWLmv7KwnZbIRKLniYwWBhScBXRLnl9vP1cYLAkn7MxG6oBTyFfQO9klPj3CRD7/o1BE/MxiMtZlqQ7oBSJQl1cS2Auk40OKhXHJkIlcWFRrUpSFaLlb8eaRraE2dM0ZREk2VwKxnxSNXSTUSqGTYTKGdMtQEYisEAYo9/BNm/j6NhxHh/igksY05Ul9SQWmB4iLctgHpKgcvpUcxH9a3RSAX0CxL4PeWdiflPUKR01JPZjElRAn2pRRIa2D0jVPbhUsKCRwALEbaB5uRT6GWJPX5yzYavBFZ+sKsYFVeDDXwDEQDoYb+DjaJaSCG9DqQQRyDRyCG9nmcQQA7NKAogEUNFigFpjx+PDd8r9j08HuyEfwtR+hOxCt2lGyI5CPUJ2IezMQ/4QoAkY9Yc0uJwhKJVNKfQtaLAQmqQqg759bVMEfTEdLIImqYqgj/3bFkHXpcpiaLKuKEJhV1z/kD9YWJ+oKqoPYmBTkKIINXNb+fu3OBQ16JPVdegjeVghWVeYqSj7gti3sRVz5T5Z3UEphQUOuEeM5RGUTQVHUPYBZweDr7fzRvPuNswZRjfzoGZRHPu8j1wamwoWxj5RZFWWwkwwacpy7AyEdOdaLkukAEsU759blavsalyqsjzbzsZcCIZL0oBxvARtVcrw/gZc0JCsLKujsFVgfz9VocE+Wa3C/h0bU3HyKVKpSJkEKlY+HWtdtK5MQ2EOpYhnH9VlipRaCcTzns7y2EhiJ0PqUjx/qEstAk+nFYM/wOYoiVkGq9ItCu5OIUnFdd+hQrrzVlacFaadSVOWYGna5S1a2UzINKCtEMmcSh/9yrryRyqDBKNP3kUDpaUYHKFJF6W3MEYhbAp3KpTdB9WVzdIZRGD3jh0kUU1qRApD6XAvYLzn4nT7jvFiM2TcnJuhEV368tnaoY7jJ2kjYMwluN7bbMM3cV+Hr4Z9FXuntrJ+HUHsyik88212KS24sq0v7453rss1BqjUFeC8i63Y3RdNpeWtgTEj7PIPqmrnhNdWlNJMUE1282DMR78GV3L0/d8Nblq5mgCVWmh5L6KVmv1sqrJZTT79lOwO3Il7BEB3heg0vZbdEaGdln7RVBLc6xjzjikx27ffh9E2b0c0VetaKsujov2ejNE2wYQa+yrsElHDOnxc2EgNtXlbJds9TswfNNDWUE+hAOsBzaPi/R7W3bBbJldXolGLKu6ltcKOHzWV5Lf42nz9p3iVJEO4voqU4tAqOABS04oSzRRQnbQVx13QO03nhMg07SnvzNImZb8v1DeHFhP2fzVty1NO0cIeCvOoOtkr1jUyl64Wlt0Kb6WkHzTVg3a5h5wRJxRDi3Wb75o2BQLCRWpLK/WEVE61466prU0Es0jV1x4x6NiAFNEVJB4FMOtHF3grrnrAcw+sdgSCiI4A7QQUIovtFJhj6snWg6xGP5VZkWwNHhCedJJqT7pe7moiHUdR1lmkjF1l+HRNm1tMilV58WCMsu4CYeyqg2d86NSNT4lWcfUkVaCIXtUJp6e96GnTZOhNVTSPhjryhLGr2p2vwAVOMznta9GdsFJXkxJM567ljokJ7touLVZlqVdnnAUqKy0QRm/b2fxefX2YU27qSo9E8cEsHNDrMg5fI1R0PJV2x5yGg2oLUuqFF0/MDfKPCYbqs0fguNyRKt9WpR5Oy8H15on0AkvCGqvIn/Mb8vWfo1Szi64lnKqDawvSGkDKHQgaUdp9NipAkX9MiNrWhvqLZPHbe57qEvjccWdB1b2ao4vUIxcB+lCZ7uSwocqUaqoKs8eeh5z0Y8whSlNVgWaKAWr6SnbP1Oo23SA64ySRO5fEVLlPWMj/2bUaf3ZX2bgcWez2BY4fU68n+z1WhUmRuprS9ANcGyl9nVx67IrN5dLt431Y+zz1GaKvmBbzdvL1NPs6tfQTqWV2L6c6xD3o/VUR27W3spltVaPSyCTosATFpFiYsMJyAHGoxfVRxnmxxYsWVOjxq67K8oWQMXdsxx9/fUTdxspA2DHaeJYKqyI5Qy1tE/SZr4J89YRWgf2uUwF8ZWbkwabFUYUUdlilCH18Yrkawn2VsQ5DgkkRwhUURpN9QlwVsDdyDEpQRTCcQg2y0Ru/xlHAiCobHcDUk4B6ZmX0Vk66caY2iNrgqDGM4qwWga2Vcby3afuASs/W0nw0SUOFNaEnY1V8BrPX10gIgKipuy5UYuQlkPWU2KPiQJQ/oNKmWICc6NIdwlZu5qum2qqrjzyLITFe9ZUh6HTasItbB1dQvGrI13BMtVEWfI0S5tjTRESOi8p8VBWCo2VVAwbr0qnHHN0LribgF5XSbNQF3UCFuE2AInsluasnBEGzq6QbYYDL28rRyBAGKcJ4NLdhFitmYWNMWSZTySI2RqytlUomVIJdF4tQUaOd0GeYTAGz2wkp9AigC314Eq4i0kX5Vnjmq0YJ3PX9MV+M5bgmQAa0HreNp8FPttX35+mcG0rXTd5VrwGI3PrUmGri4zTodaSJ6aCsUFkqa1NK/kgNF5OmOZKYCgKiBui1ZAozoKqk/AqAWEeWYs144h4fMCJK+cz9tJgKUXeYiuSX1PVKMry8rqqgvG8ipll3Pgd1xzLa3PsdlpZb+Sj4bOZ7KjtFXhMn3IY3poe0Vyf0LY7uA/7ZFFXygN4XW5TV7ddXJx/2OPcO0V/niHg8BxavMM8ctY+Zj0x7mqv8vuhf2hYk6kn65GH+1STbpElOqya9TzYNcboRT33+cHz0e5Lt2+H/M9pe5df7ptw3uMp41pRxrgvyRLeu/Fcnksyvrsu23WNUAYuZ4iqg6/zNPs22g9yXSVYLvUbFgrz9/Rbh77QtG/wvevg+cPqtyC0Zdeobniz/iHZlexL5Or9NviAf2T7V6B16SDbEH/olbWfdKibmhuDV/uo8TR6qZFd3PMb8+CfG8Hb37V//PzbJ+iycFwQA - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.Designer.cs b/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.Designer.cs deleted file mode 100644 index 5331ae78..00000000 --- a/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] - public sealed partial class InitialChoreEntities : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(InitialChoreEntities)); - - string IMigrationMetadata.Id - { - get { return "201602080646217_InitialChoreEntities"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.cs b/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.cs deleted file mode 100644 index b3a1e8a3..00000000 --- a/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.cs +++ /dev/null @@ -1,151 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class InitialChoreEntities : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.ChoreGroupToMembers", - c => new - { - ChoreGroupId = c.Int(nullable: false), - UserId = c.Int(nullable: false), - Id = c.Int(nullable: false, identity: true), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.ChoreGroups", t => t.ChoreGroupId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => new { t.ChoreGroupId, t.UserId }, unique: true, name: "IX_ChoreGroupToMember"); - - CreateTable( - "dbo.ChoreGroups", - c => new - { - Id = c.Int(nullable: false, identity: true), - TypeId = c.Int(nullable: false), - SemesterId = c.Int(), - Name = c.String(nullable: false, maxLength: 50), - AvatarPath = c.String(), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Semesters", t => t.SemesterId) - .ForeignKey("dbo.ChoreGroupTypes", t => t.TypeId, cascadeDelete: true) - .Index(t => t.TypeId) - .Index(t => t.SemesterId); - - CreateTable( - "dbo.ChoreAssignments", - c => new - { - Id = c.Int(nullable: false, identity: true), - ChoreId = c.Int(nullable: false), - PeriodId = c.Int(nullable: false), - GroupId = c.Int(nullable: false), - OpensOnCst = c.DateTime(nullable: false), - DueOnCst = c.DateTime(nullable: false), - GroupCompleted = c.Boolean(nullable: false), - GroupCompletionTimeCst = c.DateTime(nullable: false), - GroupSignerId = c.Int(), - EnforcerVerified = c.Boolean(), - EnforcerVerificationTimeCst = c.DateTime(nullable: false), - EnforcerId = c.Int(), - EnforcerFeedback = c.String(), - IsCancelled = c.Boolean(nullable: false), - EnforcementChoreId = c.Int(), - CreatedOnCst = c.DateTime(nullable: false), - CancelledOnCst = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Chores", t => t.ChoreId, cascadeDelete: true) - .ForeignKey("dbo.ChoreAssignments", t => t.EnforcementChoreId) - .ForeignKey("dbo.ChorePeriods", t => t.PeriodId, cascadeDelete: true) - .ForeignKey("dbo.ChoreGroups", t => t.GroupId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.EnforcerId) - .ForeignKey("dbo.Members", t => t.GroupSignerId) - .Index(t => t.ChoreId) - .Index(t => t.PeriodId) - .Index(t => t.GroupId) - .Index(t => t.GroupSignerId) - .Index(t => t.EnforcerId) - .Index(t => t.EnforcementChoreId); - - CreateTable( - "dbo.Chores", - c => new - { - Id = c.Int(nullable: false, identity: true), - TypeId = c.Int(nullable: false), - Title = c.String(nullable: false, maxLength: 100), - Description = c.String(), - Url = c.String(maxLength: 100), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.ChoreTypes", t => t.TypeId, cascadeDelete: true) - .Index(t => t.TypeId); - - CreateTable( - "dbo.ChoreTypes", - c => new - { - Id = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 50), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.ChorePeriods", - c => new - { - Id = c.Int(nullable: false, identity: true), - BeginsOnCst = c.DateTime(nullable: false), - EndsOnCst = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.ChoreGroupTypes", - c => new - { - Id = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 50), - }) - .PrimaryKey(t => t.Id); - - } - - public override void Down() - { - DropForeignKey("dbo.ChoreAssignments", "GroupSignerId", "dbo.Members"); - DropForeignKey("dbo.ChoreAssignments", "EnforcerId", "dbo.Members"); - DropForeignKey("dbo.ChoreGroupToMembers", "UserId", "dbo.Members"); - DropForeignKey("dbo.ChoreGroups", "TypeId", "dbo.ChoreGroupTypes"); - DropForeignKey("dbo.ChoreGroups", "SemesterId", "dbo.Semesters"); - DropForeignKey("dbo.ChoreGroupToMembers", "ChoreGroupId", "dbo.ChoreGroups"); - DropForeignKey("dbo.ChoreAssignments", "GroupId", "dbo.ChoreGroups"); - DropForeignKey("dbo.ChoreAssignments", "PeriodId", "dbo.ChorePeriods"); - DropForeignKey("dbo.ChoreAssignments", "EnforcementChoreId", "dbo.ChoreAssignments"); - DropForeignKey("dbo.Chores", "TypeId", "dbo.ChoreTypes"); - DropForeignKey("dbo.ChoreAssignments", "ChoreId", "dbo.Chores"); - DropIndex("dbo.Chores", new[] { "TypeId" }); - DropIndex("dbo.ChoreAssignments", new[] { "EnforcementChoreId" }); - DropIndex("dbo.ChoreAssignments", new[] { "EnforcerId" }); - DropIndex("dbo.ChoreAssignments", new[] { "GroupSignerId" }); - DropIndex("dbo.ChoreAssignments", new[] { "GroupId" }); - DropIndex("dbo.ChoreAssignments", new[] { "PeriodId" }); - DropIndex("dbo.ChoreAssignments", new[] { "ChoreId" }); - DropIndex("dbo.ChoreGroups", new[] { "SemesterId" }); - DropIndex("dbo.ChoreGroups", new[] { "TypeId" }); - DropIndex("dbo.ChoreGroupToMembers", "IX_ChoreGroupToMember"); - DropTable("dbo.ChoreGroupTypes"); - DropTable("dbo.ChorePeriods"); - DropTable("dbo.ChoreTypes"); - DropTable("dbo.Chores"); - DropTable("dbo.ChoreAssignments"); - DropTable("dbo.ChoreGroups"); - DropTable("dbo.ChoreGroupToMembers"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.resx b/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.resx deleted file mode 100644 index a8808dbb..00000000 --- a/src/Dsp.Data/Migrations/201602080646217_InitialChoreEntities.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201607240433104_BroQuest.Designer.cs b/src/Dsp.Data/Migrations/201607240433104_BroQuest.Designer.cs deleted file mode 100644 index d7594ba8..00000000 --- a/src/Dsp.Data/Migrations/201607240433104_BroQuest.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class BroQuest : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(BroQuest)); - - string IMigrationMetadata.Id - { - get { return "201607240433104_BroQuest"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201607240433104_BroQuest.cs b/src/Dsp.Data/Migrations/201607240433104_BroQuest.cs deleted file mode 100644 index dcd1bce3..00000000 --- a/src/Dsp.Data/Migrations/201607240433104_BroQuest.cs +++ /dev/null @@ -1,76 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class BroQuest : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.QuestChallenges", - c => new - { - Id = c.Int(nullable: false, identity: true), - PeriodId = c.Int(nullable: false), - MemberId = c.Int(nullable: false), - BeginsOn = c.DateTime(), - EndsOn = c.DateTime(), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.QuestPeriods", t => t.PeriodId, cascadeDelete: true) - .ForeignKey("dbo.Members", t => t.MemberId, cascadeDelete: true) - .Index(t => t.PeriodId) - .Index(t => t.MemberId); - - CreateTable( - "dbo.QuestCompletions", - c => new - { - ChallengeId = c.Int(nullable: false), - NewMemberId = c.Int(nullable: false), - Id = c.Int(nullable: false, identity: true), - IsVerified = c.Boolean(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Members", t => t.NewMemberId) - .ForeignKey("dbo.QuestChallenges", t => t.ChallengeId, cascadeDelete: true) - .Index(t => new { t.ChallengeId, t.NewMemberId }, unique: true, name: "IX_QuestCompletion"); - - CreateTable( - "dbo.QuestPeriods", - c => new - { - Id = c.Int(nullable: false, identity: true), - BeginsOn = c.DateTime(nullable: false), - EndsOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id); - - AddColumn("dbo.Members", "QuestChallengeSize", c => c.Int(nullable: false)); - AddColumn("dbo.Members", "MaxQuesters", c => c.Int(nullable: false)); - AddColumn("dbo.Semesters", "MinQuestChallengeMinutes", c => c.Int(nullable: false)); - AddColumn("dbo.Semesters", "MaxQuestChallengeMinutes", c => c.Int(nullable: false)); - AddColumn("dbo.Semesters", "DefaultQuestChallengers", c => c.Int(nullable: false)); - } - - public override void Down() - { - DropForeignKey("dbo.QuestChallenges", "MemberId", "dbo.Members"); - DropForeignKey("dbo.QuestChallenges", "PeriodId", "dbo.QuestPeriods"); - DropForeignKey("dbo.QuestCompletions", "ChallengeId", "dbo.QuestChallenges"); - DropForeignKey("dbo.QuestCompletions", "NewMemberId", "dbo.Members"); - DropIndex("dbo.QuestCompletions", "IX_QuestCompletion"); - DropIndex("dbo.QuestChallenges", new[] { "MemberId" }); - DropIndex("dbo.QuestChallenges", new[] { "PeriodId" }); - DropColumn("dbo.Semesters", "DefaultQuestChallengers"); - DropColumn("dbo.Semesters", "MaxQuestChallengeMinutes"); - DropColumn("dbo.Semesters", "MinQuestChallengeMinutes"); - DropColumn("dbo.Members", "MaxQuesters"); - DropColumn("dbo.Members", "QuestChallengeSize"); - DropTable("dbo.QuestPeriods"); - DropTable("dbo.QuestCompletions"); - DropTable("dbo.QuestChallenges"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201607240433104_BroQuest.resx b/src/Dsp.Data/Migrations/201607240433104_BroQuest.resx deleted file mode 100644 index 846a3493..00000000 --- a/src/Dsp.Data/Migrations/201607240433104_BroQuest.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201607240450423_BroQuest2.Designer.cs b/src/Dsp.Data/Migrations/201607240450423_BroQuest2.Designer.cs deleted file mode 100644 index e4f420cb..00000000 --- a/src/Dsp.Data/Migrations/201607240450423_BroQuest2.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class BroQuest2 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(BroQuest2)); - - string IMigrationMetadata.Id - { - get { return "201607240450423_BroQuest2"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201607240450423_BroQuest2.cs b/src/Dsp.Data/Migrations/201607240450423_BroQuest2.cs deleted file mode 100644 index 2af5ce2c..00000000 --- a/src/Dsp.Data/Migrations/201607240450423_BroQuest2.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class BroQuest2 : DbMigration - { - public override void Up() - { - DropColumn("dbo.Semesters", "DefaultQuestChallengers"); - AlterColumn("dbo.Members", "QuestChallengeSize", c => c.Int(defaultValue: 30)); - AlterColumn("dbo.Members", "MaxQuesters", c => c.Int(defaultValue: 1)); - AlterColumn("dbo.Semesters", "MinQuestChallengeMinutes", c => c.Int(defaultValue: 30)); - AlterColumn("dbo.Semesters", "MaxQuestChallengeMinutes", c => c.Int(defaultValue: 90)); - } - - public override void Down() - { - AddColumn("dbo.Semesters", "DefaultQuestChallengers", c => c.Int(nullable: false)); - } - } -} diff --git a/src/Dsp.Data/Migrations/201607240450423_BroQuest2.resx b/src/Dsp.Data/Migrations/201607240450423_BroQuest2.resx deleted file mode 100644 index 89c6f9c8..00000000 --- a/src/Dsp.Data/Migrations/201607240450423_BroQuest2.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201607242359249_BroQuest3.Designer.cs b/src/Dsp.Data/Migrations/201607242359249_BroQuest3.Designer.cs deleted file mode 100644 index 9334fa6a..00000000 --- a/src/Dsp.Data/Migrations/201607242359249_BroQuest3.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class BroQuest3 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(BroQuest3)); - - string IMigrationMetadata.Id - { - get { return "201607242359249_BroQuest3"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201607242359249_BroQuest3.cs b/src/Dsp.Data/Migrations/201607242359249_BroQuest3.cs deleted file mode 100644 index 304a67ab..00000000 --- a/src/Dsp.Data/Migrations/201607242359249_BroQuest3.cs +++ /dev/null @@ -1,43 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class BroQuest3 : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.QuestChallenges", "PeriodId", "dbo.QuestPeriods"); - DropIndex("dbo.QuestChallenges", new[] { "PeriodId" }); - AddColumn("dbo.Semesters", "QuestingBeginsOn", c => c.DateTime(nullable: false)); - AddColumn("dbo.Semesters", "QuestingEndsOn", c => c.DateTime(nullable: false)); - AddColumn("dbo.QuestChallenges", "SemesterId", c => c.Int(nullable: false)); - CreateIndex("dbo.QuestChallenges", "SemesterId"); - AddForeignKey("dbo.QuestChallenges", "SemesterId", "dbo.Semesters", "SemesterId", cascadeDelete: true); - DropColumn("dbo.QuestChallenges", "PeriodId"); - DropTable("dbo.QuestPeriods"); - } - - public override void Down() - { - CreateTable( - "dbo.QuestPeriods", - c => new - { - Id = c.Int(nullable: false, identity: true), - BeginsOn = c.DateTime(nullable: false), - EndsOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id); - - AddColumn("dbo.QuestChallenges", "PeriodId", c => c.Int(nullable: false)); - DropForeignKey("dbo.QuestChallenges", "SemesterId", "dbo.Semesters"); - DropIndex("dbo.QuestChallenges", new[] { "SemesterId" }); - DropColumn("dbo.QuestChallenges", "SemesterId"); - DropColumn("dbo.Semesters", "QuestingEndsOn"); - DropColumn("dbo.Semesters", "QuestingBeginsOn"); - CreateIndex("dbo.QuestChallenges", "PeriodId"); - AddForeignKey("dbo.QuestChallenges", "PeriodId", "dbo.QuestPeriods", "Id", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201607242359249_BroQuest3.resx b/src/Dsp.Data/Migrations/201607242359249_BroQuest3.resx deleted file mode 100644 index 332fc769..00000000 --- a/src/Dsp.Data/Migrations/201607242359249_BroQuest3.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.Designer.cs b/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.Designer.cs deleted file mode 100644 index c9589fd9..00000000 --- a/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class QuestChallengeIndex : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(QuestChallengeIndex)); - - string IMigrationMetadata.Id - { - get { return "201607310108175_QuestChallengeIndex"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.cs b/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.cs deleted file mode 100644 index 93975ee2..00000000 --- a/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class QuestChallengeIndex : DbMigration - { - public override void Up() - { - DropIndex("dbo.QuestChallenges", new[] { "SemesterId" }); - DropIndex("dbo.QuestChallenges", new[] { "MemberId" }); - AlterColumn("dbo.QuestChallenges", "BeginsOn", c => c.DateTime(nullable: false)); - AlterColumn("dbo.QuestChallenges", "EndsOn", c => c.DateTime(nullable: false)); - CreateIndex("dbo.QuestChallenges", new[] { "SemesterId", "MemberId", "BeginsOn", "EndsOn" }, unique: true, name: "IX_QuestChallenge"); - } - - public override void Down() - { - DropIndex("dbo.QuestChallenges", "IX_QuestChallenge"); - AlterColumn("dbo.QuestChallenges", "EndsOn", c => c.DateTime()); - AlterColumn("dbo.QuestChallenges", "BeginsOn", c => c.DateTime()); - CreateIndex("dbo.QuestChallenges", "MemberId"); - CreateIndex("dbo.QuestChallenges", "SemesterId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.resx b/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.resx deleted file mode 100644 index d51b460b..00000000 --- a/src/Dsp.Data/Migrations/201607310108175_QuestChallengeIndex.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.Designer.cs b/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.Designer.cs deleted file mode 100644 index 2ec55073..00000000 --- a/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class RemovedIsVerified : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovedIsVerified)); - - string IMigrationMetadata.Id - { - get { return "201608040511353_RemovedIsVerified"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.cs b/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.cs deleted file mode 100644 index 4063a28a..00000000 --- a/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovedIsVerified : DbMigration - { - public override void Up() - { - DropColumn("dbo.QuestCompletions", "IsVerified"); - } - - public override void Down() - { - AddColumn("dbo.QuestCompletions", "IsVerified", c => c.Boolean(nullable: false)); - } - } -} diff --git a/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.resx b/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.resx deleted file mode 100644 index 9f5d667b..00000000 --- a/src/Dsp.Data/Migrations/201608040511353_RemovedIsVerified.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.Designer.cs b/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.Designer.cs deleted file mode 100644 index cdb17178..00000000 --- a/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class RemovedBroQuest : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovedBroQuest)); - - string IMigrationMetadata.Id - { - get { return "201701131340141_RemovedBroQuest"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.cs b/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.cs deleted file mode 100644 index ac674a66..00000000 --- a/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.cs +++ /dev/null @@ -1,64 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovedBroQuest : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.QuestCompletions", "NewMemberId", "dbo.Members"); - DropForeignKey("dbo.QuestCompletions", "ChallengeId", "dbo.QuestChallenges"); - DropForeignKey("dbo.QuestChallenges", "SemesterId", "dbo.Semesters"); - DropForeignKey("dbo.QuestChallenges", "MemberId", "dbo.Members"); - DropIndex("dbo.QuestChallenges", "IX_QuestChallenge"); - DropIndex("dbo.QuestCompletions", "IX_QuestCompletion"); - DropColumn("dbo.Members", "QuestChallengeSize"); - DropColumn("dbo.Members", "MaxQuesters"); - DropColumn("dbo.Semesters", "MinQuestChallengeMinutes"); - DropColumn("dbo.Semesters", "MaxQuestChallengeMinutes"); - DropColumn("dbo.Semesters", "QuestingBeginsOn"); - DropColumn("dbo.Semesters", "QuestingEndsOn"); - DropTable("dbo.QuestChallenges"); - DropTable("dbo.QuestCompletions"); - } - - public override void Down() - { - CreateTable( - "dbo.QuestCompletions", - c => new - { - ChallengeId = c.Int(nullable: false), - NewMemberId = c.Int(nullable: false), - Id = c.Int(nullable: false, identity: true), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.QuestChallenges", - c => new - { - SemesterId = c.Int(nullable: false), - MemberId = c.Int(nullable: false), - BeginsOn = c.DateTime(nullable: false), - EndsOn = c.DateTime(nullable: false), - Id = c.Int(nullable: false, identity: true), - }) - .PrimaryKey(t => t.Id); - - AddColumn("dbo.Semesters", "QuestingEndsOn", c => c.DateTime(nullable: false)); - AddColumn("dbo.Semesters", "QuestingBeginsOn", c => c.DateTime(nullable: false)); - AddColumn("dbo.Semesters", "MaxQuestChallengeMinutes", c => c.Int(nullable: false)); - AddColumn("dbo.Semesters", "MinQuestChallengeMinutes", c => c.Int(nullable: false)); - AddColumn("dbo.Members", "MaxQuesters", c => c.Int(nullable: false)); - AddColumn("dbo.Members", "QuestChallengeSize", c => c.Int(nullable: false)); - CreateIndex("dbo.QuestCompletions", new[] { "ChallengeId", "NewMemberId" }, unique: true, name: "IX_QuestCompletion"); - CreateIndex("dbo.QuestChallenges", new[] { "SemesterId", "MemberId", "BeginsOn", "EndsOn" }, unique: true, name: "IX_QuestChallenge"); - AddForeignKey("dbo.QuestChallenges", "MemberId", "dbo.Members", "UserId", cascadeDelete: true); - AddForeignKey("dbo.QuestChallenges", "SemesterId", "dbo.Semesters", "SemesterId", cascadeDelete: true); - AddForeignKey("dbo.QuestCompletions", "ChallengeId", "dbo.QuestChallenges", "Id", cascadeDelete: true); - AddForeignKey("dbo.QuestCompletions", "NewMemberId", "dbo.Members", "UserId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.resx b/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.resx deleted file mode 100644 index 80817a37..00000000 --- a/src/Dsp.Data/Migrations/201701131340141_RemovedBroQuest.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.Designer.cs b/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.Designer.cs deleted file mode 100644 index 2677730c..00000000 --- a/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class MealToPeriodIndex : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(MealToPeriodIndex)); - - string IMigrationMetadata.Id - { - get { return "201709120110388_MealToPeriodIndex"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.cs b/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.cs deleted file mode 100644 index 46f6a4e4..00000000 --- a/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class MealToPeriodIndex : DbMigration - { - public override void Up() - { - DropIndex("dbo.MealToPeriods", new[] { "MealPeriodId" }); - DropIndex("dbo.MealToPeriods", new[] { "MealId" }); - CreateIndex("dbo.MealToPeriods", new[] { "MealPeriodId", "MealId", "Date" }, unique: true, name: "IX_MealToPeriod"); - } - - public override void Down() - { - DropIndex("dbo.MealToPeriods", "IX_MealToPeriod"); - CreateIndex("dbo.MealToPeriods", "MealId"); - CreateIndex("dbo.MealToPeriods", "MealPeriodId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.resx b/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.resx deleted file mode 100644 index 681fe7f9..00000000 --- a/src/Dsp.Data/Migrations/201709120110388_MealToPeriodIndex.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.Designer.cs b/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.Designer.cs deleted file mode 100644 index a1bf392b..00000000 --- a/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ConsolidateElmahDb : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ConsolidateElmahDb)); - - string IMigrationMetadata.Id - { - get { return "201710212045585_ConsolidateElmahDb"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.cs b/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.cs deleted file mode 100644 index bf196982..00000000 --- a/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.cs +++ /dev/null @@ -1,99 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class ConsolidateElmahDb : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.ELMAH_Error", - c => new - { - ErrorId = c.Guid(nullable: false), - Application = c.String(maxLength: 60), - Host = c.String(maxLength: 50), - Type = c.String(maxLength: 100), - Source = c.String(maxLength: 60), - Message = c.String(maxLength: 500), - User = c.String(maxLength: 50), - StatusCode = c.Int(nullable: false), - TimeUtc = c.DateTime(nullable: false), - Sequence = c.Int(), - AllXml = c.String(), - }) - .PrimaryKey(t => t.ErrorId); - - Sql("EXEC('ALTER TABLE [dbo].[ELMAH_Error] ADD CONSTRAINT[DF_ELMAH_Error_ErrorId] DEFAULT(NEWID()) FOR[ErrorId]')"); - - Sql(@"EXEC('CREATE NONCLUSTERED INDEX [IX_ELMAH_Error_App_Time_Seq] ON [dbo].[ELMAH_Error] - ( - [Application] ASC, - [TimeUtc] DESC, - [Sequence] DESC - )')"); - - Sql(@"EXEC('CREATE PROCEDURE [dbo].[ELMAH_GetErrorXml] (@Application NVARCHAR(60), @ErrorId UNIQUEIDENTIFIER) AS - SET NOCOUNT ON - SELECT [AllXml] FROM [ELMAH_Error] WHERE [ErrorId] = @ErrorId AND [Application] = @Application')"); - - Sql(@"EXEC('CREATE PROCEDURE [dbo].[ELMAH_GetErrorsXml] - (@Application NVARCHAR(60), @PageIndex INT = 0, @PageSize INT = 15, @TotalCount INT OUTPUT) - AS - SET NOCOUNT ON - DECLARE @FirstTimeUTC DATETIME - DECLARE @FirstSequence INT - DECLARE @StartRow INT - DECLARE @StartRowIndex INT - - SELECT @TotalCount = COUNT(1) FROM [ELMAH_Error] WHERE [Application] = @Application - - SET @StartRowIndex = @PageIndex * @PageSize + 1 - - IF @StartRowIndex <= @TotalCount - BEGIN - SET ROWCOUNT @StartRowIndex - - SELECT @FirstTimeUTC = [TimeUtc], @FirstSequence = [Sequence] FROM [ELMAH_Error] - WHERE [Application] = @Application ORDER BY [TimeUtc] DESC, [Sequence] DESC - END - ELSE - BEGIN - SET @PageSize = 0 - END - - SET ROWCOUNT @PageSize - - SELECT - errorId = [ErrorId], - application = [Application], - host = [Host], - type = [Type], - source = [Source], - message = [Message], - [user] = [User], - statusCode = [StatusCode], - time = CONVERT(VARCHAR(50), [TimeUtc], 126) + ''Z'' - FROM [ELMAH_Error] error WHERE [Application] = @Application AND [TimeUtc] <= @FirstTimeUTC - AND [Sequence] <= @FirstSequence ORDER BY [TimeUtc] DESC, [Sequence] DESC FOR XML AUTO')"); - - Sql(@"EXEC('CREATE PROCEDURE [dbo].[ELMAH_LogError] (@ErrorId UNIQUEIDENTIFIER, @Application NVARCHAR(60), @Host NVARCHAR(30), - @Type NVARCHAR(100), @Source NVARCHAR(60), @Message NVARCHAR(500), @User NVARCHAR(50), @AllXml NTEXT, @StatusCode INT, - @TimeUtc DATETIME) AS - - SET NOCOUNT ON - - INSERT INTO [ELMAH_Error] ([ErrorId], [Application], [Host], [Type], [Source], [Message], [User], [AllXml], [StatusCode], [TimeUtc]) - VALUES (@ErrorId, @Application, @Host, @Type, @Source, @Message, @User, @AllXml, @StatusCode, @TimeUtc)')"); - } - - public override void Down() - { - Sql("EXEC('DROP PROCEDURE [ELMAH_GetErrorXml]')"); - Sql("EXEC('DROP PROCEDURE [ELMAH_GetErrorsXml]')"); - Sql("EXEC('DROP PROCEDURE [ELMAH_LogError]')"); - DropTable("dbo.ELMAH_Error"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.resx b/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.resx deleted file mode 100644 index 37cd2885..00000000 --- a/src/Dsp.Data/Migrations/201710212045585_ConsolidateElmahDb.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.Designer.cs b/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.Designer.cs deleted file mode 100644 index 9b400598..00000000 --- a/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ExpandedIncidentReport : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ExpandedIncidentReport)); - - string IMigrationMetadata.Id - { - get { return "201711060219354_ExpandedIncidentReport"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.cs b/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.cs deleted file mode 100644 index 96d5a7f2..00000000 --- a/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class ExpandedIncidentReport : DbMigration - { - public override void Up() - { - AddColumn("dbo.IncidentReports", "InvestigationNotes", c => c.String(nullable: false, maxLength: 3000)); - RenameColumn("dbo.IncidentReports", "IncidentId", "Id"); - } - - public override void Down() - { - DropColumn("dbo.IncidentReports", "InvestigationNotes"); - RenameColumn("dbo.IncidentReports", "Id", "IncidentId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.resx b/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.resx deleted file mode 100644 index 8846568d..00000000 --- a/src/Dsp.Data/Migrations/201711060219354_ExpandedIncidentReport.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19W3PdOJLm+0bsf1DoaXe2xyq7tztmKuyZkGXJVoxdUlt2Vb8p6HMgiV08JJvksa3Z2F+2D/uT9i8sAd5wSdxBkEft6GiXDpFIZCY+JG4J4P/9n//78t+/77Kjr6iq0yJ/dfz82U/HRyjfFNs0v391vG/u/vlfjv/93/7rf3l5vt19P/p1oPsjpmtz5vWr44emKX8+Oak3D2iX1M926aYq6uKuebYpdifJtjh58dNP/3ry/PkJalkct7yOjl5+3OdNukPkR/vzrMg3qGz2Sfah2KKs7r+3KTeE69EvyQ7VZbJBr47f1OWzN0mTHB+dZmnSln+DsrvjoyTPiyZpWul+/lyjm6Yq8vubsv2QZJ8eS9TS3SVZjXqpf57ITRX46QVW4GTKOLDa7Oum2FkyfP7H3iInfHYnux6PFmttdt7atnnEWhO7vTo+3W4rVNfHR3xZP59lFaabrPqMZE5R/azP9IejIekPY/W3KMH/+8PR2T5r9hV6laN9UyXZH46u91+ydPMf6PFT8TvKX+X7LKNFa4Vr05gP7afrqihR1Tx+RHeswJfb46MTNvsJn3/MLWbtNLvMmz++OD76pRUl+ZKhEQeUFW6aokJvUY6qpEHb66RpUNVW4+UWEUsKQnBFtnir9OWpeeC8A4cWvG3rOz76kHx/j/L75uHV8Yu2uV2k39F2+NAz/ZynbVtt8zTVHlkX2tvquaLg5z+ZlWxU0IvZCzoj1SUt5E8hyrhpUaOsqwBlXBd1k2RnLb0frM6K1tFW4U3yS/I1vSeNhyvwA9p9QdXx0UeUkeT6IS07F/2sS7rtsYBad3RRFbuPRTZmm9JuPyXVPWpauQsJwU2xrzacYC9PJtendIiDlDb+sMuziDt08YMxHeBFWtUN/jNA+7YE+PtEW7Ihwi0Lvk5zzsB6r7E36JY0pWZoe4/OsgTo4dQ5z7+XaNNW7tsq2e5JrVsyeJ3ev64Ky0w3D2nV3KT/qaqf9s8Qnr9CGLtXY620bRR9SndGCPpcbt0yn35tPUHVNpiH2RU83yVppup2/vTnUKW0w/G7tNqhsa5fF60TTnJ7uLY4/VZU23dJPb+BbtBmX7Xeqm1pu3L20q4fihz9su/6kXhlBauaT9+Ki2TT+v3zHOfy5ve+2Pxe7JvzfIvbzudmY90OBwZBxDndbNpxwkULZrQlgyA/v4uH+JpuxrT96UqWDq2ogZPv6GoYPElHV8Pwy1S2rnNoHtRDv/dp02SoJ4QkZAlkg0COChoJqmQ9e8CDnarYl0pLMmSCpFSqzJo0ia09Sd76PL8rWs5brZgUJSzpSKAUdqJykvcmvc+v7u70Vp0IYWmHdKWwI5G1rFmS7tRC9hSidCRBKlaX6iAPbnOfknaKoJGKooNkG5MVEk40TnJetA71c5kVyVZnQY4WlpciUcpM09nKPY14b9AO1Y3ERw2JtwN9ft9JwAgvpxK8lYLU1mVd5psUz8U+orKoGqXlBVLB8ByFzO48ma3Z3yf7fFs94maq8bQ8pdgtMAQygTkqa3m5zilcNyaTF+7sjOUt7tNcLWdPIcpHEqRydam28nxI/lZU9adCvwLEUwrysQQyOTkqa3lRkl23IqrHUzSVKOeYKJVxonCR79fCQLyeCJSOpKmE6wjsZcMMuiUNhXgdwS3gRqF0yXCPI7J1ndTcSWlJlk4wJp0ssydDY2tSamUHFJNKhwwKJAv2hGiszVnUKZHsHcqU41KOUDQonS61KENka1LMSlnnPYEgG/kuk6lLtJelUI85ewJAlkI+4uwSbWW5QdXXdIPOv7a9++kO5dv2/+pBhSyHIC1MKBNfQu2oz7u2ECt1+AwybVg6jTIcsYcupipoJDcR2EHOArtm/diOpRPlpJKlctI01nI2++3jaV232fWwEGhFeTkSqcw8nZPcehRQVLCsagRMFE7ytd/wCuLNQ3pnYFmOGpaXIVLKzVJay7//smvH32hLnI9aeJ5UlJylkIrNkdnK/FtR/X5VbfEi8E4LZoBYkFugkUkuEjrLfl2lBV6lP3tI8nt19yzPI9eEI9UqxNM762WmiVJ2vbQe8nXDaBurcznkcjOEWh1Yakgf4238aYV1mkzabOmL+X9s7wNlTWby3b52ipRSLOy1IoFQniSG5kpiqjBVAkhsZ0r6dRDzHQbJRgi0CeHZkFwb0I+GA5SFy/FtMsMqsmXgxSIxMXNGQ8i3RTWDe6opS8b2MIXQkUnI3NbOtLKa+S2FjLxrM5+BmmySSHwXlC7fGNH5L5WYXcCs0oaY5FaUESRQ9AA0lb+XnaDj4GqnzD/8LVAWsZF3iB1qpwRbXy5BhktXJcrrq/ysHqNXpmAaS1Zv9igMI6JYOw0sM9T4h+nQ3FoAYImCCYmXjKz7zT4ComrbVHqXAgraZN8kIZUaeDtqdIHQ9kuy+X32aLXL+izJNygLEMXVy44dHty2DWNCQ5h/VMqRnTp2Rt6VKUct4EiE6cLAIY2paLz95VJOpdyKmTihFbTwgEaVwXZ4MzSHkDFVqumZGHkVdHprN6RVTHN9YGI41TUO+1LZU4gNM965JP263J5dutKgIglsUYDOf+DoMFz8MUgEygoxKf+UNtkCh13eoHpTpWV3SnTmXvxzpTps4Hhaz28Sb94Tgr2I16xdPd0kU8TO3QuCUWmwt6AJ/N1EJ6i1q8CJP9wFUFachTRNILg/8sAWAUHTHXlDB2uNvS7jD/QBZb1GOBYzzATmPN+6cvLz224jKxCxihGYE3CnxU4b1A65FoEsvSFgC13pZsKMEMYou2mSKsAaVpuxBbE3n09VkndxhW+ok/zO7D6kebrb79iILJ/RJctwiDoJs2eqO/zktMDPN1XlLkCwYzFTKZKDMSCBQlifwzHAoZE5zphIhZcfRzE+T4ASaRjLWMxIBEjbp8llHAg8QqMlQ6GxCI4UkJKhkMvKkoWL9h0LEOJ92RS5ZLPH/I4l6aN+NaRyJaJH/vIly2N/1ZRalQzif82H1Rh+vVuzGlWP+RYZoUzFu4xR2NzrusNJX94vRa7fSQCv75ipsJBDPpPyPqTblniH+yPlClmAJaqLNE+yGAW9aX+W1nuBl/XNfrdDVX+mx28nzPx6E/WACp6lkSNBsmGUmCquY4kkM+whWJx/lu0g+EhoGBhjNRiVh8boJLXrRBz6j+W6DudeI+q0FpXtnBZ38r6bCWd4xohu2qlS85BM09toUXtd+Zp1zpl2NFq3tk0blzmz+7zR2tsJK1Fyh2h9l4LWIfdEoIAkTSVeR2Ar3ARtULgpebABLZ6YKjg5gMTfw2FVHbwczracp8OlO3u7IXO06DozF+swztZkIfd+wGMfh9sCu5uhXC57e1N8y7EoAe6TOv1W05d7gje+ht1hNRr96Z2NYuTHeiNTufra1Y/8LG+TUY0AoVtnnDwP7SltXM+UbxHfw45dbJ2Pzcgn2j5sqPGJblgRpkfku2xFp2k8fyK3oejEG6hA6bpElXA9hdeiFuFhefUuzrJISyEluzSSMePhzUeI6Es3N/MxqAmkFSNQDvRWzW04NSo5T4tJbnlCqucC0sXTsxCRf/tzOy/LZF2uPQ4SOLdLmkGs9mnoEGY4Pyu0rPsKoffoK5oC/LomRX13bre9dw/VHIRRnKrNhFtqtL2hTDLYlNxj5tRsu81Tu/ba5VmkoQ5IPdGTYpMZkvrEvoRoO4OosxzotZ1ClmWR5pI9Aff2q20bdhd7SVoGfPuXcUBAnxu+KK1PhGIV+DTxijSeYJ5NApMwCunWgEo0Y3cymdDGoQy5fsRqAmWZReeHeefmMv/7Pq1SVCtKCvLYTRdOTg0TBgh0CZY+67I+/442+yb9OjJ13RBtWWXkQQtfRm/SusySR3I3jZ9HvqxbXkFur7+suzbjvWuc5K/RR7QrvvrLpJkRzn79vSo+zcrn81MsaadgvIRZa+XqSQCpSIpcpi7Za8LH3Cxq5e2njIs4fO6xG1vfr3orZ8ZuINT47jrN87aRwSHKut6hrcBEHuCsKXiy28KHX1SrKw734QqNTHFnbtjxnm1YqnTsB0evOrkFHEdq5w9wjkUcAS7YxQMM+Q6t6S8Ti9GWcJaUyYZ6QtE3FkPVgHHlQC2X/i40WSZxnraqC8yWtk02btu5TbotzdI5F2ujPguzfP5YbdbMR8y/LPsBj9Ev/UMcCJ+rfchDfvo1IfXl5ZI1IHl7UQnTdVuu/oQXBXQ2jicJgRMNtscKARY/llpmanDBOmvy4IPTKT0e2iipg6wdzdjSfV8CkPgCzfmhsD28/7km6RjAQg9bz8IcLHJyLAyHH35l5X7ldIfDDJnQ6DdFWw32Q4ID8iuOT3KovYrkBN8sTsX5XKHOpRgo4XJv+qPTbTFj3h9eBChr4VUzxel+x7tx5bcM01R+F3GUD2n+Hftf8oqmESa5PD+wCJQVokcj1mU2Amd7xB2X9GuS7UMXZYxD9tVLO9fI5v0BR6CsYTVifArHe72jMzbavrZdtJRIdnU3VKO3aNdFW6WPr6uCHDGLvZxrGI7wp3lKv8y/tsOXvoP6pXuhUirEH3+aR4iru7t0kybZ0Jj9rRBuwGv/Tq9kkCt7ztctypB+Q9cy2JDOusyxlsG54CfBHM61sNm1jT/MfQlBQnoHyfGN59vPZdS1X9vXmyUwlrzx7DmYJG8ZWw4mSZ5FAExKbj9/TUkskkFA7EDcsjeih8Ny9W2Dk0zuSF/8yxyOnFEzduH2LdT8LMbwPLTlOYwh2zJnMIbSnc5f0JkPaRJEhJ4cqufQcPDUAc40ayZmL/4UeWBj+mK67MyE+Ka6c9PCj5vbtyyca7GGhQt3bVdD3kNqVljuywZ5b8Ff1p/Lr8UU7GYc5apAeieZBOtd4u1gdw7sfCqAdoFkhmNMsHBsmqohygWzaoedGW3bIc61WDscMOnSDs3wHPBoYV8mLm/u0LN5riC6rN9m+wblFxWaoQV3PaSiFZNV7OEH2JJZCmlr5sjsW3SSfSp6IXReZySU+J0+HXiPFyCyf8Rw9CwhvKNSRtZLeTkh++0uOueizmho3K4Oycw5PJlNMKo1h2z4MqBK/IMzWLt2aQ/VLt9iQO2Kd4XplDtqz7mSEazHOTRlK5A2AILXWtKNMIlgf8dSuHR1ZqNr035OOcJWiWnVMO2b5HK9hmtvMWcDVAKi1g1+LCALeWoY1JYSXpMnSPQyjnSwlH2yUs6BJkB3cu3wOA+dc8Eu5Xp8kNetU7k2fNA3bLdiWur8HZTbIyd+fYoh+FX9Ct9AbOS7lr/1OCXf0vAQRIVoQHlBQu9+xrW9Ltxa/dpq/Ja6zEk78hxSkH2E83zrxkezBqHr5JxbENTdKZuaYwvCS5itmZu95Zl3Oucyz3uRop0e9xpzxmo9XYmLz/QVV/BRtQmdDYPSAYgCRH43MjwUOerODVneyDBlXOZGhql8pxsZ2OyHtE811NbMAbCazdzQz+4a3PY1VRm0i0QnS+/6omlCnYRyPgC19tvwyNGx+e63CxO0NgoZo7A3+4rwCHEUKkD8sbQxEaNIDglNpwLp8zzc+SAJEXA0SEYZfgtZJi2QbHAKK+AZa/ej1Yt4AOdmHaypGQ/q+qZh+0zDZX1allWIm8bGUPzNZl9VAc4IEBvGGabO6LsCPAHGtubwnkp8HFHn04wlH1CpdFaDVx9O44v+iqWQuiyOzM9rFXj64BBRT2VcZipKinaaio45Fx3jaxwdNm+ImJmYF3/iNn91Z3pEwffYwOwOyWAAMjUCsEFTydLWTNNYn/4eUAL7yyH1FhBRSBRHcgKFv6exj3EZsy3jZehmaO1ozNvwoS8am3kZ46N0xvgfcO2PfmF0IG0fbuhv9tvH07pueTlckcJm/nF4Fygr1Jam2fqfmkt3O8rVndPA2qc7YnECdkkcibRb4umsr8GX73IS3v2+ikRaCYnYR0norDtSzEcx82CtcUuTc0KDVKJ3kZP6uxmX7Vkq4w/3ApT1Gt2neR3gRNR5vg3B5iLNUedmgvkXpimGbbYg/BXN2x37DsvvQ7YfuAfKmmrHdgKLamxBy1xh+t9uzniZB2hnHaurfePwImu/vPYhzffUFRNDO7VvlvN0TWCXqu7FAo9YpOv3ciFFCvuL0wg+5TbtCVQGFUlgawJ0flNpiqmDs+tz/vB3QFnvi02imcWabqZbeprFRxjyoXxVbBrZ+60MwCdKSUsZCOARgUBlvRBvMIx3a9dKecOO3jvlXYbvXc4f7RooSzYcibM+4NtD9jVLVtalPSVDpOwxWcrZek5zb6DsNQWf4dS2fiuq38nxpbNiZ78Cx+depI3xQri0OYhHrDY4lj3LkwZmgQNOD1LycXDou+q+tmAXxnl4Db6aIach0Mh8hkho6zJGDqDMY+otJK2YKsgJkITxFY5OYlnv4OUWVr4t/iltssPf3rK+RbRuMRNzX21qhyGaKz92VrToGTyg0vXpfZ7DzkeVFlUL/7OHJL+XXEIxmUCghkzJESksylPaz6DwSQIz0TlaSHCGRCE2S+c1iRqZsqZwdOUsk2UdOyuLl5sXWR3cIFDQZYFRZWe+2I+cS2pR6ehkfkHm9mQex9YJql3IQGXkBWXE8uGgNMdc41cnZy4fzZqI7e4XPT3iOnxhEC/4BOOzwoxOwrRPabevbdF+QKcHFY5gp1ksC3haEi/Q84wOt+M3PVP81Lp96bhbSajt8uGxut3EQe1O+mPK+nkDRCjvJ0Hqubp460mPvHvXC+zq87y83Rr8XAAP94/UqVvM2v3aoLQrV7ZYJ0if75LU8kYzkmWZE5S4ZKcTlEPGWFAlBYY4WHTTlhdgM+UNfoknDxVzoQmxKLaqJxocC5GfuR5MDbbIMfWW/MU0Qj5N6EQEAq/egxLUurktdjSHAbJTszvQozkh2lPouzoGCPvinO9fpA3BDefZLnk4r6oCP6NjiXU66zJ4x4U7YX3I2On2dp9u7U+0lGWrgw5Vfw4B4HdFrdrrMjwKr9lGfJzjJhvh+F+P5VnN9QHVdXKvKsbx+Thgmjx3tfSjx5beb2iCByKfm41/8Df6+x7lG14aTVPJsr/ussDDDPMQws1DkSUV9r+nef3NNoRByL7MqVteCqfTtxCTaOGGU+Ek8ogLPnTywRTPv+xxL+8fztgZJlQ8k+lgYZAejiAUtbztxGTjCOVkYjShgtZ6mWusTZ30E6VGfpFQpQFA7XeWQDSOs8sYGCztNOjm4eE2zFtZwGPMLUJK9fhnlhijDksf0jzd7Xcd5xCupRXcmaH8RNTQnOZxH0Kov4GrMRa9HHlYyM9k0ihB0ZppQmfwO71AdbilvzOheCztTyhRfEci5SJehZXAe+Uv/EDkoqh2Lo+L8CdK6isSpJmM42//h7qYqa+6xbakt7qWytCoOnqW0HacYj/GcnUyRqMtyCsFcDI+zmUFTsXfmSzkRELsHywUyn263aadi4h1jIMT4KpEQY55nmVFjUIwuqw7cIdzmcZDHHuHqRjSwJ7VfmJnJDVDLpWbotJJTpPayi7dY+Ka7C3Vl8nEFuhUDl4kDuXc6Xm2o4+fWCzt6tklIA+Pb7GWtNbB42X9W5rn00DP9R7ekAf6LtKqXuYK3vfJQgXjE7b43mHdywHPzV5otyydeWMictl9XElke7fDjgrV9fNFBjy45Bez73edEV8SHcfUA2JAqS8CKHZd1E2S+W9LneHruqr4NnqX3j9gJ16oYD8X+jbNTdLcbNoeyM94b8vE9qYz3gwoqU6/FPuG6tDiGwQfecT9FvqI6rIdManAGybqiStx63cpsuHiq8/uh2KkrNgrmWk9x36gr1nTgeYEvqNl+9gtLvPSI2TXOC7rNYnVRXOFWJfUtkb3yZ+iLcpnimZw3u8oML9B9xVC79FX1HZSl/VFltzXo0lsgE0x8gd1W1lbVGWPbeXSsGJrqDtHMYSYtqb9Ncn27Z8/CXXJUH5Ic3zLU0/8XEM8sRUDUBjK64c3I+kf1aRnLZpG2v8pVltXQYpKawdGZC2tcz8+tTZw+h80yyXq75ciH07imFVjO8BJvyLTerzO0PYemdblabbf5alpdZ7e3aVZSobDcJ0KGbZf05rC4J9MIHBa18UmJRXKnFy67ecZqObMe55vj5gDRyPhLRchN511aj1pW70pdi2t68BW5XuTq/wNylCDjrD9W1wcnyX1JtmK/rNVYmss0Nh1TwL1ibxE/yQU1PZrqMJdB54q5HULyjRvxE4wzTdpmWQak3D5wO4TfLPtZCyBT3mDSpTjvk2jvEnR0ifjTsZSuFrQWeflCQUsNd7OHtp+m7mBWFa/AiWEOEIUCXCiQADiCBF96+ssyJPaJgL0pGYwKZtkXhZ8ZORD/tJgjyKUQq/rPOPBj5ZJhr45MQfYJBbkANVNioYnJzEBR13HfJ7fFa3N8N9dVSkrW5FRCkgb12NRnL2n++nZM3E45Q48A+FiAdGgWkxE4fMuC9Jr8WkAJVhEeikkr/sXLeJ5SUC4ZbtqubVigVZuEhMJrsf3eZZD6Nuq2JfmABXIpfgklDHhKYq2LDqlpooFTqlBTAQgmdcAzW5OZgTLnnRtkBzEksGRUH0q4Gl+eERyVoqLRs4WxpObZeF4044n6gZfzjnKIgckRAxBcqAzGuJp2CuhNROkVHqa1OuQ3xNcKnv4ixHD12VJXd+Sf1H9Kfkd5XJfJ5CCvg6nx3JzokQQFnF6p9pM7k1qGCMPg/P5+jipITwliIvAizRTLeBwhCtCXyePDHs4dX7oMTZZAHiMDdYPu7aIpGrIjL9vN1LgiaQQ9CaqSPgDxJIhcCb0yQ1jUv9Tbk8Qyg0RQowIWPyQ/K2obsm/w0hcsWkHEIMbd5gi1r4dJBMARoZirh08hX1M8EBy+m7lKezhKUNc10gEMfKMHeXaHGMvlQyK8/tF1ixLuUXWDAfiFae5lcnsBKS2mfnOBEZYriWmKUoLLTJndpyvLD5pHjV4WyXbfZuS3+t6bXmWOVZnxEIgDzhnL6zXdwnESe1iIsz59xJtGrQdmECHxyIBcAjKu32Pkq0KdjwhBLaBJpJDFEQCoNklzQRNmU0irEXLdDcpGnNYHnA40MwAboRsTWDrBFoMaow9YgKN0Xv1MBsdtc6v8YRrGugt5ddkNlmio3Xwb4uP6rpQ8G5FUzecA2hBbzeRWQ7loAJij+EUSppUKJXd15vJjRFEkJiejRJGseQMk6/Jy7GCAdBUYD+0wwONtITbA41yEM7vY1HstF6PJoKwiNMj4ZARBUAfTp95oRmyhtkIq9h5Ag7S3q/omC4QS2Hg+gjZmlxeJ5AEbHP7OMYaS/g2RvuD8Gmj6Deo+ppu0PnXlu/pri1WHWuqybcmSEokBDAKUs4NWrUBl0Cx2mAHCet3rTUdUM1mWyGoOQHlmGYII0Eatt6CiIatdRCApuKQ8XkwTYQrSK2Ouo59ok+QbokIWaWdIixBKi1hUv6ip/z6w9gmIdci6VrO0RsHac8dkiO1UAQcym1hUviiB+tp0ev+bOHWCIcjtTkUNQuSMPfFDjkplY2MKsEcJuX3edYBrpu2sq7u7sx83EA8C7RG5qtAFq9qZGDxxjApnrg4nHEF0MqSVLHQw1CtpsvspIEmG+VDmn/H/QGhmRl9jFEiwo5R/2A6SJMAQYB2RaBbNjRQYZuo2HMKB1wNAvEJmM9lViRbE6fH0AfvS3n+C5xN0qgaGViAMQ4FXJettrigj6gsKsUKH0y+FifHiwUgkiWZF5YSK8VDpcQeJgJ0WdD2tXAnalxgvk/2+bZ6xKNNgwUSlnotsOSkgoK2aIp5QQmbKB4mYWMcip98nzZNhl5XRfOgPEAHUYfugDnusUO3lDpGxBNoBZPyX6f3bbbFEVXcp7keSYRqNQ6tk0Y5gyU0M0OPMUpEyDHqH4rr6g7ojcvwmipmqdcCPE6qpY7/qkwUD4awMQ4GjijJrrOk0d8dPVGuBoaTRGCv26fODD/BLBGhJxjgAGCXZJcNIneb3w4/VNiDyGEATpTRYAgKJ8EiTpwNiiormWCC5uCNTZVVwggTCahE/Na16zHKUMrgGRGWrDwSRHbJM2IStIoxAvxhCFrBr/xIyOsvfO1qqfuhBiCUQYbDqFf6SoWTghIWLyAsVbYyRYfqTl0rjKpsE0KYyK7SBKsc7Yrc5fLYlNhmAafpiMXFR5a3U9emH1fSxKpRZeQRJSPWUr23zD42Q7hAY0nIHv5ixAblr4V6ms2Trg2QnVASOOLEGGBkLLMUFBlLHAgQxxUDHQxZwjUt9iwHQNgmcVd6rEG3gvVF/Eb0Xn/JAkQsB15HFxV+nGjLbPLB9jFBQpczCBRhS/gKEc8DXj8UOfplb4JHhnYtfpCRCbqMYUqf1xtCxonnECEzHIhPvB2ubKrfoUx7yIMhXg0IGaFiX3+kskxEBEI2OBQIYk207o8QrQVynTALQY2xRDyIMTofDrRUd37QROuBluK2jzhBDNZ3foQCmOVNH2sAmOUdH8pca4HgOm/3MDJdPLT63+ixIvga3uWhyrQy8K7qFg8Tu0VHrvvNHYsCl253tCqqG2gkOeDLZybiaBfQyORTo3a2K2c05jKBCMntfdWMxi6egiziZW2c6xp96kKgVBhnEcd5QP6yaEUn4W+681ICJegfB6JYzlEQCsIfJpr1oJTUNkZrzUNmX4cos0UAISI6w6my9M6Qog19VIrhvQioFEpGdGqAGdbv1Jr99lF8h17u2mB60MFNpLFcnEQ4CJOYdParaDTWioBNjUlMJFg4DJFocINa2Yv8tpVu06getAOppejsCWPCU5BNBs6eYE5kyuwUC5cyWxj1wl3edcCS/NDMnWF6W2jqHhCTlCID2ZyzX7XCsTEmGuNgUDb5bWOggVmkWJP3gyZwg8taCnFKzWOBTmkSEyEmBotPMlh99BMNjn41Ky+8XIsNCjWGijhhkZjERIKOxSrAabYYqPSCiwFyMV8pNUtk+Fl7xhUBrx+23jykd4Z+kcmxKiCyki0zJ9FaKjI2QZscEEb3X3Zp06At2bnRA5QlD75IyLHXxEDMDDFY14j4gq1hNCXpsy6Hr9+K6veraosvZix26kGhSArhaqSK5PgAqQA4jlQ90UyQlJvIBA1jbk9cyk0SQIqYmGw1Lqq2fm6HP84ekvxeERWrzalE7EAbG7lSYVVAZmnnxrPOnlbAGniEgrnOfgGFi+qRrVFvhfbo/nm96A6C6mBOOwSKl0dvfwit+48xgqFcShRHPWioFlOFZ5pybjSrbGgFoiBHEo1sFkysqP7ZEtsWqI7um9eJ5AAYDuaV/XG79BoCPwfSriIIGUKvI4gFLDd10+kcbz1BahUTEdZwfEIyijPHm8EwNgjsVjciNTTEAlj0GJSuCpLmIJwPdmqgRYLWkmA6XPiYDfmUuWaD1arGcEYmWAB6zsO4RWF4vkvSjMS4k7/kyOMJIbCNNJFmGYJMADRJykxQlNnEpNbHvJ4wlNkggAwxItc2D0WWVPVDWv5lj2qccnua199U3akiDxi7JpLHiuRVCAptbE7kHdVcAXB6+5mAB2DjGxSnt1dQweLi+7Qsbwd5jMDNZNAgu6WND2pWQA2iS2nrCw9r0HKW0Gl5hIMzaKlQAsWFMQks6IKlLRy1mEsD6ClDfFwDwq7DXcutaImliVE4jMutFli4+G57ksjYcVNZ1uq6aRHV+JY3xnl8N2C8pb03YKzD9N9kqtDK0tZgYjwUETJpMB3zwLpKSu2YZH48S01nCZ8Q59kNTBVMqqUmj9M403IGSWU8gGkkLe2KRt5Kc65oVgmYb91Ty/M2T/PY5mnaHKga5CFPfb75gr+j7y0ENvu6KXZJnhcNYfHz5xqdZeQeivrVcVPtkdAoMN8b1AxHyrbbCtU1qo+PuiQKVH0asHDM8sALmlD+YS1ak/3soajQ26rYl8P1ixAzkcqCsZqhGSP6tJuEG31IzISllJFZdlLLMhZdl2zCZnjFR8JouKtBw+oG7doGAtfdkKaXJ0swFj8lv6Mckgcn94lmnGRMzPJfpJmcBU7Usmn9QlI1MtBMqVpG3cOjUCPDCYbZVe2Le8RVw6+7hxfiM9zQq2FAbrsFsg8XLWsZXGdoe4/k1UylGwiDb7EVeeDvZplVlmUvltU2I/C+U6hNgVeDmrHn7qOUcucubzR35CrPNFLopR1ftm7rMQWriCPRsrxsBxG4n/6IyqICVWcp9C0h2efb6nG4cAloEDSBhcr9I+Uqlfv3vnVtf3r1F+qjx4dzDdh0r8nAXLonWQyYdI91wUy6144MmchQxr4Oa8BseEAMZjW8vWXASMbCUAp5T8w+SGdS4UpWxoymR0AklqafaNF5bPoxDsBh029ZmLsxjfeycrg6P6tnRt+9BvCirzwzYSVDOHVLoI4Nf1EDwIy/38CEpRxfzAVfJqyktTgddjdh01/KIuU0Xp1jpN5wo5RMv+HIs4aZGCkrMhTDUk2ZKrmZs+GDKxVM+dhFyyJSM+7mfNkoKgVrNlDJjr0JZy3PPtxGZNQHrJhkl7kDKg5Hx6aqYFSfZ7vkgaS2gwp9G+H3wsCGIm6YmbOdFvWUjKeVLguJS1PuzFKaVQF6xjYM6f0oJV9648acvbSX4Rf4OZbU0hU/Zril1pUoMmbYQNHw62lCaOJIOi7VjvqM60/CqpyCy7CESnGhJOYXa1lFDYxA5jnMzZmAFUQiuQICLWSHYU1JYQiRD2AJcbkrjEHIJsQgpMQeNI1GDYpUao0e2jqL0KxkBglmBuoasPP8rmjlxn/3634Ss6jyaHRTZJWaTVH5dgVERBdwXa3MmrqbbUUdFXfb8qqNI2Od3RRX0kYwF1mFMbKWSKlRTMggtdWwOK8zlcgxuqXG9T2llcC3T2X68G+f+lmHf64U5EatU3obZ1jVv2WEFc0D0slVgsghE1EbDgoDgdyUJgqCG7zsfMvuZgC4EakUNS0Qg7gZ1sNVmBE5QQZhhA9pkX5XRWmPjsZIB0IawBYdH5kleqG97TBt+dyO8omWAKjkOojEkDWYnSiFRQBucnQEMAjZd7pldp/gOQNEpxjxA+SQWYZ9NdXkAWIF2ETYYwsJlkFOJVZ6IqPK7WgDIaVnJjVK0N5G41VhQpMeQuNbbTucuA52LPdtlWz3bWJ+r2hNCmoD1YRMAcwl8gRsBs70HYw17DLfjvvYookEGrkSPClkjn7DW2EKgQtggFHecCbobaowQEdhIDgh9FS+4zGr6iPmFLUv0BhAWFH7lo0hDgKmCAnV7AYiU9SjSA3Zg4veUAEDYDijZxirgJNQgRCW0qB2mQwB0MLyA4yjtLaDkXBEiwoyTLpcAZoM9hokLEdhAoYDoDgfmxMOHr1sClgAT2PD1cc+j+0OA/Zla50dfZSXBSkprGHyjjOsluYtZ3d7aZ5hZhjD+ga3KB+XpTeo6mVhpdqS14W9zSl5GFi0Jq9rwMU6spwvX5CCCU0W2Sh69aqd4b6DwHT2lal+J0yzZAdQaTfXNMt1xpt0xgt1If06XXbd72JsdZaZCM2UGun97TOxirMQTpeNA5iu7u60wBnpzFQayP2NM3KKa5s+RFVulI5ArwOh8zNDxwJyvkJIbUD9lesyEJmJIso1GRuLxFyNoUvFS8efy6xIthp0sKRmKlE5/O1DM5t7IbwvV4jHlhqIp9SqxGXwMg/PC7COoEkoE/ER5lILcYRapVh6L/twrKB1C06LYNZJmyZDr6uieZDtHICEepUYej/rsKxmXL4YCuzPDsiN0RHoJSd0fsp3LJR90SBvKP3ZrRiFHThCrTIsvZddOFZRNpSGoqkTIXLTTER6XUZaP5NMbCBzUFIHsMR0RuSWOpUCmQOkVCkDZQA3H9mDLEoDgTwlVup1CWIkUlo9npCB7cMSqdVgaGVW0VuDZSMxxCh2EFP0AVvcWR3YIiCtWiMoi8w+JkFmUp5SY0m4eiJHYymezKzaNfYxx09ko2A83jLQlHschk7vG2hylbcx8zQMtyjNayy1P2WoMUxHZagIIQ5klI6XxCS97CF7aoU5OBqjDlZqCqtuOqIR+uc+VLFBEJ1ODZYcxgZ7/FFrGY7l/ON89kilFCEMmbZ6aWovnDCMoG1JRvpgNukjCep3KFMt4bJ0emVocj+zMJxm3eLvS+zDL6Sm6NK1ghMyL9U7DnFUluzPMukGAkv2Zi1UVu3KzjC5M9+cVWfQama+MWtsrBVsybKS6DdklfSmCus3Y21NuNw2LF0ztDSS7WwZsWrHWZIH3sRmjvcrN7JlbNXGmwd0hlizg1gwZMWwyXjHwa1i5VskUlQwTwvihbp2QQUWgRdkEOY2iGAgYbjKQUKT6euWovYDCc1ofptQl03ozrLJSBWVDOcAYcPciaECjoQnZCrh6o4w5uovwrid7riQGEsg1KjF00sNNV3VobOUwFJmp0mZsEaibyjRmIkiNdRqyhHQVBRTmbGCuWgWoSbGgqk1qoGZpCZTNBlT1nMbbnCWgrhyd86T6j0xl8PPrfPM4vgrunTtqMgETgKtv1XiI6b3dTcP6Z0eMyyxmUpMHn8LsewiePChcHwbStOg7TD6l1uKo9TrxWbwsxHHSzPbDWGg6THa6V4q0TgAlVwZkRgyCn11lcIyADPAKsDlWuEsM9xFxT+irjSUNJOBqrK8SjPS92qZ2FNaiMq8ggUC4s/Gui5WtbKmKShXYjzoHXSlAcEMBgqr3oEHlTbaMzF6z13Bfg44mtvS3ooW9jMF4nIm6/suwAVLO1nNq+FQ1yh/N9ylo5U/Ej5zp8KXb+D0dFnMlTVwgPYWXNYD8tIYWdDGZoGspLbLHJbQ+i91BnPVtL7M3lrLOTPhUVzAcOqHcxnFpE/nUrrQ93kqbCR98ZZnFWQ5B3o5ZbjeE1jPUZArVl3kucAVHfBKUNWqjoI/NLMCbjINaUj2FVC1FRUvhspUhN8MlehXai4T0z71KeUrrRo/4wFvT6otqHusUqau4rlKWGfmRlYzkypemYyMR0Z4LSKljyGqsAM9hxgGldArhtZ15GdD8Uk9tRU1T/DJtJU/wgfra7BrqWKubeSzdTGM/zDsZ6TPvuk7A+jht+A9DvReW1D3iZ+Qw+zGJ8LGtJcnLXe0S/oPL09akg0qm32SfSi2KKuHhA9JWab5fT3l7L8c3ZTJptXs7J9vjo++77K8fnX80DTlzycnNWFdP9ulm6qoi7vm2abYnSTb4uTFTz/968nz5ye7jsfJhqmYl5y0Y0lNUSX3iEtti24lvUirunmTNMmXpG7r6Gy7E8j4B9FY640GH0rrQKi6dxpnwG1jyIH/7i9jq8tnWJjxWTQu82S+i1YjPHUkyiGq1qU527w3m6QFxPAEHSspfnPurMj2u1z4zONSzgsPyHlGwzdzLt1F4DQP6GpwA52egyo9d+D0AuT0wobTWYofHaC5dF/MOeApCWeY/pM5j+uibvA7gVuOEf3dQqdinzcVr9bwUeTz8oSDL984ToTWwfkqvrkZNUbZ5WIGDRE+tGfQDmUZZab0bzbEleE/WUbUZ3Ne7xOI1fTVAnD49SgGaeJzUqr83Tyct8701UKS6YYqnh2XZM7z/HuJNg3aDjcLdm930qxhCvMSXqf3r6uC5zp9tbDkQ1o1N+l/8i5k+mzR8CvUOp7tFVe31Gc7rH0utxA/LsnCbX9tG291nTQPnOOmvlvUcvd8ClOt0IsqWh7tEOIurXaIxwiXZoHpFrHfimr7Lqk5TdkUC5SgzR6vpLYtbFdySGGTLKSkn91ihJS/x2XIT2JRmMJiCPKtuEhwqMB5nnzJeO5iqgXai83vxb5ph/Zt/4I+NxsO8WKyA29AZj7Noi1tNu1Y56KFKNqSvp1rUmKy3YBR7Gemr6sZQkBXQjkNKERGDoMLEyamAw27TmQqmefDpsw1Z1i8+r2r3au6Y1Uz1oDnMHyz6Uu6e/uE0Rv13Zyb6Cdsx6Juo4IlIaeOxjTF3cTFFXwqDjM6GtDHWI76SRy8MOAfv5pzAr2eg8O7KlFeX+VnNdeR0t/Nub3ZI4DX9NVSv7NiV2ao4UcPfJob13by8yndIUFaGY1lKfjIh+hsuCSLEXt3/WH1a4uVu1QYswuprpy7xXHQMEpC+/KEuSn13Z7bBULbL8nmd5jnlGrO+bI+S/INyoTBK5NgLen4VJhEfybdYQ4sVBubYsFxUBLiyaWtq5/y6Z1c+6TDGgt9SpuMX9XuPln4elRvqrTEXoBz93SCxdC74lY1yId1IavbcXRHF9k6cEQYnHcelJmPbpesDfkFSqb10b/a7Vgjstzz1MlrhK8MBJwxk2DTH20hbtTn1dT2dDG7U1UP2R3qWZ41zjQTr7vdtNNBfkQ9fbbj1dauyIl8tOg8qiTvLnR5I2wB8mnmXD+kebrb79gz9TRrkMCV/3CwSF6A7AKF5Vye+h5pE5eHOYD5TTyeIrN0CDnmEebOTErsPX1w281hwy1sW/+Qbts8O7w3h3hk0ik2m7B5kgH86O8W/qP9WfKTofGjzcTqZr/bkfvY65qfWjFJ824BLtuOPZqwa+u1bLgBGsj0YiLPjE2xCvKoanTTDr+ah4TvzIREW77iuJf+bgXHbdoAnRiTsC5Iyl6gNUUlzu+KTDivEp04C4jQISF+dxCmc+reIxB9Gf3dLp6h2xSFAxroNIt2XXzLsTTADiyXZLEf8q0WI8HGj6tpK/RjsU6NZWLg0FpUmeM54dUvD0jfBTYJssN5XWLs4HzS0R4m5ytk/LhkF0uEEKuY+ryyevYMgmAeunatePvQByYbCAQ60bL6AgArTG/2Bt1XCL1HX1HGo5NKWA2g5I/fGgCpy+yAIFnGeasGH+bguXSSLDkLPi3LIs2BuRyTsBrAyG4SNoDLcC2yA2DkWU3XngcOtq057J7PZf73fVqRy1yYZYDpc8yDGpf1+Xe02TfpV8QvS1AJVvwyEm4tcBs+W1g+rcsseSSnwTnTMyk20rU5gdhM+rsNt+v9lyzd8LyGr1b7zq/RR7QrvvKSsSlPaLiqe1DbxJlMLFz8iSq3zKxzHGEI25dcp3neqi1uUzAJNu6q9ZkJvPPBpzkdBRGRKiSuBrSyC+UNwIqzOqAUziYf3hQ7HkbDt8ONGv2QfD9LymQjnN9jEtYFEs/5GebhMT1TZ1ehRzY549NshtwhMBlm+P8Bd6OX3Dhu/GjJ52rfAIzI19Vg0fjZB6OQAoCXU3yBER/TUf0SOArsIckxKWh7nk2xaHMoqfnpyvBtbdjUvqZhDk2GlTsyNWz+cYB5usMbGsCWHpPwxGBJHe3yjHwcmfgdMPsRA0n5DP5lezd3wXJx8RQ6Dmt2EkRkcemI+mzJ69ck20PM+u+rQY/+dXkD8LBMHLCjYzAPdPAMHZ9cGS8iF2MiuWQbv441QdvXj7xvn77bS3p1N1gKFpVOt1h5KLJ08/i6KnBUH7c8TKcsuUD8Fd8UdU8WVn7pXtlkV13EdIvDb3d36SZNsh597AE4Lm01Dfd9ss+31aP8pSOTnSqah8uGlTq/tt3hhxEkba5Lir5NORSPj+ZtP5cS4cbU1aBh6nzfF/gYgO8ggHDxGgRIOMgsT8jbb19TYWeDS7Lwa32e/0CcE2YSntitAOT18yyBn0U2CYMY8jvdLyXNK102GrIIoQp0Qmw/QAoemju/Es8kWcxDe6/Bb2jT3+fY5lwQh7LXuQ1hiLM7ohDOqgIhzgFhcPgefV22f3odkmn4brMv+7n8WgibVePXVcGme5feGTY4uyNs4KxxqmjIBR3t5dNibjVd1m+zfYPyiwoJ8KFTVgchj7UqmoUHlOzWqZYGwILV9anwbPMdA8eqkmVWVVSXB6qmKcWy7UNVvmCX4R5qtCCQPCDkCB7L9m1cyYu2Rq8j9TQL5xZpe6iezgW3ymuH65XIJETK05Wjf0sX445k0UZLzkJ9QeQFIRcAha1q/6EXOdsvTkGpz1b3PIicxo8rAg7e3h/f0XPEzsTD+ZZsWXZFXQW6E7rLI6KH/r6a+qIutXUNWaXu27WvLGVu6fLOlEkIWWWTYs/6A15IvPoVIuYKD7f16omDX2hL7DM3JHxJuPlt+GgxDthXZMsLiEfhkuLuiq4gtC9ARJ9nIJ85qELBYagTMdaJTrBZ+jkty0o8gUF/d9jE3mz2VSXD1ZRq2ZzEDpP6vGyTOqBrSW4KPPbx2VSmOLg0IFVu1daKeA3u9DV6yCFWAlrGYxKWC6fAbe3qTrL9PibE3DZ/Ki3HY815zO/aauxWm0Nj1H+264rypeq72W8fve9C57i41L2Og7R39wqeg9dK3JbEwKsPHM7VdDHYV3fS8OwxaV0o8lopozi4osd2rcwPOcNFpSyP6avVmpbAZ/hmzuUizVEHD5YT/X1dePGZMg/5XbFiN132Q8rk1Xg+bIrNYRDyMK54FmT8vITf6kZGlzkcGtR9t+V2tW9gdn2C/YzoQ5rvhchbIXFdLaWvWJ/G0rNwbS/S7PM0mfdF9yIDH0I5fF2/m160I64K/ISaV0/csXDuimXZ54HLsv5woar+rah+J8ELZ8XOY+jOs3Gocj0LmbH5nLzZoXTzqhxzS9kusqwyLDkLHRudYLFDgl/OZndIyJf1AdUXoT7QdMDkqlDzaYWPnHxE9T7jsDd8Wx/6rtvZIX5j9ewhye9dl7ck3HyQqeOkxSnLQIpakWw5TyoIpZV6keO0xFLisu30ebUoT4MBPAS0PUAdGBjm67tLV2QXJxPGWdG8fOpTzUdbp3R2ab3yRCtwUnBQFJD8w0GZ4joQpP3B7AzjoHBYvVs63yWpa1g6yetQU5J80vUZTC6EnwwfLdZ5cBZoS5FJsFmcyMU1zP6b1di9SXNgUYxJsFgXK7bcceLuy7oQ57ERPeZ3RZ7dRnRo1Jh7hNCIWaq+q8p5yfI82yUPhMH74t6lvtX5pXWOcwj1PXy02CAqyyyFFryZBHN+7wr+HcTuyxxRt1KvV+yrDR/63X+zWYyt6+Sef7th+Gg33BIHW/bh7OKbLvR3m9WcHfrccPdLjx9t+pa/71Eu2Hn8aoHBLPvrjnvVYPi2Gh9xs3koWtHrh7Q8zetv7m9o8nxc9jn0PKS1xmcVNi4gAgtUTNnJmjK8OSIjcirnL3vcqShLoUkscEn0F9e46e9rxOegrT9CB05+GJVzWbJ225+7kqvZ4ZstRvoXT9+j/L55gMDCEVjzT75r+LMEa0RlO6AIB0yKmaf/VDEycaKlCUI5Kic31/JQl7A+B3pRVDvg9Dv12eYkxRXZJEq4gQL9faWwDwJ3b5i7wnsm0IGB02Jy3F3K0+027cAE9PpcmjnXqxKJYUDjR4sl16yokcBo+mrTmGwfmVm+IU0jRf/2NPHya1YqPisaIQduxZf1b2me8159+rpcPMpFWtXAMTbqs0UcYAKxmr7azN/3+EJZ6GQyl2QxeqWPNAc469wteIurh5bes0J1/Vzwm/1Xa04vQE4vrHxmyr/v0n2xW30BFl7sXiYq6ibJxBUc+ruFTjiivuLVGj5arNWl9w/YDxRcxdPfLeps09wkzc2mdZZctdEJ5vzelgnLh3yw0A4l1emXYt9Qro7TE6SwqYcdcVLoI6rLtlsSXjwXkp15A89YwxRr7Ll9jvSxXPx6a8vjfTOOVcV+RdanzFp7Q+JZkTdJmuNlBJZkLL3/Mv6uhw/Y3Mk9+tC6sKye8rXWQbuEaFuXyYbAdYtIP4zr9UtSo47k+Oi6v0q4Nelj3aBdX/F/z86yFAf0jgQfkjy9a6ehn/Bd6q+OX/z0vO0JTrM0qfGyc3Z3fPR9l+X1z5t93RS7JM+LhmxfvDp+aJry55OTmpRYP9ulm6qoi7vm2abYnSTb4qTl9ceT589P0HZ3wmfv2Rpx+elfBy51vWX2jym4s30cC8iX/4Ee+RoesPMR3bFZRcy9POHzv4R7VpwVy/LqOMUmJo3mLWoRgA8FXyf4ooMcR8IjIvXx0S/7LMNPWb46vksy0ZPxpQzhJFQRvFl/vmxd1vdXx/+LZPn56PKvt12uPxyRtYGfj346+t/WBXdbRV2x+dek2jwk7TDoQ/K9WxnDqLHmOQ1gFHyf/8QwbirxjQoJ3xeh+XYDHAXPP1mz7Ac8KrvasqSHPhRMLOtmHPV4qEu7UGWLhZ6+M2uwcHiVvrUC7Sh0U6XmRuYwNOI8TZWMK8eI73WaSyBjCuU97/8MnNOQz8s9cc+52knAZJaJYWKC8+8leTb5bZVs98mwrGsnDMTDR6bX6f3rqrCXY8jnU/bNQ1o1N+l/Ckj9b7vk+3+3dr/TzRodt237syF3BNoxwu3nc7kNw+z0azuqqlp38RBEyX5tQNUh/OnPTkzbsehdWu3QiIQvqX23cN22kW9FtX2X1GH0vUGbPY74br3ArgzCkVmnCcsviAk/fSsuEnyQ8jzv3zB35/W+2PzeTrPP8y2+yYbEmXg2jYGht2inm007BrtogYe2Z91NBe6jEdxdwz2ezpMNOcnnPxxd1p/z9O/7NuFTaw3s0eQtC5DMeERDPQgIPuxrNrpxGdlMJdv7fFHqyftDtosyeVEI9TyAUEFHgQ74iIWLmUe7w1KNXd12ubxGfvRbqZYDzzGnzxhnjoG415jCDoOy25kOFohEK0cv4zsJGW+Yspx/9Pm8Cnd0+X02r6L7HfezulENP4xYvdmjMIyIXmfFrsxQ4zeQoTm1NsQBvcEEJNfeOLguJrPXjDW/K6oNqn5tIXiXSg1lz6oLcA9lrIG3w3R6zBnCTBcIbb8km9+DTCwu67Mk36DMc6Ddy4ZduKPvEzn42Gqcpoeo+NFCLuzsesIn0v8tNhDrY8ICr3Uyt1gEaHSfK/XqinZbwA5U4s7owQLLf6BrZ7pr4ObHgzXecDdZmM5w68TJ2PzDxMjF9vR0zLYOJFO50HWBl8rIOzX+o9U2Y1sb3nw+VUlekxjYN9R2oDO7/kwE84iFx+Iby65/wcCYn3mjx/svnxL8nLsD7qbcgbYDTeaMY5lBl8kcd7EAaUKsj7mvrwACvQhlnrGmZ/QTH9Jty2GHN+I04xrbQchFmifZDHzftD9Lr0ncZX2z3+1QRYzsMytx3Kyz8xbOjsJpYR1olsG7JlS2/dJwKaJdc6Pzeg3kz3CHgW7aMVjzkEy9W6jFzY79LIERLei2aWPZ4dlB7iLNnAb0Y2Zn6A2Z51w79eh5PEE3R2Cb0XywzIpkq3NUxmE53a5niLiCN8W3HIvmvXd6+q2mg8EkwXuhZr2TF3JpJaz/s20mUu8ZfSqsd17msXHJ3/g7l81sSTK6mHHM+NQ7OqJo9Lr0CQhgGISqWwOTM+WuICYAlifEdOcNuq8Qeo++oiyMUCGmPEK1xw9YeI8S4cJlnxBdkLQrxJDYZ6VpsTD6SUO7ood8qw2VMBuKlGXRFukw2jLG6XXRLaS5IHXI64IoOu+s/aZ0O8T3dMNl/vd9WuE7hsMecSBbIB7j18v6/Dva7Jv0K/JZkGjZZCSw2ofJm7Qus+Sxv2PDR6eWk3eI5XStgMc6TZK/Rh/Rrnsx1Z0PPIzSuZaPRUZWAiJHZ1IB/05+gj1sYO0qpGcVQnuLxR3+dZrnaX6v29Uwc0+tf01M9kiMgrqnOoi4r/mxKHYugMP5Am6oGdQ/LnHIjT8GHfO7+QqVVODI33MxcTD6nDsMyfezpEw21LnCgOuVWAGfySad3wV9fP4ZDQnUlSGcVrhsaQYd3GFf+i9aEj5X+xljCaZd49MdyrdPKNR4scpfvF/vjkPZhgIA7RYltd1MJgAW8f7QDyg+FSh2z+Aye353WZGsHYvUqaYfIYIubbl8SPPvGMDtID51GlWv0ICLNWNiRHqlxu+kNub2a5LtXdgZQ+Ay36TY0B9RWVRPxZHjyS0+NTHe0+c9wuvMg7avH63Hx2NOL2wNKl3dDTXmrdN1kaWbx9cVvrAoZsg5y/tPDswv86/4wt97YvNfikaz3PrHnxzKuLq7SzdpkvUNw0YHj+b4Ptnn2+oRn0pyO9U6Qv8hvROugTXY/WezeyJsMU88qkFeRP9czjYxGzvQ98V96rRfQjJe95eIGe3ZDcQteyN61+t9OMlUDeDFv9h7H1qLwLwj4c7iaqYku87wiqsDQMbMTqEKdOanOOYiyg3N3dthDf4iQCAbNA7ktmIC9Rm4jn8t3MGF88bb/x9KDLoYjpleNshh+VIQJ0T8C23VGRtdK2f5tZj2cfRbjlaYwgZ1xdRQGS7+CqjI4HsGfTG4CDfMTLn91gB1k/3nDsHhl/XbbN+g/KJCc2LDdc2FN74rRoDKO+C1GKzVp8KnzXW5nS3q1Ay6MlfkyzmBQnnzybZzLls4BcZYIcy5vYZBVaQ4y67Grp3PPtP5nUfdjvfY0GWHb1dhxAkSI8wFoLhLEyQ4mKvxZTDrh9gZ8LrCMx/ApA0fQw8y/TvPtw58LG9ohl5XN7wWQPJ+ukEME3StcPBAOVJIxCETfUmpgzmp7E4RiGz2J7m4EvgWWO2aSLiLY6gwhZnPW5AAjoM6PzFKbFdyn81vYX5fEfYBQg18N/mcoq9csOQMEKiegjvt3nousSdTVp/Dw5f1aVlWvqHz4/7oZrOvqgA7vsT4/p3ZrE1g7vshbgo8XnHei+xyOo1XxpwH1q0a3daOreq28khl9XPD852Awg3x6i7M/rHNNu6Mjx/YtRfXZVEGFtYNRoKpg5jAmaKRj+Pwqalmv318ctc2u645XYe4Oxk8o2C0ptPlCxDAenVn3anaIcZ9gWaFaBmuUwyxbBKCzUWao64e56tA1/ngCqtv8l72bY7O6zWUQePTz5YDmSGjT+mLepxuTHKZBwB+x+pq3wS48KifXHxI8z0VFik0JN+us6+/J9KU3hebxOhy5APwq5YdWlXgV5SeSD3O547WNgIyruXfiup3whU/yOw40uV5uNQ8xGNGJIzF2dcGlXV1p1qN+uRhPTREECP6rg59Nwitt4eqF0a9wPlEV5yivyrgf/ziI6r3mR32PMY0IwCu2/kdfknx7CHJ752WcSSsvGApsnrarlNQ3EOUicVBevOuyme860swVBDQB4H7+tcy7a3cBUkEcC80Iy9r84z+QVyL60vbAoMfbsUA8AGgHgDkT8ihdE9cO1iVZHSKRhgyzmhBUobb1iiV1fMujlyzDmc6OG7S3GxVyegF+mIrnJMMeQ/AaD5nTLluXcrqfOnWabTcKq/lmeLazrNd8nBeVQU+cexUVzivUz0NGTs99yTgmtxEgB+9rOz3L8oyS+F1V8Z2f7aulXdFrZ45+t2/Ggo8N8W+2qi52uv+AdV1cq8LWrJmi0ccgU3ajzupVxVcLr/C4SGfm423v75BLZrzjUwWE4VOs+yvO+FhxJBO+mbzUGRJVT+k5Wlef3N8XI5n4hRvAjGZc2V/Ko+sb3Lr/KIzMln0h3n6jR4mnn/Z487BaTcCYuIXHkHqyHo1NwxUBx08wUrb0wOukmoJHopTFbtS1ws5PGpPKrJ/TLBj5OM9e3bJdxd2Tm6rDAUHipOvAytjgYIt1MsxkPxP0VVdFNUuwNXwV2RfIhm744Dn39la8IexP3zjwdZtbi4wWOEb2afbbdpBJsSmp8j/qkRBgkLOsqJGIRjZP3zg0kKmkZVnQ2GHfR7txWz8+KRd/2X9W5rnk4t1OXATMszgIq3qWc7a4NcE5+CLY6fw8SDwaCR3f0vIU5e+rLtV48DGaD1nher6+RwuGTN+EXrh5Yx6KiAcIqj7DOD7vmzFvC7qJsl8F0jI05dVcH3fpfcP2CcVajg5VfumuUmam03rgH0Uf1smfqfr3qGkOv1S7BvK9wZXFofDYTeKPqK6LPJawJDb3cEsV+3TrGEm+q7bB8D40qN/X+FWgsVY6rSui033RM+4oot7gtveGSJ+K/U835IXoAbCQa4blN09Gz592GdNipfb2xLxk+h8nVzlb1CGGnTUtr22ZPyiVb0hL6vzFdEWJyu/l5ARYPzGSvBPAuMWDajC1YE9Xl43VdLWnAidNN+kZZKxGnNkIMakB/pPRqZ8yhvUDtkxRDj9/IobuXKG1Rng5QkFDTViyLX41BkPOWQIJVNh/ZcogCFlUYfwBDnotFkA1GlrUqGe2OHVMSmS5FkWRLhCbslfGgzR+2NT/XVf42FJj+SQuBG7uxmxY1QQ3HvGBMwE8dvz/K6oNgj/DWgQxg389OzZc6FGpZwxx6WcjGXbD+tuiOImxfJ1tiyYrslpW/OOrKMXa3j4/o/UqV0DJ5WjYM2oyGvJVXUx0UXeDTIHFyEXa7P//I8ErU7llSKLCLcGYHVzkwMBVfeGVgHMIKHkpwItVi3jIfmyEBtefLudZJGDbCBmqnT6aD+YsgFsIGCM4ppUEP2SXhB4BCg1ht/BbzDfkn9R/SnBDzpJq5E82M3UYPcljrfBZXUCCiL0n+fxLuIz5ZK6lLxIbgefSR3PIuNi5yLNVBP95ZGDBRQl6L4+FdwQbdYPm7aIpGrITL/3O1LgTKRM3dGf40FID+BA0KHUM6nNiTwEiIIUGQFFH5K/FdUt+XcYiCk2ODAZu7/RfYmCHkZIUYqZh8edpia1Sig9McRq5FlqXGdEBFm/LzLE8oH7InPUrsAXTTMrk3G01dTqiY2mF5mS2Y2pF5+SjWh6WyXbfZuS3+v6t5CzdeNggAOGhEX3dP69RJsGbYfKgKJIIwHjuqhJoPHte9S2dwUcBkKmEqePUTxMJyMjwfBpFhiN6plU6kDsCaNeIZMSO9LloYPDS34A5wdwrDsjnc9Zw6gmNnSW6LosoLP4SOY6Q9t71C0T6oYwFC3rfejvqx7I0JIa+ZKJPt5wRltoTJ9CCaNYBFyDZ3FA5wH7GFskL+5oPhbFTuthMBFTed2HKPjBRYErgGzCLAgiappUIyb0RA6jjl+ZMR0RlmLdDsgIvAfscoxBurivGUFDv+52umuLVceCrQFFoMicQCDFk8EZrN9BAg+/SHJYuGMkhmDHETw11LHqHQToqHA3fKJDEzXGUsvCASOf7Vgg8oxT1qSm48adLXreoz+XaBKGuPTJxLXEuMY9r+gY47ro0UUaVHV/GoV/b80BV3bnhBYIrF8AGZaB9X1lrAMa+MWsq7u7AB7nBzLCHLkgb5gtD44sSRVLAEv3QzflQ5p/x9VEBGXHznzaE0ATr9PBdD8mAUBLg2mp4J/IDsku7Gc16MFR3J/LrEi2ETqpRULjF8CBcWj8GmBw2SqGC/qIyqJSrOws7UdYORk5+KQngCNOJZNSO1K0ff24LKDeJ/t8Wz3ikdaaJ9uMmGwUB5vyBNDEanQonul92jQZel0VzYPyuEWg7qnLJFy+8YRWWigNTUp8nd63xl8cBQV+pni1bmSaOxBBJXOlPu0JYIjX6VCcSXfeBl5hXBGcFj69FdcdWZ/eWgWQUJJdZ0mz4hsORxE5EcavTwE8ozYHAJwku2zQjuxpDj9U6JnIhQqcEqIhCRcJyjEbjig1TSqXzhAAVUS1MOVGAhcBVdu36XEl1GNEHHXyCRIMn2fDknld+mOnV8avxEio6a+t68TufqjBA9xbR3+OCCSJJFPCbGCyuK9uIg8CrIAlR3ZLJtha1jEth6e4zskSQ4uPmG4nn6ofLxmNUZ5g/2Y9Xlmgn5OWGhtMvxbqids6oISlFGToPj4pGBGVDgRE4+RfB6Hl5/7x4RN75m8MnBWsGHUPCGsPjNHEAHyGhEgginuYlVHRpFo70ngHWVXlxfM+1Itb63VAwLNg3eFV+vsTcEO0PgfiiW6HCyXqdygLEK78RC5WiLwXb36lwhogg4Ver7P5AZVVQUV1rnlpqCx5KD4ubKyPxa8BPJbnm5dG07rONkcOAXE+1bwioBmeZ14JzlZxlnkRlNmfYl4UZHTboKGmOjE/5ZA6kPhok4FstnPylLImtUwow0HMt8xF/NdBuK3IQFrMSR2Abypay5AgJF1s/kjJVt70NQ6IcHlAfD7zfR5vNGpqtDg4UPuCidIrQLkRXdIk+Pxh+suhIrJrsUTDsq6l2W8fLd7BpOjZSqS/x3EyuETJyXkhbR5nQ+lsUtG+uOKUMily4WAiIvINamUu8ttWuk2jejqDpharc0yIh65eYgDoQ8J8uBrUjQWsQSWj/quTbR2wIj80MzUXYOl6s6FYkeGcs60loGE8SF4FLiYPaQwNt15kvQCx7CSiYmSSbfHBL2uqFc/JFx/pRB5AO2C4k3AVkFr5As8ibmkBABl7pBVBpx+E3Tykd2v3RwuNjRcAks3IeCVY2n/ZpU2DtmTdO8LKjstOyGECwna3Y6iK5TDxW1H9flVt8b1RxU490BlJmUqkvkZxL2N5vbywMGPiLKiadDap5JHaE12CcgEKj4mwVtGiaqvhdvjj7CHJ7xVRaEJOuK6n1LgAZNVQyzbQzAvH0RJWyBhyhYInp3NAWaL6Q2uUrsMtrg+VyzhJHxQuj77+cEn3H2MEAqdMhLS4aKQVUMkVB4kWJ1G4PKFQyWgbTI6oftESk+vwiuvC4TIe0R17S89Y+ZHv/HPWNcwy4s5dnWYXawj8lfT4ETGymiHXQohxGGqtCjgRoWLWGx42HA4PAGZDmuBgWMWgZCGQWA9GFgXM+S5JMxJiS/6SY2QkZOqT+hpl2EvKEyWYCUGTdib1OFJ7IqnTKECJMSJPNg9FllT1Q1r+ZY9qnHJ7mtffVF0PkIfdPIHS42zwTSV3SsjkGlLnCWUB9DdBA5DPd9dH0DioHHHxeVqWt4M8RuBsM0jrvxRCtiNAstS2F4ZkbnBiI1jioc0SEJKlc/uQyhEXkmSTtIvmtHCaUy4ZDGiKf0zHSVnAEhpTzqWdp06S+O5zkuggHahPw3l67tO9iazEe5JZSytLW0WJcacunhHk0xbo1i1aSXgcmp8aZPME7cjDCbDUpGcajBz6zGdlw8wVzYHcB5yRJ0LnbZ7msc3TtDlQ1ctzVmzRRVrVzZukSb4kNRKAinPdoGY4srDdVqiuj4+6BAoLY0qrItolr463X4oWLMmXbMqGamClkC1gWGQU+A8JEPvhWkodc+jxcaEgiAgqVKSzEUBZsK5Aw4LosxBwaTSFtEj6XIhRubLSFGUYcu66Y5h7lyYtAScbljKc3YXLGVKlJQ1XxevKukG71gOAGJySoFKGVAN1qAdqRW2oRFAZ+mVeo5JkhSj5m7HuHleF2Xdp0iJwsr6U1uEmVSNpLHQiVM6UbuDh8ItRkIPrvoP+jbz7ZcZZ4dm4dGlJ5v5suKdQKGpIgMro0vTMh4s+AfZTElTAeEOovogMbe+RDLtMKljQRGCAMHylHVBK9xli391FaMJWUelssqwY8yqXXAkHuDCQDvZn4LV5hpJwt4bJBOHIFHJwt6pZDCoUvRNFoBlMGPVTwgv2oto8hXzgRAj0ZfIvFAtF8gRQifxLzVoPw75jKzoaNh30N+xbvuam7R+8VJi2p5Cbtn/4Uz/qHZ+1Awa+YxpczviUn0kp3Q36YCFdkqyM7sUAkyK6dybAIrokWRHdEymmRUhaG5usKsqspdHPn4CFDYmyooanX0wKkhQhZ24qv3RIyybLdTAd1NKPacFQ1hRlXhD9ooBkujgkyxtoR2GAA+bqd3GoQKeCQwX62nuLnk3doWn7Mbv+XNON63tvg+LoG67E0uhUsDD6li6jsiRugkqTlmPYFfPXDohl8RRgifwVDEblSpsakyotz3iqOp2Jh0tSgHG6B8ColPEKGrigMVlaVk9hasDhiLbEgkOy3ITDVU664sRAaqFIkQQqVgwQNy5aVaamMItS+PBfeZk8pVICPuTZWh4TScxkSG2KZ+Ma5SKwdEox2BhOS0n0MhiVblBwH4gnFNd/hwrpQw6NOEtcO5UmLcHMtZ9nu+ThvKoKPI6HSmLTwdLefzh9d0to9A5JDIoQvZJIA7omnszAHUI7TaryJyqNBNMumI0FSkMxGEKdLUpnYbRCmBRuVSgdeaAqm6bTiEBHa1hIIhtD8RSa0uFGR+1X8aP7W2rfiCJjhvgUDb+JJkazjzpOn4SttykXt9lFso3f+J1UVg0DFcmSD3PRKKCjSCQXl9l7IcL2XxQqSvaJptx0WhiVSYzGsOkj0Zim0QhPY3MSu/uqU1xvLFclqZv3zvO7otog/HdfhERpVZ5ZalDFB4sVAw3Afbsy++iu5hXVYWdHkxrD93U1DLL8a2QJkVKjCLPlPOnQf16jGcbtCKUJwPcoQ6sPBgxwXKZkbyMMu7u3zH6/aAaQTq4Kv9tMFJg+GhnB0IQuNY/30G7ZHWeg5kUqhdj0rl4ncfdFpaqwXz5lhPfBvVTtd6aVinY0M6hJ76hP+bqv3kpOG+K34/aoqCZAJRda3KAnUtOfdSrrzeSgKtkyv+U3zoHhKkSnGLLSYQLdiLX7olASDACY8gZ0UlTNDcEJyurtieaqXUNjeXljjW+CCWfxxxGc1KjN2yrZ7tvE/F4BbQX1HAYwns05KD7EjtyOUSqiugKNXFQ+hoUIO31UKMmG1pB8w6dwSuI9bLWKHcWhKTgCUlGLAs0cUJ21FqfoI9VwGSJT1KcYEdVVKf19obY51hgXd6WoW5Zyjhp2MJiD6jhGS1XJTLpcWDoEjUjZfVCoB0WXjTnnmPX0QW+KOgWe6A1Ul0bm8VFOFumm0NbkTdlA6itD+3o2IEVwA/EheHr7qJ5CDWseMN6Qtg5HEHBVhCyLylcEYEKj1Q1wEZVKWnh5oF/q16yIAFShtwSWWBCi1ar7leGtTv+JcBYTRFsSpHXCcT9Xd3fauh/pnobqfXSuXOeOILSykhDjztPxaQGVVc6yIbLgtRxhfk3rgZfcPpdZkWw1tcySzqL2rIuCvSZCCLhUZ54ytMpwRDvJzSeFUp4PRpfqzhGGVh2Mq+/mp2xKMMXTpsnQ66poHmQLpCBhaMX7sF9+ezN0bz0E/svV7Ajm89rM6QXOa/dpoZTtVnenIY9UaY4weN1GW/8e9KEOX8iVnojCg5k7N9JnHL8GUHQ6LHFLHdKAtAUp1cLzBzlG+acEjfr0yQwmdyDliSr1eIgD1pslUgssCKtVkT1+MuYbPgdRsw+u4A57wNqCtBqQipEY9GetAST5p4Sgda3RnycLX99x1MXwuWWOKMlbNUMXqEUuAvRRmf5Am0bljmouhenTeGPO7mPILkqhKkczRwc1v5L9AyKqzXeITjtIZMLlKZWHhIX2QfpaY4+USSuXIQtdv8CpuG73g/4eTOHhXP87lKkWwFi64DOnGbf0egVwQaoq7dIPUjHJ5g6THlqxWHtYvRLmmzzqDMGnhott77B66jd3lPQzmSX6tg5t7Fv2yC603SUjNqtvaTWbmkZmkVnQYQiKWbEwo8Lj4eJbxTKgSKQQmz/o3Ak9fVWpLB7InnKHXgRkj2/L65gmC17HURSmjlfrQvplpAoVxKPfnQr0d5UJ4CPrE4+g+1j0qezb6bi0xBACoUYN7rz4pMOYoDMEdwScsuSQENYE9Il4jREo0tnNIDq96WsYA0yoMrEBTD0LqCMbY/Bywo0PcofIkwZ3ilE9Aq2Vtr83qXsPpaPVdO9Nbh7SO31ds8SzKB7B7Q0a9Q+/b4c7YuS6c5RzToGMh8QOigMPzQNK656jZ0QX7vAgclNfFWrLrh5hWYyJ4dSXvoKusobZ0+mwgvxVH6yGU6qJseBrTGCOA01A5NiYzMVUPjha1jTge9Eq8+gfmIbVBBaAhTQTc0E3wEDcZkCRuZHszeODoOgm6XsY4PIkaW+keYk3QH8U2zHzihn4GF2W2UyyiI/htTUyyYxGMGtiARTV+gl1htkMEN1PCK9fArZQv5DJKCJcVEWEp74qjMBcnzXlCzEdh54rGe6JAubjCnLFYFt+oVQ35obSVYN32fVYPLchNaSZ2KcC1TZSPCsoVagspdqU6jsq1HdmAdxkxvYzEPBwndpKupfuZEqK12LxOtIUa8YTcxuXFlHSl9bmxZSPuf1MJD7mpTaS5vEvmYLivgmfZtz4LMwdymkzF9oZem7pu1TR3Pdcfgo/aIW5jc8cjWkvT7rL6foP7c+mqJJ79KHYoqwmX1+efNy3uXeo+/UG4RXPkcXLlmeOyHtaE9OB5jK/K4bHnjiJBpIheRx/Nck2aZLTqknvkk2DF93wSn1+f3z0a5LtSff/BW0v86t9U+6bVuV21JQxSxf4lShV+S9PBJlfXpWk3kOo0IqZtiqgq/z1PsUBOb3cF0lWc61GxgI/P/UWtd+7umza/6L7x5HTL0VuyKg33/hq1ie0K0nI9VV+k3xFLrJ9rtF7dJ9s8Hro15SMumVM9BXBmv3lmzS5r5Jd3fOY8rc/Wwxvd9//7f8D21/mdFO/BAA= - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201801140018352_Philanthropy.Designer.cs b/src/Dsp.Data/Migrations/201801140018352_Philanthropy.Designer.cs deleted file mode 100644 index e98c546b..00000000 --- a/src/Dsp.Data/Migrations/201801140018352_Philanthropy.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class Philanthropy : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(Philanthropy)); - - string IMigrationMetadata.Id - { - get { return "201801140018352_Philanthropy"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201801140018352_Philanthropy.cs b/src/Dsp.Data/Migrations/201801140018352_Philanthropy.cs deleted file mode 100644 index 994d34e9..00000000 --- a/src/Dsp.Data/Migrations/201801140018352_Philanthropy.cs +++ /dev/null @@ -1,66 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class Philanthropy : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.Donations", - c => new - { - Id = c.Int(nullable: false, identity: true), - FundraiserId = c.Int(nullable: false), - FirstName = c.String(nullable: false, maxLength: 100), - LastName = c.String(nullable: false, maxLength: 50), - Email = c.String(), - PhoneNumber = c.String(), - Amount = c.Double(nullable: false), - ReceivedOn = c.DateTime(), - CreatedOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Fundraisers", t => t.FundraiserId, cascadeDelete: true) - .Index(t => t.FundraiserId); - - CreateTable( - "dbo.Fundraisers", - c => new - { - Id = c.Int(nullable: false, identity: true), - PhilanthropyId = c.Int(nullable: false), - Name = c.String(nullable: false, maxLength: 150), - Goal = c.Double(nullable: false), - BeginsOn = c.DateTime(), - EndsOn = c.DateTime(), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Philanthropies", t => t.PhilanthropyId, cascadeDelete: true) - .Index(t => t.PhilanthropyId); - - CreateTable( - "dbo.Philanthropies", - c => new - { - Id = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 150), - Description = c.String(nullable: false), - }) - .PrimaryKey(t => t.Id); - - } - - public override void Down() - { - DropForeignKey("dbo.Fundraisers", "PhilanthropyId", "dbo.Philanthropies"); - DropForeignKey("dbo.Donations", "FundraiserId", "dbo.Fundraisers"); - DropIndex("dbo.Fundraisers", new[] { "PhilanthropyId" }); - DropIndex("dbo.Donations", new[] { "FundraiserId" }); - DropTable("dbo.Philanthropies"); - DropTable("dbo.Fundraisers"); - DropTable("dbo.Donations"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201801140018352_Philanthropy.resx b/src/Dsp.Data/Migrations/201801140018352_Philanthropy.resx deleted file mode 100644 index 5b24be2b..00000000 --- a/src/Dsp.Data/Migrations/201801140018352_Philanthropy.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.Designer.cs b/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.Designer.cs deleted file mode 100644 index fadc465b..00000000 --- a/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class Philanthropy2 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(Philanthropy2)); - - string IMigrationMetadata.Id - { - get { return "201801150053109_Philanthropy2"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.cs b/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.cs deleted file mode 100644 index 5e0ea9c6..00000000 --- a/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class Philanthropy2 : DbMigration - { - public override void Up() - { - AlterColumn("dbo.Fundraisers", "BeginsOn", c => c.DateTime(nullable: false)); - } - - public override void Down() - { - AlterColumn("dbo.Fundraisers", "BeginsOn", c => c.DateTime()); - } - } -} diff --git a/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.resx b/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.resx deleted file mode 100644 index 66050ff0..00000000 --- a/src/Dsp.Data/Migrations/201801150053109_Philanthropy2.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.Designer.cs b/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.Designer.cs deleted file mode 100644 index 4b45caa1..00000000 --- a/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class Philanthropy3 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(Philanthropy3)); - - string IMigrationMetadata.Id - { - get { return "201801160331190_Philanthropy3"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.cs b/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.cs deleted file mode 100644 index 0630a3cb..00000000 --- a/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class Philanthropy3 : DbMigration - { - public override void Up() - { - RenameTable(name: "dbo.Philanthropies", newName: "Causes"); - RenameColumn(table: "dbo.Fundraisers", name: "PhilanthropyId", newName: "CauseId"); - RenameIndex(table: "dbo.Fundraisers", name: "IX_PhilanthropyId", newName: "IX_CauseId"); - } - - public override void Down() - { - RenameIndex(table: "dbo.Fundraisers", name: "IX_CauseId", newName: "IX_PhilanthropyId"); - RenameColumn(table: "dbo.Fundraisers", name: "CauseId", newName: "PhilanthropyId"); - RenameTable(name: "dbo.Causes", newName: "Philanthropies"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.resx b/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.resx deleted file mode 100644 index 4eca4466..00000000 --- a/src/Dsp.Data/Migrations/201801160331190_Philanthropy3.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.Designer.cs b/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.Designer.cs deleted file mode 100644 index 77da29c7..00000000 --- a/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class FundraiserDescriptions : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(FundraiserDescriptions)); - - string IMigrationMetadata.Id - { - get { return "201801191611287_FundraiserDescriptions"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.cs b/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.cs deleted file mode 100644 index 908a837d..00000000 --- a/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class FundraiserDescriptions : DbMigration - { - public override void Up() - { - AddColumn("dbo.Fundraisers", "Description", c => c.String(nullable: false, maxLength: 2000)); - AddColumn("dbo.Fundraisers", "DonationInstructions", c => c.String(nullable: false, maxLength: 2000)); - } - - public override void Down() - { - DropColumn("dbo.Fundraisers", "DonationInstructions"); - DropColumn("dbo.Fundraisers", "Description"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.resx b/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.resx deleted file mode 100644 index 290c15ea..00000000 --- a/src/Dsp.Data/Migrations/201801191611287_FundraiserDescriptions.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.Designer.cs b/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.Designer.cs deleted file mode 100644 index 7c524683..00000000 --- a/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class FundraiserExternalControl : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(FundraiserExternalControl)); - - string IMigrationMetadata.Id - { - get { return "201801191637314_FundraiserExternalControl"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.cs b/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.cs deleted file mode 100644 index 2130402f..00000000 --- a/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class FundraiserExternalControl : DbMigration - { - public override void Up() - { - AddColumn("dbo.Fundraisers", "IsPublic", c => c.Boolean(nullable: false)); - } - - public override void Down() - { - DropColumn("dbo.Fundraisers", "IsPublic"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.resx b/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.resx deleted file mode 100644 index cb30737d..00000000 --- a/src/Dsp.Data/Migrations/201801191637314_FundraiserExternalControl.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.Designer.cs b/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.Designer.cs deleted file mode 100644 index e0bca602..00000000 --- a/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class FundraiserExternalControl2 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(FundraiserExternalControl2)); - - string IMigrationMetadata.Id - { - get { return "201801191710242_FundraiserExternalControl2"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.cs b/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.cs deleted file mode 100644 index 2284ee46..00000000 --- a/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class FundraiserExternalControl2 : DbMigration - { - public override void Up() - { - AddColumn("dbo.Fundraisers", "IsPledgeable", c => c.Boolean(nullable: false)); - } - - public override void Down() - { - DropColumn("dbo.Fundraisers", "IsPledgeable"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.resx b/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.resx deleted file mode 100644 index 1de9e9b5..00000000 --- a/src/Dsp.Data/Migrations/201801191710242_FundraiserExternalControl2.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.Designer.cs b/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.Designer.cs deleted file mode 100644 index 178a4a40..00000000 --- a/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class SemesterRecruitmentBookUrl : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(SemesterRecruitmentBookUrl)); - - string IMigrationMetadata.Id - { - get { return "201801271725420_SemesterRecruitmentBookUrl"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.cs b/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.cs deleted file mode 100644 index a47a439d..00000000 --- a/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class SemesterRecruitmentBookUrl : DbMigration - { - public override void Up() - { - AddColumn("dbo.Semesters", "RecruitmentBookUrl", c => c.String()); - } - - public override void Down() - { - DropColumn("dbo.Semesters", "RecruitmentBookUrl"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.resx b/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.resx deleted file mode 100644 index 5a069181..00000000 --- a/src/Dsp.Data/Migrations/201801271725420_SemesterRecruitmentBookUrl.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.Designer.cs b/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.Designer.cs deleted file mode 100644 index bf6f8e4a..00000000 --- a/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class RemovedStudyEntities : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovedStudyEntities)); - - string IMigrationMetadata.Id - { - get { return "201806092114024_RemovedStudyEntities"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.cs b/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.cs deleted file mode 100644 index b24fd02d..00000000 --- a/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovedStudyEntities : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.StudyAssignments", "PeriodId", "dbo.StudyPeriods"); - DropForeignKey("dbo.StudyProctors", "SessionId", "dbo.StudySessions"); - DropForeignKey("dbo.StudyHours", "SessionId", "dbo.StudySessions"); - DropForeignKey("dbo.StudyHours", "AssignmentId", "dbo.StudyAssignments"); - DropForeignKey("dbo.StudyAssignments", "MemberId", "dbo.Members"); - DropForeignKey("dbo.StudyHours", "MemberId", "dbo.Members"); - DropForeignKey("dbo.StudyProctors", "MemberId", "dbo.Members"); - DropIndex("dbo.StudyAssignments", new[] { "PeriodId" }); - DropIndex("dbo.StudyAssignments", new[] { "MemberId" }); - DropIndex("dbo.StudyHours", new[] { "AssignmentId" }); - DropIndex("dbo.StudyHours", new[] { "SessionId" }); - DropIndex("dbo.StudyHours", new[] { "MemberId" }); - DropIndex("dbo.StudyProctors", new[] { "SessionId" }); - DropIndex("dbo.StudyProctors", new[] { "MemberId" }); - DropTable("dbo.StudyAssignments"); - DropTable("dbo.StudyPeriods"); - DropTable("dbo.StudyHours"); - DropTable("dbo.StudySessions"); - DropTable("dbo.StudyProctors"); - } - - public override void Down() - { - CreateTable( - "dbo.StudyProctors", - c => new - { - Id = c.Int(nullable: false, identity: true), - SessionId = c.Int(nullable: false), - MemberId = c.Int(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.StudySessions", - c => new - { - Id = c.Int(nullable: false, identity: true), - Location = c.String(nullable: false), - BeginsOn = c.DateTime(nullable: false), - EndsOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.StudyHours", - c => new - { - Id = c.Int(nullable: false, identity: true), - AssignmentId = c.Int(), - SessionId = c.Int(), - MemberId = c.Int(nullable: false), - SignedInOn = c.DateTime(nullable: false), - SignedOutOn = c.DateTime(), - DurationMinutes = c.Double(), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.StudyPeriods", - c => new - { - Id = c.Int(nullable: false, identity: true), - BeginsOn = c.DateTime(nullable: false), - EndsOn = c.DateTime(nullable: false), - FineAmount = c.Double(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.StudyAssignments", - c => new - { - Id = c.Int(nullable: false, identity: true), - PeriodId = c.Int(nullable: false), - MemberId = c.Int(nullable: false), - AmountOfHours = c.Double(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateIndex("dbo.StudyProctors", "MemberId"); - CreateIndex("dbo.StudyProctors", "SessionId"); - CreateIndex("dbo.StudyHours", "MemberId"); - CreateIndex("dbo.StudyHours", "SessionId"); - CreateIndex("dbo.StudyHours", "AssignmentId"); - CreateIndex("dbo.StudyAssignments", "MemberId"); - CreateIndex("dbo.StudyAssignments", "PeriodId"); - AddForeignKey("dbo.StudyProctors", "MemberId", "dbo.Members", "UserId", cascadeDelete: true); - AddForeignKey("dbo.StudyHours", "MemberId", "dbo.Members", "UserId", cascadeDelete: true); - AddForeignKey("dbo.StudyAssignments", "MemberId", "dbo.Members", "UserId", cascadeDelete: true); - AddForeignKey("dbo.StudyHours", "AssignmentId", "dbo.StudyAssignments", "Id"); - AddForeignKey("dbo.StudyHours", "SessionId", "dbo.StudySessions", "Id"); - AddForeignKey("dbo.StudyProctors", "SessionId", "dbo.StudySessions", "Id", cascadeDelete: true); - AddForeignKey("dbo.StudyAssignments", "PeriodId", "dbo.StudyPeriods", "Id", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.resx b/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.resx deleted file mode 100644 index 4a79f4c8..00000000 --- a/src/Dsp.Data/Migrations/201806092114024_RemovedStudyEntities.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.Designer.cs b/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.Designer.cs deleted file mode 100644 index 7fdf5811..00000000 --- a/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class RemovedMealItemTypes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovedMealItemTypes)); - - string IMigrationMetadata.Id - { - get { return "201806102123119_RemovedMealItemTypes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.cs b/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.cs deleted file mode 100644 index 05795e72..00000000 --- a/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovedMealItemTypes : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.MealItems", "MealItemTypeId", "dbo.MealItemTypes"); - DropIndex("dbo.MealItems", new[] { "MealItemTypeId" }); - DropColumn("dbo.MealItems", "MealItemTypeId"); - DropTable("dbo.MealItemTypes"); - } - - public override void Down() - { - CreateTable( - "dbo.MealItemTypes", - c => new - { - MealItemTypeId = c.Int(nullable: false, identity: true), - Name = c.String(nullable: false, maxLength: 50), - }) - .PrimaryKey(t => t.MealItemTypeId); - - AddColumn("dbo.MealItems", "MealItemTypeId", c => c.Int(nullable: false)); - CreateIndex("dbo.MealItems", "MealItemTypeId"); - AddForeignKey("dbo.MealItems", "MealItemTypeId", "dbo.MealItemTypes", "MealItemTypeId", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.resx b/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.resx deleted file mode 100644 index 37c21c82..00000000 --- a/src/Dsp.Data/Migrations/201806102123119_RemovedMealItemTypes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19W3McO5LeuyP8HxR6stezoqTxmdg9Ie0GrxJjpUOOKJ6Zt45SN0jWqLqqp6qaktbhX+YH/yT/BQOoGy6JO+rSHMXE6DQLiURm4kPilgD+3//5v2/+/fs2e/aIyiot8rfPX714+fwZytfFJs3v3z7f13f//C/P//3f/ut/eXO+2X5/9ntH90dCh3Pm1dvnD3W9+/XoqFo/oG1Svdim67Koirv6xbrYHiWb4uj1y5f/evTq1RHCLJ5jXs+evfm0z+t0i+gf+M/TIl+jXb1Pso/FBmVV+x2n3FCuz35LtqjaJWv09vlZtXtxltTJ82fHWZrg8m9Qdvf8WZLnRZ3UWLpfbyt0U5dFfn+zwx+S7POPHcJ0d0lWoVbqXwdyWwVeviYKHA0ZO1brfVUXW0eGr/7YWuRIzO5l1+e9xbDNzrFt6x9Ea2q3t8+PN5sSVdXzZ2JZv55mJaEbrPqCZk5R9aLN9IdnXdIf+urHKCH/+8Oz031W70v0Nkf7ukyyPzy73n/J0vV/oB+fi68of5vvs4wVDQuH07gP+NN1WexQWf/4hO54gS83z58d8dmPxPx9bjlro9llXv/x9fNnv2FRki8Z6nHAWOGmLkr0DuWoTGq0uU7qGpW4Gi83iFpSEkIoEuOtNJen50HydhwweHHre/7sY/L9A8rv64e3z1/j5naRfkeb7kPL9DZPcVvFeepyj5wLbW31SlPwq5d2JVsV9Hr0gk5pdSkL+SVGGTcYNdq6ilDGdVHVSXaK6cNgdVpgR1vGN8lvyWN6TxuPUOBHtP2CyufPPqGMJlcP6a5x0S+apFWLBYTd0UVZbD8VWZ9tSFt9Tsp7VGO5CwXBTbEv14Jgb44G16d1iJ2ULv6wyTOLO/Txg1M6wIu0rGryM0L7dgT4h8RYsiXCHQu+TnPBwGavsbfolgylZmhzj06zBOjh9DnPv+/QGlfuuzLZ7GmtOzI4Se9PysIx081DWtY36X/q6gf/jOH5S0Swe9XXCm6j6HO6tULQ7W7jl/n4EXuCEjeYh9EVPN8maabrdn75U6xS8HD8Li23qK/rkwI74SR3hyvG6bei3LxPqvENdIPW+xJ7K9zStrvRS7t+KHL0277pR6YrK1rVfP5WXCRr7PfPc5IrmN+HYv212Nfn+Ya0ndt67dwOOwZRxDler/E44QKDGW3oICjM75IhvqGbsW1/ppKVQytm4BQ6uuoGT8rRVTf8spWt6RzqB/3Q70Na1xlqCSEJeQLVIFCggkaCOllPH8hgpyz2O60lOTJJUiZVZU2WxNWeNG91nt8VmPPGKCZDCUvaE2iFHai85L1J7/OruzuzVQdCWNouXStsT+Qsa5akW72QLYUsHU1QitWkeshD2tznBE8RDFIxdJBsfbJGwoHGS84L7FBvd1mRbEwWFGhheRkSrcwsnavcw4j3Bm1RVSt8VJe46ujz+0YCTng1leStNKSuLusyX6dkLvYJ7Yqy1lpeIpUML1Co7C6SuZr9Q7LPN+UP0kwNnlaklLsFjkAlsEDlLK/QOcXrxlTywp2dtbzFfZrr5WwpZPloglKuJtVVno/J34qy+lyYV4BESkk+nkAlp0DlLC9Ksmsson48xVLJcvaJShkHCh/5fi8sxGuJQOlomk64hsBdNsKgWdLQiNcQrAA3CqUrhnsCkavrZOZOWkvydJIx2WSVPTkaV5MyKzugmEw6ZFAgWbInRONszqJKqWTvUaYdlwqEskHZdKVFOSJXkxJW2jpvCSTZ6HeVTE2iuyyFfszZEgCyFOoRZ5PoKssNKh/TNTp/xL378RblG/x//aBClUOSFiZUia+g9tTnPS7ESR0xg0obns6gjEAcoIutCgbJbQT2kLMgrtk8tuPpZDmZZKWcLI2znPsvWzzOQhsKMr2oIqksLU+hFFggc5X5L0X59arckMW+rRHLALEkt0Sjklwm9Jb9ukwLshp7+pDk93o3rM6j1kQgNSok0nvrZaeJVnaztAHyNcMlF6sLOdRyc4RGHXhqSB/r7dphJW2YNLhs3cr5f27jAmUNZgrdpvSKiNEs4GCRQCgPEkNjYjlVGhIDJK4jYvN8134lWbHgDS02BzYk3wb0s+EAZZFyQptMt1rouME+S+zDmLve6u2vqsJjQPV4iGnKHCnoDxgKqSNTkPmtkRhltfNbGhlF12Y/07BZDFf4LihdvQBu8l86MZvASK0NCclKlhEk0PQALFW4lx2g4+Fqh8w//S1QFrVRcCgVwlOCTSiXKMOlqx3Kq6v8tOqjFIagCUdWZ3sUhxFVDE8Ddxmqw8MxWG4YAESiaEKSpQHnfrPd6S5xm0rvUkBBl+zrJKZSHW9PjS4Q2nxJ1l9Hj0q6rE6TfI2yCNE6rezE4cFt2zL2L4b5e6U82eljJNRdmXbUAo5EuC4MHNLYiibaXy3lUMpKziQIraGFBzS6DK7Dm645xIyd0U3P5AibqNNbtyGtZpobAhPLqa51eI/OnlIMkPUOFe3X1fZs0rUGlUlgiwJ04QNHj+Hiz0EiUFaMSfnntM5mONRwhqp1me6a04Aj9+K3pS6o3PNUVtgk3r4nBHuRoFm7frpJp4iNu5cEY9Jgb8EShLuJRlBnV0ESf7oLoKxpFtIMAb/hyANbBARNf+R1Hawz9pqMP9EHlHWCSMxdnAnMeb7x5RTmt/1GViBiNSMwL+AOi50uqO1yzQJZdkPAFbrKzYQRIUxQdlMnZYQ1LJwRgziYz+cyyZv4sTPmxLY3u49pnm73Wz7yJmR0yTPsok5COH5C63Kf1qTBnBTFV/3YLvYGjelcjdeegugdtBsP0U5cDKUozlyABBphQ85dAOcRxji+oBRefdLBOlQdJcrImb6YngiQtk1Ty9gRBETdKkZffRECKSAlR6GWlSeLF0jaFyCFkvIpaslGDyftSzIHlBpI1UpMHlQqlqwOK9VTGlWyCC21H8kT+LVuzWkg3+ebZVA0FO8zLOJzL+t6IHN5vxW5efMCvBlipMJijjJtyvuYbjDxlvRH2kW5CKtiF2meZFMUdIb/3DlvP15WN/vtFpXtcZGwzTf7mzP0Ayp4YkhPm6iGUXKqvHQmk4ywbeFwtFa1aREioWUsjtNgVB2NY5LUrRPx6D/m6zq8e41JZ9Joh6fRpJMP3b84JZNUdIOnSvVDMsyoJwsUbMo3LK2OtImC3domrX2m6f7zRmdvJy1+qR2i8zF9o0NuiUABaZpOvIbAVbgB2qBwQ3JnA1Y8OVVycgBJuIcjqnp4OZJtPk9HSvf2dl3myQL67FysxzjbkIVeKQGPfTwuomsuHfK5R+ys+JYTUSJcVXT8rWLvjQQvE427qWs1+jM7G83Ij/dGtnK1tWse+TleVKIbAUIXmnh5HtZTurieId8svocfu7g6H5eRz2Rbv7HGJ6ZhRZweUeyyNZ2m280eJvE6KlC6JlEnXEsRtKhFeTje6kqyzNJSaMk+jaTPeHjzESr63M3NfgxqA2nNCFQAvVNz6w6qKo7wEpKVSMj0XEC6fGAXIgpvf35HdLms87XHTgLvdskymKp9WjqEEY7sSi3rvkToA3pEw75z06SY797ttvXusZqDNIrTtZl4S42ul18pBpuKK7K8mm2zeerWXps8szTUDqlHZlJiMkvSkHCbGG2nE3WUM8SuU8jdrkhzxZ6Af/s1tg23O6MULQO+WMo6IKDNDd/B1SZCsQpimnz7lkgwziaBTRiFcmtAJ5q1OxlM6OJQulw/w0OBsuwOBMR5QuUy//s+LVNUaUqK8o5KE8HODBM6CDQJjj7rsjr/jtb7On3smfpuiGJWGX0rIZTRWVrtsuQHvQ4nzCNfVphXlIvRL6umzQTvGif5CfqEtsVjuEyGGeHoN6vr4tOcfL44xVJ2CtZLmJVRrpYEkIqmqGVqkoMmfNyllU7efsg4i8MX3lFx9f26Z1hG7AZije+u0zzHjQyOijb1DrgCE3VMtaHgwW4zn7fRra54XLUqNTLNdaxxx3uuYanKsR8cverlFkgcqZs/IDlmcQSkYB8P0OU7tKY/TywGLuE02SVr5nW+0FgMXQMmlQO1XPa71GS5xHHaqikwW9k2+bht7zbptzTL5pytjYYszIr5p2qzdj5i/GXZj2SMfhke4kD5XO1jnis0rwnp78VWrAGp24tOmKbb8vUnoiigs/E8vAicaHA9yQiw+LnUMlKDi9ZZ07cE4hwMTKooa0cjtvTQS+YVvsBwfihuDx9+rkk5BnDQw9WzcAeLvBwLx+GnX1m4XznekjBDLjT6rMDV4D4kOCC/4vnag96rKE7wjeJUvM8VmlyKhRI+V7X/8Lqgps/704sAZc28aqY53e95Ha/6YmOWKuzuj91Dmn8n/pc+0GiFSSHPTywCZcXo0ah1uY3A0d4HJyX9nmT72EVZ45B/UNHNNfJ5f8IRKKtbjehf3wle72iMjTYnrouWCsmu7rpqDBbtusBV+uOkLOgRs6mXcy3DEX4Zp/TL/BEPX9oO6rfm8UOlEH98OY4QV3d36TpNsq4xh1sh3oDX/QlYxSBX9VKsX5Qh+zyrY7Ahm3WeYy2dc3lI7+RtAfO5Fj67sfHHuS8hSkhvJzm5ZH1zu5t07df1YWDVe/Hw88GBg0n6TK7jYJLmmQXAtGT8+TGlsUgWAbEdMWZvRQ+H5ZrbhiCZ2pG+/pcxHDmn5tSFu7dQ+7MY3cvDjucwumzznMHoSvc6f8FmPqRJEBV6cKiBQ8POU0c402yYmL3+ZeKBje1j3KozE/Jz3d5Ni7yb7d6ySK7ZGhYp3LdddXkPqVkRuS9rFLwFf1nd7h6LIdjNOspV+7Q7kUyB9SZR9ba7mAqgXSIZ4RiT1cPzmoaoFsypHTZmdG2HJNds7bDDpE87tMPzdEfjx7k26LJ6l+1rlF+UKHKr+1wQC6rexWXaTU+oaHptOvAKLkDk/nRg37hiOAitjHxD9W6HjaruLbHJN1tbbIr3bY1D7qnaI626hfSLAadbtMhXgp7itVK0TC4R7BN5Cvcu0bbPtnUd2n5bJ6ZTw3RvkvN1jL6d4pgNUAuIytSfOEAW8tIwqB0lvKZvKZhl7OlgKdtkrZwdTYTu5NrjlRE254xdynX/sqhfp3Jt+TJp3G7FttTxOyi/1xrC+hRL8Ov6FbGBuMh3rX60bkhesfCQRIVoQHlBwuB+xre9ztxaw9rq9C11nvM79F2XKKuT5/nGj49hWmfq5LxbENTdaZuaZwsiCyPYzPXe8SQtm3Oed4po0V6vFPU5JztFR0ucOYhOe7EXU5vQiRMoHYAoQBR2zvuhyFFzGsHxnPeQcZ5z3kP5Xue8+eyHtPrd1dbIYXWGLaLY74da3CE0VBm0Ns0mK28QYmlina/wPlax9Du26IGU8W7NihMK0ws5RWFn+5LyiHHAIkJUo/qJ9EfVHZjsWSP2lIBw6kBBBBw4UFHG35hSSQskW5ztiHhy0//A5iwewLtZR2tq1oO6tmm4Xv5+WR3vdmWM+4v6AN/1el+WESKPqQ2nGaaO6LsiPCzEt+b4nkp+cs3k06wl71CpdVadV+/O+Mr+iqdQuiyBLMxrFWT64BGny2ScZypKi/aaivY5Zx3jGxwdMS+hD7+nd7rrBEmbv7qzDXwODUYe3SFZDECGRgA2aCZZ2ZpZGuczpR1KYH/Zpa4AEaVEeSQnUYR7mkZWZz9DEufxMmwzdHY09m340BeN7byM9QEda/x3uA5HvzQ6ULYPL/T/pSi/0uiJ02LrfvOCmHuWtiAK4dMkIB5TtYy+7Bken+rHbDEitdF33SG0aKfgAvpFsZqhzlGiUfWQMqFrN9lzAGXuU1eQtHKqJCdAEtRTMuJ6OYl5vUOQW1j4qPxzWmeH37s6H42uMGam7NaHdhijuYo9u6ZFj+ABta7P7PPcnd11mRYlhv/pQ5LfK8KKBxNI1JApBSKNRUVK55UUupFpJ7pACwnOkWjE5uniDPR4U3i6cp7JvI6dlyXIzcusDm4QKOkyw6iyMd/UL7coalHr6FR+QeX2VB7H1QnqXUhHZeUFVcTq4aAyx1jjVy9nrh7N2ojt7xcDPeIyfGEUL/gEl4fijE7itE9lt29s0WFAZwcVnmBnWcwLeFaSINCLjA6347cNaXxq3b5y3K0lNHb58FjdbeKgdydtlKR53gARqvtJkHqsLt550qPu3s0C+/q8IG+3BD8XwcP9I3XqDrP2sDao7Mq1LdYL0mdFnjQLbi5Y7nL9vLURKOuCXM2VpBECni/SsjLFTI20FvshMZY8TrTW+TZJM02pcWK8uej/kctqriYPDDz7hNYofbQK9LCPEPH2hAPEQTc4JK86T8F5Pyhd6sFBoqDum5XaxdsN+X76Owhgyb4Kjt8yeblxnM27IskCG+YJuk/zKsJ+93m+AdnE2DN7PdKeWdcwL/MK51+3DX1yMWI9AIv50BcDky/D9mf4JT20fcAXzJOU1eBe+MvlxUTJQ8oUrtMxxjvHcuPi2FXr673ceGtPp2cYSJafznsxftfOa/0yeogP1/TCG6j08oOyCXsBvx0auwCfZpnnsA0p2euwTZdxqiZAC4wRg36Dy4swEDgjV8F3s/KR5yYnxUZ3R7BnIerjeZ2pwdbWp67oL66xiWlSZygRBE0VGEGdm9tsUdwckL2a3YFGccdoT7GPdXcQDsW52KcoG4IfzrNt8nBelgW5x90R62zWefBOCvfCepex0e3dPt04e+nj3Q7rYELVn2IA+H1R6eISLYdoc1x6IJ0UabE8qrk+oqpK7vUrlzHKua20i4dRqqVd6cf0YUMTMhC5rdfBY5Mb9Pc9yteiNIamkmV/3cZe07U/kLV+KLKkJP73OK++uS7+SdnnOaAlSuF1UAtiMlVXzxROT4lUxHCBPpjh+ec96eVZjp7viFLDxDp7YjtY6KSHT3jJWq4aMfmzXmoy+cyjhtY5JKGvTZP0A6VBfplQpwFAHXaCUzaOt8voGMztNNjmEeA27FtZPMeB/9zu9OOfUdaoGix9TPN0u982nGO4Fiy4N0NlG+yb0zjuQzo0auFqrEXf9Twc5OcyGZRgaO00YTOEPdPKdLi7cGfC8JjbnzCihI5EdrN4FV6C4JW/+AORi6Lc+txDL21pXdFl9mGfM3xDi5v66lssJl2ZWipHo+voeULXcYr7GMvXyViNtiCvFMHJhDiXBTiVcGcykxOJsX8w07Hb480mbVzEVEfuBQGudihKBMVpVlQoBiPveAKj8zEOcdwdpmZIA3tW94mdldQcuVJuhsokOUvqKrtyj0losiumL1OJLdHpHLxMHMu5s/NsTx8/sJjb1fNLQAEe32EtaamDx8vqL2meDwM93+ilmJev2EQejxMaMlvg8U29J9VvDAp+ZfdEqGPpdgHJ45RtCrkex9542FGiqno1y4CHlPx69P2uU+pLJscx89YMFIQZI3y+qOokC9+WOiWR8eX0Nnqf3j8QJ17oYD8W+tb1TVLfrHEPFGa8d7skMHb5PUrK4y/FvmY6tOkNQq6nIf0W+oSqHR4x6cAbJ+pJKHETdn+m5eJryO6HZqSs2SsZaT3HfaBvWNOB5gSho2X32C0h89wjZN84Luc1icVFc8VYlzS2Rv/Jn6YtqmeKdnDebxkwn6H7EqEP6BHhTuqyusiS+6o3idNhzYFROKhxZW1Qmf3AlcvCiq+h5sx7F2KKTft7ku3xz5dSXXKUH9O8KHviVwbiga0cgMJRXj+c9aR/1JOeYjT1tP9TT3uS9JS/yBXcVKWmevEQiq66NY4qpH47Tv+DZTlHTf9W5N39CnYVjodC6SOyrfHmbI5trR9n+22e2lb88d1dmqV04GxX+8ebx7Ri0GoFgeOqKtYprdA+Vo3eDtHOSFAlmPc83zzjrpHoCVdCLN1wgwX2ubh6U+KEsJMhVhX7nav8DGWoRs+O6Yktck6hWicb2dNiJTbWAvWd/CBQmyhK9E9SQbgHRCXpZMikgpwlS9K8lrvLNF+nuyQzmETIB3a04ENAR30JYsoZ2qGc9IIG5W2KVr5DdNSXItSCyTpvjhhg6fF2+oB7+BX+nt7nzaWSqvqVKCHEUaKJACcLBCCOEg00IyFPaZsJoKc0g03ZNPO84KNjJPrLgD2GUAm9pvOcDn6sTCr0jYk5wCZTQQ5Q3aZoeBozJeCGprI6z+8KbDPyu6kqbWVrMioB6eJ6HIpz93QvX7yQh1P+wLMQbiogWlSLjShi3nlBet08v2vdMcv0Skhet69YT+clAeHm7arV1poKtGqT2EhwrXjRe0qEviuL/c4eoBK5Ep+Uckp4yqLNi06lqaYCp9IgNgLQzEuAZve0tEXdS69MLwOS4rvWoFifC3iaHx+RgpWmRaNgC+vJzbxwvMHjiaomTy70sqgBCRFDkOzorIZ4BvZaaI0EKZ2eNvXa5Q8El84e4WJM4euypKpW9F9UfU6+olzt6yRS0NeR9KncnCwRhEWS3qg2kntTGsbKw5B8oT5OaYhACaZF4EWa6RZwBMIFoa+RR4U9kjo+9DibzAA8zgbLhx0uIilrOuNv240SeDIpBL2BaiL8AWKpEDgS+tSGsan/IXcgCNWGiCHGBFj8mPytKFf0324krtm0A4jBjTtCMdW+HSQTAEaOYqwdPI19bPBAc4Zu5WnsESjDtK6RCmLlGRvKpTnGVioVFMf3i7xZ5nKLvBkOxCsOcyub2QlI7TLzHQmMsFxzTFO0Fpplzuw5X5l90txr8K5MNnuckt+bem11ljFWZ+RCIA84Zi9s1ncOxCntYiPM+fcdWtdo0zGBjplNBMAuKG/1ASUbHexEQghsHc1EDlESCYBmkzQSNFU2mWAtWqW7TdGEw/yAu62s4HZbLQxst9WsUOPsMSXQOL0XD7PeUZv8mki4pIHeXH5NZZM5OloP/zb7qK4JBW9WNE3DOYAW9HYDmeNQDipg6jGcRkmbCmWyh3oztTGiCDKlZ2OE0Sw5w+RL8nK8YAA0NdiP7fBAI83h9kCjHITz+1QUW6PXY4kgLJL0iXDIiQKgj6SPvNAMWcNuhFVsAwEHaR9W9JQukEhh4foo2ZJcXiOQAmxj+zjOGnP4Nk77g/Bpveg3qHxM1+j8EfM93uJi9bGmhnxLgqRCQgCjIOXYoNUbcA4U6w12kLB+j63pgWo+2wJBLQioxjRHOBGkYevNiGjYWgcBaCYOmZwHM0S4gtT6qOupT/RJ0s0RIau10wRLkFpL2JQ/6ym/9jC2Tci1TLqUc/TWQdpjh+QoLTQBDtW2sCl81oP1rOhVe7ZwY4XDntoeioYFSZj7bIectMpOjCrJHDblt3mWAa4bXFlXd3d2Pq4jHgVaPfNFIEtUdWJgicawKZ66OJJxAdDKklSz0MNRLabLbKSBJhu7hzT/TvoDSjMy+jijTAg7Tv2D6SBtAgQB2gWBbt7QQI1tJsWeVzjgYhBITsDc7rIi2dg4PY4+el8q8p/hbJJB1YmBBRjjUMB1ibUlBX1Cu6LUrPDB5EtxcqJYACJ5knFhqbDSdKhU2MNGgCYL2pxIt6dOC8wPyT7flD/IaNNigYSnXgosBamgoC2WYlxQwiaaDpOwMQ7FT35I6zpDJ2VRP2gP0EHUsTtggfvUoVtaHSfEE2gFm/JP0nucbXZEFfdpbkYSpVqMQ2uk0c5gKc3I0OOMMiHkOPUPxXU1B/T6ZXhDFfPUSwGeINVcx391JpoOhrAxDgaOKMmus6Q23x09UC4GhoNEYK/bpo4MP8ksE0JPMsABwC7JqNy4xVzWSLtoLFDCsCMv004EOlEeBeia5NFQp7CKTc2TfMHIU1ghrPyJkNfeo9nUUvOHHoBQBhUOJ70pVSmcEpSweBFhqbOVLTp0V5U6YVRnmxjCTOwqbbAq0C7IXc6PTYVtZnCanlicFYXE0a+Grk0PQ5FYhUOokxwRi5JYc/XeKvtYIwFnioBHlT3CxZgalL8X+tmLSLo0QDZCKeBIEqcAI2eZuaDIWeJAgNhPxEww5AmXNIeeD4CwTaadQDuDbgHLNuSR3r357DpErAZeQzcp/ATR5tk7ge1jg4QmZxQowpYIFWI6D8g8QG50giztUvwgJxN0xp19YH1MbwgZZzqHCJnhQHziqrsJp3qPMmPsPEe8GBByQk19q4zOMhMiELLBoUCQaGJ0f5RoKZBrhJkJapwlpoMYp/PhQEt3lQJLtBxoaS5RmGZv2PkqhVgAc7xAYQkAc7w6QZtrKRBc5qUJVqabDq3hFyUsCL6WVyToMi0MvIu6HMHGbpMj1/9ChFmBy7Y7VhXdxR6KHPCdHgPxZPd6qOTTo3a0mzwM5rKBCM0dfIOHwS6BgsziZV2c6xJ96kyg1BhnFsd5QP6ywKLTG0ZMx1AkStA/dkRTOUdJKAh/hGjU8ydK21itNXeZQx2iyhYRhJjQGQ6VZXaGDG3sEygc71lApVFyQqcGmGHxTq2Tff9lm9Y12tBe3owmnjw6oAT2hvnyyKCCdZ0QV7A1rFxVm3U+fP2lKL9elRtyNrrY6ufEMimEq55qom4TkAqAY0/VEo0ESbWJbNDQ5w7EpdokEaSYEpNY46LE9bPqfpw+JPm9ZgfFmFOL2I52auQqhdUBmacdG88mezoBq+MRC+Ym+0UUblKP7Ix6J7RP7p+Xi+4oqI7mtGOgeH70tgFLzX+sEQzl0qJ40qA0vZg6PLOUY6NZZ0MnEEUJX7OyWTSxJvXPjth2QPXkvnmZSI6A4WheORy3c68hiHMg4yqClCH2OoJcwHxTN5PO060nKK1yKItVilGcPd4shrFRYLe4EamlIWbAYsCgdFGQtAfheLDTA20iaM0JpsOFj92QT5trNFgtagxnZYIZoOc9jJsVhqfJvkKrC3IlX5Jq312WKMH3UAjRVM+gSAIByBySx3oCRWWWCSCotIBN2TTzbLgbhF6dFTlNUUMPIobQp67skSAICgagsEscCYM6+0wAQ50VbIof8s8Gx/NtkmY0LIT+UkNRJIRg2NNMhEJJJgCBNGUk+KlsYlP3fd5ADKpsEEGGKQLM1g9FlpTVQ7r78x5VJGV1nFfftM/Tq/OAQWcy+VThZxpBofiOgbyhGisczWw/G/AAbEJD1Mz2iirYtPg+3u1WnTxW4OYyGJCNaacHNS+gAdE7ZeuLD2vQco7QwTziwRm0VCyBpoUxja+qKkdHLecyAHrIMD2uAWGX4a7VVnTE0sAoHsbVVoss3PRue5DI2nEzWZbqulkR9fhWN8ZxfDdgvLm9N2Csw/TfdKqAZcE1aFh80GUyYHrKMx46KY1jkvHxrDSdI3xiHAGxMFU0qeaaPA7jTMcZJJPxAKaRrLQLGnlrzbmgWSVgvmVPLc9xnvoHzlPjHKjs5KGPjpx9Id/RdwyB9b6qi22S50VNWfx6W6HTjB7dqt4+r8s9khoF4XuD6pbj8WZTIvJS4PNnTRIDqjYN2D/jedzS7RQ5f7clZ8guv5wNMYPe17ZmrGdox2h4K1fJjX1O14alkpFddlrLKhZNl2zDprv4WsGouzjawOoGbXEDgeuuSzPLw749CsjDPN1px0nFxC4/eeZQyaJ57NHABvuFpKxVoBlSjYyaJ1CgRkYSLLPr2pfwnIyBX3N1FcSnu9TKwKC5xkvO3t1NZmRwnaHNPVJXM5NuIQy5+EnmQb7bZdZZlr+LydiMwCuCoDYF3qZjx164wkXJXbjvxN6R6zxTT2GWln8lGhRUfEjawFJ8/lPmKL6baWoJ/LONQIPgXzy0Vrl9Lk2ncvvymKntD+8PQX10/4SPBZvmAmaYS3OLsQWT5n57mElzQbgFk+6afJhNd8O8BSMVC0sp1J0n/+yCTR1pWVkzGq66VVQVexGxycmyV84CPpa9sdXe8xgcjpOPNLlGMzP2hgGAF3uw34aVyvUxd2EY2MhB5jI3OaLblqmWmz0bMS5Zw1QM+3UsIrXjbs+XD0DUsOZj/NzY23A2jx77gCFg7NhH2hiYsCFvMhs2ksjoDNIsyesHPEuG66SNiTOwaeNO5Oxt5IZNdlUjYwJSTGzKEh5Pn2fb5IGm4t7V3OTFTSGw6cs7R/Zsh9UtLeNhycdB4p0td25NyakAM2MXhuzGjJYvu4Nhz17pu8WVboEls4Yj9sQrZoGFIeM6Y4ZGXFiSQpV70n7NstenX4iRlqc0XLq1RIYLI7G4askramEEOuBfcUsnshVkIrUCEi1kh25xRWMImQ9gCXndJ45B6Gp8J6TCHiyNQQ2GVGmNFtomi7CsVAaJZobBsqvz/K7AcpPf7QKYwiy6PAbdNFmVZtNUvlsBE6KrfZfPptEBpAYd5RxK2/XzGZPdAJ4TmosuR1hZS6Y0KCZlUNqqW6U2mUrmOLml+oUurZXAd3NU+ojv5oRZR3zqBuTGLNgFG6db3l5xwsrmAenUKkHkkImYlXeNgUBuWhNFwQ1Zf13xy/oAbmQqTU1LxCBuuoVhHWZkTpBBOOFjWqTdXtDao6Gx0oGSRrBFw0dliVboYDsMex+rXj7ZEgCVWgeZGLIGtyWjsQjATY2OCAahGzArbhsGnjNAdJoRP0AOmaXbYNJNHiBWgE2kzaaYYOnk1GKlJbKq3IY2ElJaZkqjRO1tDF4VJrTpIQy+1bXDmdbB9uW+K5PNHifm95rWpKG2UE3KFMFcMk/AZuBM38NY3Xbrqt/QlU0k0aiVEEkhc7Q7vxpTSFwAA/TyxjNBa1ONAW7lc8Ow4LdVuPK31eiq95jT1L5EYwFhTe07NoZpEDCECuhmNxCZph5lasgeQhiDDhgAwxE9Q18FgoQahPCUFrXLZYiAFp4fYByttT2MREI7dJDh0tUKsGSw16DxKRoTcBwAxcUglXjwaGXTwAJ4Vg2uPv5pNX8Y8K+imewYorwqWkdjDZs3wGC1DO+A+dvL8IQXxxjWN7pFxQAls0F1r1Jp1Va8TBVsTsWjUrI1RV0jLtbR5Xz1ghRMaLPIxtDrV+0s9x0kpqOvTLU7YYYlO4DKuLlmWK6z3qSzXqiL6dfZsqt2F2NjssxAaKdUTx9un4HVNAvhbNkkLOjq7s4InJ7OTqWOPNw4PadpbdPGaqqN0hCYdaB0YWZoWEDOV4otjai/dl0GIrNRRLsm42KRKVdj2FLJ0vHtLiuSjQEdPKmdSkyOcPuwzMZeCG/LlQKTlQYSKY0qCRmCzCPyAqwjaRLLRGKotdJCAqFRKZ4+yD4CK2jdQtAimnXSus7QSVnUD6qdA5DQrBJHH2YdntWIyxddgW0QvdoYDYFZckoXpnzDQtsXdfLG0p/fitHYQSA0KsPTB9lFYDXJhlJXNHM0Qm2agcisS08bZpKBDWQORuoIlkgyWl7VH6mALCES6VQQaMHdxubkhdYSIhuFJXqxo5iijUUSDnfAFgFp9RpBWVT2sYmfUvJUGkvBNRA5BkuJZHbVbrCPPX4mNgrB44qDJmwViU6vjUiusgvYHMzcJmlefantSTKDYRoqS0UocSSjNLwUJmllj9kJacwh0Fj1HUpTOPVAExqhfdlGF/YC0ZnU4MlhbPDn5YyWEViOP4Tlz+ApEcKRGauXpQ7CCccI2nHjpI9mk3aTvHqPMt3qJE9nVoYlDzMLx2nU3eu2xDayQGmKJt0oOCULUr3hMI3Kiq1HLt1CYMW2o4PKug3HEeYt9vuO+gxGzez3HK2NtYDdRl4S816jlt5WYfM+o6sJ59thZGuGlUaxU6si1m2mKvLA+7PceXDtHq2Krd5444DOEmtuEIuGrCls0h+KX2kWdWUiTQWLtCBemHP6OrBIvCCDcNcHRAMJx1UNEpbMXLcMdRhIWEbT2YR/I15nFoHSrJDw/HyQceCn7K39lYeBgAfoAeOYnqnnlNE8VM8owl4qobGM5n15iNmgRDzLKJ9B1xnK7u10WFXj6+mQ5uyNFzb2NL56rilksEBE/LlY18eqTta0BeVCjAe+9qwzoPl5aFhh7QPRkNJWqyN2Dzur2Y8BR3tbulvRwX62QJzPZG3fBbhgZSdreAoX6hrVj+H6dLTql29H7lTE8i2cnimLvbIWDtDdgvN6QFEaKwu62CySlfR2GcMSRv+lz2CvmtGXuVtrPmcmv/QIhT7rn4PkVFM/CMktdPO3Y+kinpXvOTL8OPmDbQK+QgiYxfxaIaeJ9r1CO2XM/ADjMDoEm0Z6EQ8wi/7VPE4F5bt5jPjsHWYaayifuxNZRVmKga5N7640AxZlNOSaJRV1LnChBrwGTbdko+EPTcSB29tiGpJ/AkxvRc1zYSoV4QfDFPrtDBeoGN/5UvJVVk2Y8YCHp/QWNL1UpVJX81YVrDN3C52dSTVPTE2MR054IyKVLyHpsAO9hRQHldATRs51FGZD+T0dvRUN7++otFW/wAPra7GcrWNubOSjdTGc/7DsZ5Rvvpg7A+jVl+g9DvRYS1T3Sd6PIez690H6tDdHmDvaJu2HN0eYZI129T7JPhYblFVdwsdkt0vz+2rI2X55drNL1mSU+s83z59932Z59fb5Q13vfj06qijr6sU2XZdFVdzVL9bF9ijZFEevX77816NXr462DY+jNVcxbwRp+5LqokzukZCKi8aSXqRlVZ8ldfIlIZfKnm62Epn4Ggpvvd7gXWkNCHV3bZIMpG10Ocjv9gKaaveCCNO/iSJkHsx3gTUiKw1UOcTUujInznuzTjAguvdneEnJgzOnRbbf5tJnEZdqXrftm9Mso+6bPZfm8lOWB3QdqoVOr0CVXnlweg1yeu3C6TQlt0ezXJov9hzIDFYwTPvJnsd1UdXkkaCNwIj97qBTsc/rUlSr+yjzeXMkwFdsHEdS6xB8ldjcrBqj6kIVi4YIH1SwaIeqjCpThjcb6srIT54R89me14cEYjV8dQAceTqCQ5r8loQuf7NsI1pn+OogyXArh8hOSLLnef59h9Y12nS3KTUPd7GsYQr7Ek7S+5OyELkOXx0s+ZCW9U36n6ILGT47NPwSYcezuRLqlvnshrXb3QbiJyQ5uO1H3HjL66R+EBw3892hlpsr47lqhW6RN/LAQ4i7tNwiESNCmgOmMWK/FeXmfVIJmvIpDihB6z1ZeMctbLsTkMInOUjJPuDBCal+2cOSn8KiMIXDEORbcZGssUs/z5MvmchdTnVAe7H+WuxrPLTH/Qu6rdcC4uVkD96AzGKaQ1tar/FY5wJDFG1o3y40KTnZbcAo9zPD18UMIaBrMLwGFDIjj8GFDRPbgYZbJzKULPLhU8aaM8xe/cHVHlTdU1Vz9wCvOAlzHHG0dxVJozfmuz032U+4jkX9RgVzQu5Yewu8Le4GLr7g03EY0dGAPsZx1E/PXEoD/v6rPSfQ63k4vKsdyqur/LQSOlL2uz23sz0CeA1fHfU7LbY78rQ0pCaT5scVT34+p1skSauicSyFxALLzkZIchixN1c+lb9jrNyl0phdSvXl3CyOg4bRErqXJ81Nme/u3C4Q2nxJ1l9hnkOqPefL6jTJ1yiTBq9cgrOk/fMoCv25dI85sFRtfIoDx05JiKeQtqx+KqR38u2TDmss9DmtM3FVu/nk4OtRtS7THfECgrtnExyG3qWwqkE/LAtZzY6jP7ro1oEnwuC846DMfnQ7Z22ob9awrY/2gVnPGlHlHqdOThC5JglwxlyCS3+0gbgxnxdT28NltF5V3WX3qGd11mmmmWTd7QZPB8UR9fDZjReuXZkT/ejQeZRJ3pz0P5O2AMU0e64f0zzd7rf8YUuWNUjgy787h6YuQHWyVl3CJ7Qu9yl9E+WkKL5K/RmUvpgmZriZ08ahEg5gfht/qsmsHKD2eaSZOZcydcQAuKnnsZ0X15N8TDc4z5bs/CER92yKyxZvnmQAP/a7g3fCf+7EqVb/0WXadrPfbukNt1UlTty4pHE3GOdtxwFN2Lf1OjbcCA1keINKZManOIWQlBW6wYO7+iERu0op0ZWvPKpmvzvBcZPWQBfJJSwLkqo3/WxRSfL7IhPOq0UnyQIitEuYvjuI0zk1NzzLvoz97hYt0Wy5wuESbJpDuy6+5UQaYH9XSHLYbflWyXFm/cfFtBX2+T2vxjIw8GgtuszTOeHFLz4oX1q0CeEjeX0i+OB8ytEeIRcrpP84ZxdLhZCrmPm8sHoODLHgng71rXj3wAouGwgENtGx+iIAK05vdobuS4Q+oEeUiehkEhYDKPVzghZAajJ7IEiVcdyqIUdFRC6NJHPOgo93uyLNgbkcl7AYwKgusLSAS3cbpwdg1FltV7Y7Dq6tOe6O0mX+931a0pPp3DLA8HnKYyCX1fl3tN7X6SMSlyWYBCd+GQ3mlrh1nx0sn1a7LPlBryYQTM+luEiHcwKRn+x3F27X+y9ZuhZ5dV+ddrVP0Ce0LR5FyfiUJzRcNT1RauNMBhY+/kSXW2XWMQ5IxO1LrtM8x2rLmyBcgou7wj4zgfdVxDSvgyYyUqXExYBWdY+xBVhJVg+UwtnUw5tiK8Ko+3a4Makfk++nyS5ZS6cDuYRlgSRwfkZ4BEzP9Nl16FFNzsQ0lyF3DEzGGf5/JN3opTCO6z868rna1wAj+nUxWLS+bdwqYAHg5RW9YMXHdlQ/B44ie0h6CAva/OdTXDb9k0qcrnTfloZN4yXu9tDkWPkj08DmHweYx1uyoQFs6XEJTwyW4ovZfruDHJOw42s/IywZnyG+FeznLnguPp7CxGHJToKKLC8dMZ8def2eZHuIWft9Megxv9drAR6eiQd2TAzGgQ6ZoZNzMf2t+HLEpZDs4teJJmhz8kP07cN3d0mv7jpLwaKy6Q4rD0WWrn+clAV9VZtfHmZT5lwgfiT3UN3ThZXfmsfd+FUXOd3haN3dXbpOk6xFH3+8TkhbTMM1PiNts1PF8vDZsNLnN7a7h/ROAeQ2afJtyq54cvBvc7tTCNenLgYN0iPNgYMAyiVoEKDgoLI8JcffHlNpZ0NIcvBrbZ7/QIIT5hKe2J0D2gehbcIguvxet1cp8yqXjbosUqgCmzC1H6AFd81dXInnkhzmoa3XEDe02e9jbHPOiEPVo7CWMCTZPVEIZ9WBkOSAMNh9n3xdtn3xF5Kp++6yL3u7eyykzar+66Jgo3pv2hI2JLsnbOCs01RR+KbQZfUu29covyiRVNFsyqIqW/28uGV1Nww8K1yVWVflTR6o0ocUx3YOAWhGb+EfZTIjkAIg5AkeR09hXcmztsags9osC+8W6Xpam80Ft8prj3t76PhTydOXY3hLl0NOVIEmc05AQkEUBCEfAMWt6vC+nB4al2cfzGenCwRkTv3HBQGH7Oz27/l5Ymfg4X39siq7pq4iXTbc5JHRw35fTH0xt6X6RisyF7m6V5Y2t3JmP2SSohX5pKknfBFvul384oDhAXG38IawqIapj1vQyBXpSrHuo8M4YF/S3Q4gFEFImnZDbAFRXRGCuQJjuOxBFQsOXZ3IYS5sgstawvFuV8rB9+x3j/3L9XpflipcDamOzUnuMJnP8zapA7qR4qYgY5+Q/USGg08D0uXWrarL96sOXyePNiNKQHf/cQnz7aSTtnZ1p9h57ROm3DF9Ki0nIDSuz+/batwC4mJjNHy264vymerb5nlxi2oX2XjUvpmFyuRiThELULp9hfa5lWxncc7dwFXag2UTHOZZ5GE3fp5FvywPqKEIDYGmByYXhZrPC7yD9xOq9pmAve7b8tB3XaYFeQJI/fa7CxZ5biHINHEy4pRnoEStTDafJ5WEMko9Szw2tZQ8+Bs+LxblaTSAx4B2AKgjA8N+lDh3RTar7XGcFcsrpD71fIx1ymZX1qtItAAnBW+tAMk/HZQtriNBOhzM3jCOCofFu6WzIle+zW5RbV12n1sGlVmVq8ZB53EuyGmCJAXaJ5/iwHGRj9vGeBg09uOYzfFV6Eir27RkjdJH2S2y35/kCuAAUM9mOjDwaKi6zOM01dMEdyQii/7jlEuH74pEaEvNF3sO3bMcPJfhq1OgjcSn+zbjkn/rxi/zqi7366Yv4RmDFC6bhbFu/cJ56E1H5OIxiRuTspiGf/2QZkleP2A1vCd+tN34HIiH843T4v/hFvlpl+xZo0137l6jinzagYQUPNB9dByQQBtCXILLlRt5LS2xt9+c8FKn7QhUxMuQ4ODni41wDrD5sizEBWwj9vl9kee2jRgbNVE8jBdi5qrvsvS+nvw82yYPlMGH4t6nvvX5lXVOckj13X10mG7sdln7Mqkw52AT7Pm9L8Tn0ZovY8RMKr1esS/XYuBu+83llEBVJffipevdR7dlLnmRyz0YWX6Mgf3usou2Rbe1METsP7r0LX/fo1yyc//VAYNZ9tetMHfovi3GR9ysHwosevWQ7o7z6pv/03oiH59QEzMPZa2JWaXQE4jAARVDdrqXX1XtpdaKMngir3L+vCedirYUlsQBl1R/ObaA/b5EfHbahiO04xSGUTWXOWsX/7ndCTXbfXPFSPsQ4geU39cPEFgEAmf+yXcDf55giajEA4p4wGSYBfpPHSMbJ7qzQahA5eXmMA99CctzoBdFuQXOLjOfXRakrujChLjIyH5fKOyjwD0Y5r7wHgl0YNirnDxtdNjxZpM2YAJ6fSHNnuvVDsnL2v1Hh7X+rKiQxGj4OuY68fwNaRgphrengVdYs9LxWdAIOXIrvqz+kua56NWHr/PFAS9zm/mm3pObIKFNYiFpvm3nGFvh2EOWqKpeSX6z/erM6TXI6bWTz0zFhxmaL26rL8DCi9uTIkVVJ5m8gsN+d9CJRAOUolrdR4e1uvT+gfiBQqh49rtDna3rm6S+WWNnKVQbm+Cwn7xLhO1k8sFBO5SUx1+Kfc24OkFPkMKlHrbUSaFPqNrhbkl6qlhK9uYNvD8LUyyx5w45kMVzCeutHQ9njThWlfsVVZ8yau11iadFXidpTpYReJK+9PZL/3fVfSDmTu7RR+zCsmrIh62DtgnVttolawrXDaL9MKnXL0mFGpLnz67bO0CxSX9UNdq2Ff/37DRLEYl66gg+Jnl6h6ehn8klyG+fv375CvcEx1maVGTZObt7/uz7NsurX9f7qi62SZ4XNd2+ePv8oa53vx4dVbTE6sU2XZdFVdzVL9bF9ijZFEeY1x+PXr06QpvtkZi9ZWvF5eW/dlyqasPtHzNw5/s4HpBv/gP9EGu4w84ndMdnlTH35kjM/wbuWUlWIsvb5ykxMW007xBGAAnouk7IMfWcBCYgKvXzZ7/ts4wEfLx9fpdksicTS+nCeJkiRLP+eold1ve3z/8XzfLrs8u/rppcf3hG1wZ+ffby2f92LrjZKmqKzR+Tcv2Q4GHQx+R7szJGUOPMcxjAaPi+eskxrkv5cnkF39ex+TYDHA3PX5xZtgMenV1dWbJDHwYmjnXTj3oC1GVdqLbFQm9W2TVYOKzd3FqBdhS7qTJzI3sYWnEepkrWlWPF9zrNFZCxhfJe9H8WzqnLF+SehHcY3STgMqvEsDHB+fcdfe/0XZls9km3rOsmDMQjRKaT9P6kLNzl6PKFlH3zkJb1TfqfElL/2zb5/t+d3e8QFd1w2+A/a3rDmxsj0n5ud5s4zI4f8aiqxO7iIYqS7dqArkP45U9eTPFY9C4tt6hHwpfUvVu4xm3kW1Fu3idVHH1v0HpPTtphL7DdReHIrdPE5RfFhJ+/FRfJGnc253n7+LA/rw/F+iueZp/nG3IPCY0zCWwaHcNg0Y7XazwGu8DAQ5vT5pSF/2iEdNdwj2fyZF1O+vkPzy6r2zz9+x4nfMbWIB5N3bIAyaxHNMxLXuCLnHajG5+RzVCyu8+XpR68P2S7SSYvGqFeRRAq6ijQAx9T4WLk0W63VONWt02uoJEf+8ih48CzzxkyxhljIB40pnDD4HFVpfe5fLHOwQKRauXpZUInIf09yo7zjzZfUOGeLr/NFlR0u+N+WtW64YcVq7M9isOI6nVabHcZqsMGMiwnbEMS0BtNQHprnIfr4jIHzVjzu6Jco/J3DMG7VGkod1ZNgHssY3W8PabTfc4YZrpAaPMlWX+NMrG4rE6TfI2ywIF2Kxtx4Z6+T+YQYqt+mh6j4nsL+bBz6wmfSP8320CsjQmLvNbJnZyM0OhuS/3qinFbwA1U8s7owQIrfKDrZrpr4I2LgzVed9Y+Tme48eJkbf5uYuRje/Wb8+Y6UEzlYtcFWSqjr4yEj1ZxRlwbwXw+l0le0RjYM2Y70JtdeyaCe4IgYPGNZ9fePx/A7xNal/u0JsONk6L4CnjkqLNcsq3zOSHPO3vAecgdaZfRZiralxl19c1zcwyQJsaym/+yDSDQ61jm6Wt6RPfzMd1gDluyv2cYLrmObS7SPMlG4HuG/9wFzQ0vq5v9dotKauSQyY7nHqCbt/B2FF7r9UCzjN7joR3u7ro7rt2aG5s3aH5wSvohdIOHdvVDMnSasdZMG/ajxFtg0G3S2rEfdYPcRZp5zRP6zN7Q6zKPuSQb0PMEgm6MeDmraeYuK5KNyVFZR/s0m6kxwhXOim85ES14S/b4W8XGmCliAmNNpgcv5NNKeP/n2kyU3nPyGbbZedmH3CV/K7wmeDSjjxn7jE+9o6OKTl6XIXEGHINYdWthcq7cBYQawPLEmO6cofsSoQ/oEWVxhIox5ZGqffo4iA8okd7PCIn8BUmbQiyJQxawZovOHzR0K7rLt9gIDLuhyG5X4CI9RlvWOL0umvU5H6R2eX0QxeYdtd9U7rKEHpq4zP++T0tyc2jckxN0ZyVg/HpZnX9H632dPqKQBQnMJqPx2iFMztJqlyU/2qs7QnTCnIIjN4fbCgLWaZL8BH1C2+YZTX8+8DDK5Fo+FRldCZg46JM5R+DlJ/gzDM6uQnkEIra3mN3hX6d5nub3ps0SO/eE/Wtis/ViFSs+1MGE26WfimLrAziSL+I+nUX9kxK73ORj1DG/n6/QSQWO/AMXEzujj7nDkHw/TXbJmjmuGHG9kigQMtlk8/ugT8w/oiGBurKE0wKXLe2gQzrsy/BFS8rnaj9iiMKwGX28RfnmCUUwz1b5s/frzSmrGBEGSeU2k4mARbI/9BOKTwWKzctA3J7fXVYkS8cic1jqZ+ShT1vePaT5dwJgPIhPvUbVCzTgbM2YGpFdqQk7AE64/Z5kex921hC4zNcpMfQntCvKp+LIyeSWHMbor/8LHuE15kGbkx/O4+M+ZxC2OpWu7roaC9bpusjS9Y+TktyDNGUkO8/7Fw/ml/kjuUf4ntr8t6I2LLf+8aVHGVd3d+k6TbK2YbjoENAcPyTk6bcf5LCT32HZHvoP6Z10u6zF7j+fPRBhs3niXg1yaGxzuxttYtZ3oB+K+9Rrv4RmvG7vJrPas+uIMXsret9bgwTJdA3g9b+4ex9Wi8i8J8Kdw41PSXadkRVXD4D0mb1CFdjMT3HMRZXrmnuww+r8RYRANmgcKGzFROozSB3/XviDi+Sdbv+/KzHqYjhhelkjj+VLSZwY8S+sVUdsdFjO3WMx7OOYtxydMEUM6ouprjJ8/BVQkdPHHnrEZF9W77J9jfKLEo1VJZ+LkEppcntXi1fbaspcUGMXBIrV3Afbjjmv9YqccEKYd4OPg6qJAvGaGrv2PnPL5vcelnnen8KWHb9dxREnShCpEKHgL02U6FGhxufBbBhiR8DrAg8FAKN6cvw5yvzgPN948HG8Gbi5ItbrOHp/Ka1zkAt0nW30SCpayIT7G+zlmB7mZLJ7hajx2Z/k7Dvy7aPGSXO8C0uYfeyRA/LpDv9BBdj3EruV3GYLW7ndl5R9hL3o0F0gr/AcHyx5AwSqp+hOu7WeT3DCkDXkdOlldbzblaGx1f0G2nq9L8sIW4LU+OGd2ahNYOwLBG4KMl7x3qxqcnqNV/qcB9atWt0STqxKCvVockPWMDc83hEZ0hCv7uJsMLrs84146b5be/GNVeJg4dxgFJg6iAmcLRrFjf6AmvpLUX6l7Ye8j+bZr4s8fOoN4jFi9fXFubseJuviosGtvC77Vmjo5h992jcsJMUdqkEYDQLnE+2IJ7/kMzxs6ROq9pkb9mJ4yesyLcjDJqcPSX7v1bspWAXBUmb1tF2npHiAKAOLg/TmTZWPeEZeMlQU0EeB+/KHeO5WbtaOI7gXllGQtUVG/yCuxffhO4nBT7diAfgIUI8A8ifkUM6KPPG92mSBJx0uSLh4knq1BjZvUGM8vLc/wXcHF/H+XnMSL/QQ3hqljzHuT7RaDwtpjgMGn0iDPE32lc+DTE22sPPExhbo0VLeFUkWhsbuMYAYwRcGNlbLz5az79c+s++ud7nMKyzLmvzUH03yKiXGlUWYB729hWQZIViV4vmJNOlR2pXLSy8hFdH0dD6b0iSj16Z0l3HEKqFl+O2QMVkDz+zndQSndkYOMrZD0hjjh5NiI52ninleuDefN6Z8d7BUdT73bMSy01HV8kjhTefZNnk4L8uCnEz0qiuS16ueuoyNnnsad0tPLJM390rn+jje7bL2gT2t7f7kXCvvi0q/Uh52T2Ms8NwU+3Kt5+qu+0dUVcm9aWLlzJassEQ2abvOxty+7nNJDokSMLwYbun2MZrztUoWqylelv11O+orQDfrhyJLyuoh3R3n1TfPt61EJl5hBxCTMaPVhvLofm5VcdfJys7IJqYG5hk2ehh4/nlPOgfp0ls3wQYmYfcA0Tpy3r2OA9VOh0CwsvYMgKuiWmIDFv+53Zl6IY83tWlFtm+ZNYxCvGfLLvnuw87Lbe1iwYHhFOrAdlOBgi80yDHQ/E/RVV0U5TbCFdJXdAo+rHFFXAPhayEcxuHwnQ62fnNzicECn+g93mzSBjIxgrxk/lfN8/LBA9XTrKhQDEbuq40+LWQYWQU2FH7YF9Be7MaPT9r1X1Z/SfN8cLE+C80xwyrtNho9VmPH2me8qfcECPD+oLCGHPPwXShrcH801BjYc5aoql6N4ZIJ49exF15OmSvF4yGCOdYObwk5b0EXVZ1koQsk9Im8Mrq+79P7B+KTCqeH6O2qfV3fJPXNGjvgEMXf7ZKwDc73KCmPvxT7mvG90ZUl4f/EjaJPqNoVeSVhyO+OUZ6r8QnHOBN93+0DYHwZ0L8vcCvBYSx1XFXFunnKo1/RJT3BqnWGSAwdO8839KWYjrCT6wZldy+6Tx/3WZ2S5XZcInk6WayTq/wMZahGz47p3jbZ563W9AVmsSJwcaryWwk5AfpvvAT/JDHGaEAlqQ7i8cgue4JrToZOmq/TXZLxGgtkIMaU57qPeqZiyhnCQ3YCEUG/sOJ6roJhTQZ4c8RAQ48Yen32Cn9P73NytkgNGUrJVVj7ZRLA0LIGMWU52LRRANRoa1OhgdgR1bEpkuaZF0SkQlb0lwFD7P7YUH/N1+mwZEZyTNzI3d2I2LEqCO49pwTMAPHVeX5XlGtEfgMaxHEDL1+8eCXVqJIz4TiXk3Fs+3HdDVXcplixzuYF0zW9mcq+I2vo5Rruvv8jdWrXwI1ik2DNqshrxY1lU6KLvi9iDy5KLtdm+/kfCVqNygtFFhVuCcBq5iYHAqrmrZ0CmEFCyU8FWrxa1kPyeSHWvQy1GmRRg6wj5qp0+Og+mHIBbCRg9OLaVJD63XNPeEQodQq/Q95qXdF/UfU5IQ+/KKuRPuzL1WDzZRpvQ8pqBJREaD+P413k54wVdal4udgNPoM6gUVOi52LNNNN9OdHDhFQlqD5+lRwQ7VZPmxwEUlZ05l+63eUwBlIubpjP08HITOAI0GHUc+mNgfyGCCKUuQEKPqY/K0oV/TfbiCm2eAgZPz+RvNlEvRwQspSjDw8bjS1qVVKGYghXqPAUqd1RlSQ5fsiSywfuC+yR+0CfNEws7IZRztNrZ7YaHqWKZnbmHr2KVmPpndlstnjlPze1L/FnK1bBwMcMCQcuqfz7zu0rtGmqwwoinQiYFwXFQ00Xn1AuL1r4NARcpU4fJzEwzQychJ0n0aBUa+eTaV2xIEwahWyKbEhnR86JLzkJ3B+Ase5MzL5nCWMaqaGzhxdlwN0Zh/JNBfKNMuEpiEMQ8t7H/b7ogcyrKRWvmSgn244Yyx0Sp/CCKNZBFyCZ/FA5wH7GFckz+5oPhXF1uhhCBFXec2HSfBDigJXAPmEURBE1bSpRkIYiBxOnbAyp3RERIplOyAr8B6wy7EG6ey+pgcN+8jX8RYXq48FWwKKQJEFgUCKJ4MzWL+DBB55DeywcMdJDMFOIHhqqOPVOwjQMeFu5ESHIWqMp1aFA058tmOGyDNBWZuanjbubNbzHu25RJswxLlPJi4lxnXa84qeMa6zHl1kQVW1p1HEd9E9cOV2TmiGwPoZkOEYWN9WxjKgQd6FvLq7i+BxfiIjzpEL+lLn/ODIklSzBDB3P3Sze0jz76SaqKD82FlMewJoEnU6mO7HJgBobjDNFfwzsUNyC/tZDHpIFPftLiuSzQSd1Cyh8TPgwDo0fgkwuMSKkYI+oV1RalZ25vYjvJycHGLSE8CRoJJNqQ0p2pz8mBdQHxLyqNIPMtJa8mSbE5OP4uBTngCaeI0OxTN9SOs6QydlUT9oj1tE6p6aTNLlG09opYXR0KbEk/QeG392FBTk/a7FupFh7kAFVcyV2rQngCFRp0NxJs15G3iFcUFwmvn01rTuyPn01iKAhJLsOkvqBd9w2IsoiNB/fQrg6bU5AOAkGYUNdj+XNdIu/A0vAfR1NiFoGvkkCbrPI8EmyazqkBBGAE2rTFiJE6GmvVmsEbv5Qw8e4Gox9vOEQFJIMiSMBiaHK8UG8ijAiljyxG7JBlvzOqb58DStc3LE0KzoIY50NfhUPXzAngXqV55g/+bW42DiGfo5ZalTg+n3Qj+2XgaUiJSSDM3HJwUjqtKBgKifn5kgNP/0bHr4TD05swbOAib1zRuvxjM9LDEAny5hIhBNe96QU9GmWhvS6c4a6sqbzvswjyIt1wEBLzc15wvZ70/ADbH6HIgnWnVn/qv3KIsQUfpEzr5PvF1qf+p9CZAhQi/X2fyEyqKgojt6OjdU5jy3PC1snE8uLwE8jkdQ50bTso6fTrxL733wdEFAszxyuhCcLeK46Swocz9oOivI2LbBQk13qHnIoXQg06NNBbLRjjIzytrUMqWMB7HQMmfxXwfhtiYG0mxO6gB8U4EtQ8++m8Kne0q+8oav04CIlAeEUHPfx/FGvaZWi4MddSiYGL0ilDuhSxoEHz+Sej5UTOxaHNGwiLH1/gt9cntDe8oJsOAzdjpMNLiOj7qqmA8TfynKr1flhhwGLLb6WVZPylUi83WS/qYvr5UXFqZPHAVVg842ldxTB6JLUi5C4VMiDCtalLgaVt2P04ckv9esW0s54boeUqcFIK+GXraOZlw49pZwQkaXKxY8BZ0jyjKpP3RG6TLc4vJQOY+TDEHh/Ohrw1Ga/1gjEIhLkdKmRSOrgE6uaZDoELsi5ImFSk7baHJM6hcdMbkMr7gsHM7jEf2xN/eMVRz5jj9nXcIsY9q5q9fsYgnLGYoef0KMLGbINRNiPIZaiwLOhFCx6w0PGw6HBwC7IU10MCxiUDITSJwHI7MC5jTZV2h1Qa7QSVLti2aUkr/drPkyyXh3kJATgf08zv3TVEebagzED6OJTWlUrtlQMwi7OitymqIGjnPVjQShTlL+0eH+4yjwcazVQAz1ytiUNYg2G4zOt0ma0YgA+ksNoZ6Qqzvm6yQAouXJEowEnUE7m9rsqQMh1GgUocQpAkrWD0WWlNVDuvvzHlUkZXWcV9+0jyvKefidWyh9mnCToeRGCZVcXeo4oSeA/jZoAPKFbjlLGkeVY1p8Hu92q04eK3DiDMr630kRJhNAcmdsLxzJ2OAkRnDEA84SEZI77/ahlGNaSNIIjapydJpDLhUMWIp/TMfJWMARGkPOuZ2nSZLp3ecg0UE60JCG8/Tcp38TWYj3pLMWLAuuIsP0V8ikqv0pA5t9W0l8HNoHOfN5onbk8QSYa9IzDEYOfeazsGHmguZA/gPOiSdC5zhP/QPnqXEOVHYLlsUGXaRlVZ8ldfIlERdV21w3qG7pjzebEpG3wJsEBgt9ClYRbZO3zzdfCgyW5Es2ZEMVsE3BF9DtcEj8uwSIfXeLjok59JydVBBEBBUq07kIoC3YVKBlQewLXHBpLIWyyIHIslxVaZoyLDk33THMvUlTlkCSLUvp7neEy+lSlSV1N1uayhreqJUKGpKgUrpUC3WYJ49kbZhEUBn2rSerklSFaPnbsW6e64HZN2nKIkiyuRTscJOyVjQWNhEqZ0i38HDkDnLIwTXfQf9Gb5K346zxbEK6siR7f9ZdqyIV1SVAZTRpZubdvUQA+yEJKqC/0MhcRIY290iFXS4VLGggsEBY86K9VErzGWLfXJ1iw1ZT6Xyyqhj7KlfcYAG4MJAO9mfgLR+WkgiXHKgEEcg0cgiXQDgMKjS9E0NgGExY9VPSm4iy2iKFeuDUvg1pKlN880oqUiSAShTf/jJ6GP5lJNnR8Omgv+Ffh7I3bfuEisa0LYXatO1TMuZRb/9QAjDw7dPgcvrHIWxKaS78BAtpklRlNBec2hTRXIsLFtEkqYpobnS2KaK7PhkspEtUFdNdHW1TkKIINXNb+ZVjTD5ZrYPtKJO9jB/GlqEo+4LYG0kV87cuWd1iGgoLqHFXR8p9N5sK9t3stZkOXY2+hzF2LG4drKFfNXenFsWxJ+Tl0thUsDD2lL9VWYpekklTlmPXN8rh8lJhMglUpnwMwLpoXZmGwhxKEYO81WWKlFoJxMB2Z3lsJLGTIXUpno9eVYvA02nF4CN1HSUxy2BVus3ktY+Xk6eufRI4ce3jBE1FsIGBUiFsIlQMG8lqHE838avyMLr5Do6eEysrtXFhEuf2O8S5jYCz4qxwbEyasgQ7x3aebZOH87IsyLASKolPB0v78PH4/YrSmL21vEcve22ZBvTeIplFXwFtfOjKH6gMEgybMi4W2FmKwRGabLHzFsYohE3hToWyG+G6slk6gwhs8ICDJKoRhEhhKB1udMz2iTi2XTHbGAwZN8BlaMQ9HflkR6/j8EnaCRpyCXsvNFv/TdzY49WwUJGuQKy4tX5ZR5lILS63FUCFbb9oVFRsWwy52bQ4KtOQgW4PQqExS2MQnsXmIHbz1aS42Vi+Sg5mW53nd0W5RuR3W4RCaV2eUWpQx4eINQUa2ufvbJoBQGpQh5+GD2p035fVMOhqpJUlZEqDItwO6KBD+3mJZuhXx7UmAF9zia0+uH8tcBmSg43QbTauuO1n2QwgnVoVcfOTKjB8tDKCpQl9ap5s6az4DVCg5mUqjdjsJlMjcfNFp6q0fTtkhLdlg1RtN0q1ijY0I6jJbvAO+ZqvwUoO+7OrfrdOVhOgUgst7xdTqdnPJpXNZvJQle7grsR9XGC4CtFphqzsrnUzYm2+aJQE96OHvBGdFFNz3V65tnpborFq19JYQd7Y4JtgwlH88QROqtfmXZls9jgxv9dAW0M9hgGsZ3MeinehDKs+aEJWV6JRiyqGVFBhh48aJflID5qv+xRPydvKpOKtfBj+ABTsAampRYlmDKiOWotDMIxuuAyRaepTDtBpqpT9PlPb7GtMCAPS1C1POUYNexjMQ3USMqSrZC5dLSwbEUWlbD5o1IOCnfqcY8x62hgsTZ0CD1xFqksr84Qopwq80mhr8yJTJPW1kWYtG5AiuoHEiDCzfXQPCcU1Dxj+xlpHIIi4KkKXRdUrAjCh1eoGuIjKJM28PNAu9RtWRACq2FsCcywIsWpV7crwxqT/QDiKCSZbEmR1IlEvV3d3xrrv6Z6G6m2wqFrnhiC2soqI18bTiWkRldXOsiGy6LU8wfya1YMsud3usiLZGGqZJx1F7VEXBVtNpIhkpc4iZWyV4QBrmltMiqW8GBut1F0gjK06GObdzE/5lGiKp3WdoZOyqB9UC6QgYWzF26BXcXszdm/dxaGr1WwIxvPaXDC94LXbtFjKNqu7w5BHqbRAGL1uJ1v/7vRhzgKolR6I4oNZOMbQZuy/RlA0yagGVR/FDykqEulFlqQ1KsmfP+jzdZ+jqNnGFwjR/rC2IK2hnuRgBPaz0QCK/ENC1Lo26C+Sxa/vadQl8FlxZ1RgfSU6vfggWCGozgL0Xpn2iJFB5YZqLIXZ81F9zuZjTC+tUVWgGcNHj69k+56Mbv8ZojOOk7i4ekblLmGmrYC21vgzRcrK5chi1y9wLKrZAGC/R1O4O2n9HmW6NSCeLvrkYcRdrVYBUpCuSpv0g1RMsb/BpcdWbKptnFYJ+30OfYbos6PZdjh4Pc37G1r6kcwy+c4Ga2z+RXVwx0dFbFffymq2NY3KIqOgwxIUo2JhRIXlR9ChGte/lM6LLZ50bYQevupUlk/kDrljr4Px53fVdax8zDtGHU+qsPAatUZn3bvVkb2/tTfwUBx4chlQ2vQwMye6dM6Zys181aitOp7Ns+gT46mvfA9YZw27R4RhBcXj0LyGQ6qNseCj3jDHjiYiclxM5mOqEBzNaxrw5VSdecxPrcJqAnNfKc3GXNApeYjbCCiyN5K7eUIQNLlJ2h4GuGBC2RsZ3qSM0B9N7ZhFxSx8jCnLaCaZxceI2lqZZEQj2DWxCIoa/YQ+w2gGmNxPyO/AQXF2+sfiOFW4yzWo6O0XjfryzR80I/s5WFHw6TJAV/MTZ2Gic7nFW1Vo3uFjsNLSQ1uAwvrHuDhxpUtIqLzMV42q3NUoQ74YU2voZvTuDhBgkq0h10yl1JeFNDMqKF03NVNdfSJy61Jjmol/lUhvI80LRkqFdjulNjv9+WP9fSgAN5WxwwwEvJGjt5LpUR2VkvKVJ6KOLMWS8cTdtGJElPJRl3ExFWLuMBPJ74bojWR4Z0SloLwgKKZZNz4Hc8dy2txlRZaeW/kExmTueyw/Rd7OINz6FxX6tDdHzcVD7Qf8Z12UyT36WGxQVtGvb44+7XHuLWr+OkMkTrtn8QbzzBF9umNg2tFc5ndF966EIFFH0iX3o+s62SR1clzW6V2yrnHyGuFGlN8/f/Z7ku1p9/8FbS7zq32929dYZTwmzriFKfIgha78N0eSzG+udrTeY6iAxUyxCugqP9mnZKe5lfsiycTBq4oFeeniHcLfm7qs8X/R/Y+e029FbsmoNV//QMdntN3RcLqr/CZ5RD6y3VboA7pP1j/w98eUzqlUTMwVwZv9zVma3JfJtmp5DPnxnxjDm+33f/v/2nYeTTOABAA= - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.Designer.cs b/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.Designer.cs deleted file mode 100644 index 347890b7..00000000 --- a/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealItemPK : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealItemPK)); - - string IMigrationMetadata.Id - { - get { return "201806102128228_ChangingMealItemPK"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.cs b/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.cs deleted file mode 100644 index c86fa3eb..00000000 --- a/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealItemPK : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.MealToItems", "MealItemId", "dbo.MealItems"); - DropForeignKey("dbo.MealVotes", "MealItemId", "dbo.MealItems"); - - RenameColumn("dbo.MealItems", "MealItemId", "Id"); - - AddForeignKey("dbo.MealToItems", "MealItemId", "dbo.MealItems", "Id", cascadeDelete: true); - AddForeignKey("dbo.MealVotes", "MealItemId", "dbo.MealItems", "Id", cascadeDelete: true); - } - - public override void Down() - { - DropForeignKey("dbo.MealToItems", "MealItemId", "dbo.MealItems"); - DropForeignKey("dbo.MealVotes", "MealItemId", "dbo.MealItems"); - - RenameColumn("dbo.MealItems", "Id", "MealItemId"); - - AddForeignKey("dbo.MealVotes", "MealItemId", "dbo.MealItems", "MealItemId", cascadeDelete: true); - AddForeignKey("dbo.MealToItems", "MealItemId", "dbo.MealItems", "MealItemId", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.resx b/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.resx deleted file mode 100644 index 54fc9317..00000000 --- a/src/Dsp.Data/Migrations/201806102128228_ChangingMealItemPK.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19W3McO5LeuyP8HxR6stezoqTxmdg9Ie0GrxJjpUOOKJ6Zt45SN0jWqLqqp6qaktbhX+YH/yT/BQOoGy6JO+rSHMXE6DQLiURm4kPilgD+3//5v2/+/fs2e/aIyiot8rfPX714+fwZytfFJs3v3z7f13f//C/P//3f/ut/eXO+2X5/9ntH90dCh3Pm1dvnD3W9+/XoqFo/oG1Svdim67Koirv6xbrYHiWb4uj1y5f/evTq1RHCLJ5jXs+evfm0z+t0i+gf+M/TIl+jXb1Pso/FBmVV+x2n3FCuz35LtqjaJWv09vlZtXtxltTJ82fHWZrg8m9Qdvf8WZLnRZ3UWLpfbyt0U5dFfn+zwx+S7POPHcJ0d0lWoVbqXwdyWwVeviYKHA0ZO1brfVUXW0eGr/7YWuRIzO5l1+e9xbDNzrFt6x9Ea2q3t8+PN5sSVdXzZ2JZv55mJaEbrPqCZk5R9aLN9IdnXdIf+urHKCH/+8Oz031W70v0Nkf7ukyyPzy73n/J0vV/oB+fi68of5vvs4wVDQuH07gP+NN1WexQWf/4hO54gS83z58d8dmPxPx9bjlro9llXv/x9fNnv2FRki8Z6nHAWOGmLkr0DuWoTGq0uU7qGpW4Gi83iFpSEkIoEuOtNJen50HydhwweHHre/7sY/L9A8rv64e3z1/j5naRfkeb7kPL9DZPcVvFeepyj5wLbW31SlPwq5d2JVsV9Hr0gk5pdSkL+SVGGTcYNdq6ilDGdVHVSXaK6cNgdVpgR1vGN8lvyWN6TxuPUOBHtP2CyufPPqGMJlcP6a5x0S+apFWLBYTd0UVZbD8VWZ9tSFt9Tsp7VGO5CwXBTbEv14Jgb44G16d1iJ2ULv6wyTOLO/Txg1M6wIu0rGryM0L7dgT4h8RYsiXCHQu+TnPBwGavsbfolgylZmhzj06zBOjh9DnPv+/QGlfuuzLZ7GmtOzI4Se9PysIx081DWtY36X/q6gf/jOH5S0Swe9XXCm6j6HO6tULQ7W7jl/n4EXuCEjeYh9EVPN8maabrdn75U6xS8HD8Li23qK/rkwI74SR3hyvG6bei3LxPqvENdIPW+xJ7K9zStrvRS7t+KHL0277pR6YrK1rVfP5WXCRr7PfPc5IrmN+HYv212Nfn+Ya0ndt67dwOOwZRxDler/E44QKDGW3oICjM75IhvqGbsW1/ppKVQytm4BQ6uuoGT8rRVTf8spWt6RzqB/3Q70Na1xlqCSEJeQLVIFCggkaCOllPH8hgpyz2O60lOTJJUiZVZU2WxNWeNG91nt8VmPPGKCZDCUvaE2iFHai85L1J7/OruzuzVQdCWNouXStsT+Qsa5akW72QLYUsHU1QitWkeshD2tznBE8RDFIxdJBsfbJGwoHGS84L7FBvd1mRbEwWFGhheRkSrcwsnavcw4j3Bm1RVSt8VJe46ujz+0YCTng1leStNKSuLusyX6dkLvYJ7Yqy1lpeIpUML1Co7C6SuZr9Q7LPN+UP0kwNnlaklLsFjkAlsEDlLK/QOcXrxlTywp2dtbzFfZrr5WwpZPloglKuJtVVno/J34qy+lyYV4BESkk+nkAlp0DlLC9Ksmsson48xVLJcvaJShkHCh/5fi8sxGuJQOlomk64hsBdNsKgWdLQiNcQrAA3CqUrhnsCkavrZOZOWkvydJIx2WSVPTkaV5MyKzugmEw6ZFAgWbInRONszqJKqWTvUaYdlwqEskHZdKVFOSJXkxJW2jpvCSTZ6HeVTE2iuyyFfszZEgCyFOoRZ5PoKssNKh/TNTp/xL378RblG/x//aBClUOSFiZUia+g9tTnPS7ESR0xg0obns6gjEAcoIutCgbJbQT2kLMgrtk8tuPpZDmZZKWcLI2znPsvWzzOQhsKMr2oIqksLU+hFFggc5X5L0X59arckMW+rRHLALEkt0Sjklwm9Jb9ukwLshp7+pDk93o3rM6j1kQgNSok0nvrZaeJVnaztAHyNcMlF6sLOdRyc4RGHXhqSB/r7dphJW2YNLhs3cr5f27jAmUNZgrdpvSKiNEs4GCRQCgPEkNjYjlVGhIDJK4jYvN8134lWbHgDS02BzYk3wb0s+EAZZFyQptMt1rouME+S+zDmLve6u2vqsJjQPV4iGnKHCnoDxgKqSNTkPmtkRhltfNbGhlF12Y/07BZDFf4LihdvQBu8l86MZvASK0NCclKlhEk0PQALFW4lx2g4+Fqh8w//S1QFrVRcCgVwlOCTSiXKMOlqx3Kq6v8tOqjFIagCUdWZ3sUhxFVDE8Ddxmqw8MxWG4YAESiaEKSpQHnfrPd6S5xm0rvUkBBl+zrJKZSHW9PjS4Q2nxJ1l9Hj0q6rE6TfI2yCNE6rezE4cFt2zL2L4b5e6U82eljJNRdmXbUAo5EuC4MHNLYiibaXy3lUMpKziQIraGFBzS6DK7Dm645xIyd0U3P5AibqNNbtyGtZpobAhPLqa51eI/OnlIMkPUOFe3X1fZs0rUGlUlgiwJ04QNHj+Hiz0EiUFaMSfnntM5mONRwhqp1me6a04Aj9+K3pS6o3PNUVtgk3r4nBHuRoFm7frpJp4iNu5cEY9Jgb8EShLuJRlBnV0ESf7oLoKxpFtIMAb/hyANbBARNf+R1Hawz9pqMP9EHlHWCSMxdnAnMeb7x5RTmt/1GViBiNSMwL+AOi50uqO1yzQJZdkPAFbrKzYQRIUxQdlMnZYQ1LJwRgziYz+cyyZv4sTPmxLY3u49pnm73Wz7yJmR0yTPsok5COH5C63Kf1qTBnBTFV/3YLvYGjelcjdeegugdtBsP0U5cDKUozlyABBphQ85dAOcRxji+oBRefdLBOlQdJcrImb6YngiQtk1Ty9gRBETdKkZffRECKSAlR6GWlSeLF0jaFyCFkvIpaslGDyftSzIHlBpI1UpMHlQqlqwOK9VTGlWyCC21H8kT+LVuzWkg3+ebZVA0FO8zLOJzL+t6IHN5vxW5efMCvBlipMJijjJtyvuYbjDxlvRH2kW5CKtiF2meZFMUdIb/3DlvP15WN/vtFpXtcZGwzTf7mzP0Ayp4YkhPm6iGUXKqvHQmk4ywbeFwtFa1aREioWUsjtNgVB2NY5LUrRPx6D/m6zq8e41JZ9Joh6fRpJMP3b84JZNUdIOnSvVDMsyoJwsUbMo3LK2OtImC3domrX2m6f7zRmdvJy1+qR2i8zF9o0NuiUABaZpOvIbAVbgB2qBwQ3JnA1Y8OVVycgBJuIcjqnp4OZJtPk9HSvf2dl3myQL67FysxzjbkIVeKQGPfTwuomsuHfK5R+ys+JYTUSJcVXT8rWLvjQQvE427qWs1+jM7G83Ij/dGtnK1tWse+TleVKIbAUIXmnh5HtZTurieId8svocfu7g6H5eRz2Rbv7HGJ6ZhRZweUeyyNZ2m280eJvE6KlC6JlEnXEsRtKhFeTje6kqyzNJSaMk+jaTPeHjzESr63M3NfgxqA2nNCFQAvVNz6w6qKo7wEpKVSMj0XEC6fGAXIgpvf35HdLms87XHTgLvdskymKp9WjqEEY7sSi3rvkToA3pEw75z06SY797ttvXusZqDNIrTtZl4S42ul18pBpuKK7K8mm2zeerWXps8szTUDqlHZlJiMkvSkHCbGG2nE3WUM8SuU8jdrkhzxZ6Af/s1tg23O6MULQO+WMo6IKDNDd/B1SZCsQpimnz7lkgwziaBTRiFcmtAJ5q1OxlM6OJQulw/w0OBsuwOBMR5QuUy//s+LVNUaUqK8o5KE8HODBM6CDQJjj7rsjr/jtb7On3smfpuiGJWGX0rIZTRWVrtsuQHvQ4nzCNfVphXlIvRL6umzQTvGif5CfqEtsVjuEyGGeHoN6vr4tOcfL44xVJ2CtZLmJVRrpYEkIqmqGVqkoMmfNyllU7efsg4i8MX3lFx9f26Z1hG7AZije+u0zzHjQyOijb1DrgCE3VMtaHgwW4zn7fRra54XLUqNTLNdaxxx3uuYanKsR8cverlFkgcqZs/IDlmcQSkYB8P0OU7tKY/TywGLuE02SVr5nW+0FgMXQMmlQO1XPa71GS5xHHaqikwW9k2+bht7zbptzTL5pytjYYszIr5p2qzdj5i/GXZj2SMfhke4kD5XO1jnis0rwnp78VWrAGp24tOmKbb8vUnoiigs/E8vAicaHA9yQiw+LnUMlKDi9ZZ07cE4hwMTKooa0cjtvTQS+YVvsBwfihuDx9+rkk5BnDQw9WzcAeLvBwLx+GnX1m4XznekjBDLjT6rMDV4D4kOCC/4vnag96rKE7wjeJUvM8VmlyKhRI+V7X/8Lqgps/704sAZc28aqY53e95Ha/6YmOWKuzuj91Dmn8n/pc+0GiFSSHPTywCZcXo0ah1uY3A0d4HJyX9nmT72EVZ45B/UNHNNfJ5f8IRKKtbjehf3wle72iMjTYnrouWCsmu7rpqDBbtusBV+uOkLOgRs6mXcy3DEX4Zp/TL/BEPX9oO6rfm8UOlEH98OY4QV3d36TpNsq4xh1sh3oDX/QlYxSBX9VKsX5Qh+zyrY7Ahm3WeYy2dc3lI7+RtAfO5Fj67sfHHuS8hSkhvJzm5ZH1zu5t07df1YWDVe/Hw88GBg0n6TK7jYJLmmQXAtGT8+TGlsUgWAbEdMWZvRQ+H5ZrbhiCZ2pG+/pcxHDmn5tSFu7dQ+7MY3cvDjucwumzznMHoSvc6f8FmPqRJEBV6cKiBQ8POU0c402yYmL3+ZeKBje1j3KozE/Jz3d5Ni7yb7d6ySK7ZGhYp3LdddXkPqVkRuS9rFLwFf1nd7h6LIdjNOspV+7Q7kUyB9SZR9ba7mAqgXSIZ4RiT1cPzmoaoFsypHTZmdG2HJNfPRRSgLFN42DjXBF1W77J9jfKLEkVuZZ8LUtWqd3CZdtITKppamw68egsQuT8V2DemGA5BKyPfML3bXaOqe8tr8s3WBzbF+/aCQ+6p2iOtuoX0gwGnWbTIV4Ke4rVStEwuEewDeQr3LtC2j7Z1Hdp+WiemU8N0b5KzNUbfZjhqA9QCojL1Jw6Qhbw0DGpHCa/p2wlmGXs6WMo2WStnRxOhO7n2eFWEzTljl3LdvyTq16lcW75EGrdbsS11/A7K73WGsD7FEvy6fkVsIC7yXasfqRuSVyw8JFEhGlBekDC4n/FtrzO31rC2On1Lnee8Dn3HJcpq5Hm+8eNjmNaZOjnvFgR1d9qm5tmCyEIINnO9dzw5y+ac510iWrTXq0R9zslOzdESZw6a017kxdQmdMIESgcgChCFnet+KHLUnD5wPNc9ZJznXPdQvte5bj77Ia12d7U1chidYUso9nuhFncGDVUGrUWzycobg1iaWOcpvI9RLP1OLXoAZbxbsuKEvvRCTlHY2b6kPGIcqIgQxah+Ev1Rdecle7aIPRUgnDJQEAEHDFSU8TeiVNICyRZnOSKe1PQ/oDmLB/Bu1tGamvWgrm0arpe9X1bHu10Z476iPqB3vd6XZYRIY2rDaYapI/quCA8J8a05vqeSn1gz+TRryTtUap1V59W7M72yv+IplC5LIAvzWgWZPnjE5TIZ55mK0qK9pqJ9zlnH+AZHR8xL6MPv5Z3u+kDS5q/ubAOdQ4OPR3dIFgOQoRGADZpJVrZmlsb5DGmHEthfdqkrQEQpUR7JSRThnqaR1dnPkMR5vAzbDJ0djX0bPvRFYzsvY30gxxr/Ha7D0S+NDpTtwwv9fynKrzR64rTYut+0IOaepS2IQvg0CYjHVC2jL3uGx6b6MVuMyGz0XXfoLNqpt4B+UaxmqHOUaFQ9pEzo2k32HECZ+9QVJK2cKskJkAT1lIy4Xk5iXu8Q5BYWPir/nNbZ4feuzkehK4yZKbv1oR3GaK5iz65p0SN4QK3rM/s8d2d3XaZFieF/+pDk94qw4sEEEjVkSoFIY1GR0nklhW5k2oku0EKCcyQasXm6OAM93hSerpxnMq9j52UJcvMyq4MbBEq6zDCqbMw39UstilrUOjqVX1C5PZXHcXWCehfSUVl5QRWxejiozDHW+NXLmatHszZi+/vFQI+4DF8YxQs+weWhOKOTOO1T2e0bW3QY0NlBhSfYWRbzAp6VJAj0IqPD7fhtQxqfWrevHHdrCY1dPjxWd5s46N1JGyVpnjdAhOp+EqQeq4t3nvSou3ezwL4+L8jbLcHPRfBw/0idusOsPawNKrtybYv1gvRZkSfNgpsLlrtcPy8YAMq6IFdxJWmEgOeLtKxMMVMjrcV+SIwljxOtdb5N0kxTapwYby76f+SymqvIAwPPPqE1Sh+tAj3sI0S8PeEAcdANDsmrzlNw3g9Kl3pwkCio+2aldvF2Q76f/g4CWLKvguO3TF5uHGfzrkiywIZ5gu7TvIqw332eb0A2MfbMXo+0Z9Y1zMu8wvnXbUOfXIxYD75iPvSFwOTLsP0ZfkkPbR/whfIkZTW4F/4yeTFR8pAyhet0jPHOsdy4OHbV+novN97a0+nZBZLlp/NejN+181q/jB7iwzW98AYqvfSgbMJewG+Hxi7Ap1nmOWxDSvY6bNNlnKoJ0AJjxKDf4PIiDATOyNXv3ax85LnJSbHR3QnsWYj6eF5narC19akr+otrbGKa1BlKBEFTBUZQ5+Y2WxQ3B2SvZnegUdwx2lPsY90dhENxLvYpyobgh/Nsmzycl2VB7m13xDqbdR68k8K9sN5lbHR7t083zl76eLfDOphQ9acYAH5fVLq4RMsh2hyXHkgnRVosj2quj6iqknv9ymWMcm4r7eJhlGppV/oxfdjQhAxEbut18NjkBv19j/K1KI2hqWTZX7ex13TtD2StH4osKYn/Pc6rb66Lf1L2eQ5oiVJ4HdSCmEzV1TOF01MiFTFcoA9meP55T3p5lqPnu6HUMLHOntgOFjrp4RNesparRkz+rJeaTD7zqKF1Dknoa9Mk/UBpkF8m1GkAUIed4JSN4+0yOgZzOw22eQS4DftWFs9x4D+3O/34Z5Q1qgZLH9M83e63DecYrgUL7s1Q2Qb75jSO+5AOjVq4GmvRdz0PB/m5TAYlGFo7TdgMYc+yMh3uLtyZMDzm9ieMKKEjkd0sXoWXIHjlL/5A5KIotz730EtbWld0mX3Y5wzf0OKmvvoWi0lXppbK0eg6ep7QdZziPsbydTJWoy3IK0VwMiHOZQFOJdyZzOREYuwfzHTs9nizSRsXMdWRe0GAqx2KEkFxmhUVisHIO57A6HyMQxx3h6kZ0sCe1X1iZyU1R66Um6EySc6Susqu3GMSmuyK6ctUYkt0OgcvE8dy7uw829PHDyzmdvX8ElCAx3dYS1rq4PGy+kua58NAzzd6KeblKzaRx+OEhswWeHxT70n1G4OCX9k9CepYul1A8jhlm0Kux7E3HnaUqKpezTLgISW/Hn2/65T6kslxzLw1AwVhxgifL6o6ycK3pU5JZHw5vY3ep/cPxIkXOtiPhb51fZPUN2vcA4UZ790uCYxdfo+S8vhLsa+ZDm16g5DraUi/hT6haodHTDrwxol6EkrchN2fabn4GrL7oRkpa/ZKRlrPcR/oG9Z0oDlB6GjZPXZLyDz3CNk3jst5TWJx0Vwx1iWNrdF/8qdpi+qZoh2c91sGzGfovkToA3pEuJO6rC6y5L7qTeJ0WHNgFA5qXFkbVGY/cOWysOJrqDnz3oWYYtP+nmR7/POlVJcc5cc0L8qe+JWBeGArB6BwlNcPZz3pH/WkpxhNPe3/1NOeJD3lL3IFN1WpqV48hKKrbo2jCqnfjtP/YFnOUdO/FXl3v4JdheOhUPqIbGu8OZtjW+vH2X6bp7YVf3x3l2YpHTjb1f7x5jGtGLRaQeC4qop1Siu0j1Wjt0O0MxJUCeY9zzfPuGskesKVEEs33GCBfS6u3pQ4IexkiFXFfucqP0MZqtGzY3pii5xTqNbJRva0WImNtUB9Jz8I1CaKEv2TVBDuAVFJOhkyqSBnyZI0r+XuMs3X6S7JDCYR8oEdLfgQ0FFfgphyhnYoJ72gQXmbopXvEB31pQi1YLLOmyMGWHq8nT7gHn6Fv6f3eXOppKp+JUoIcZRoIsDJAgGIo0QDzUjIU9pmAugpzWBTNs08L/joGIn+MmCPIVRCr+k8p4MfK5MKfWNiDrDJVJADVLcpGp7GTAm4oamszvO7AtuM/G6qSlvZmoxKQLq4Hofi3D3dyxcv5OGUP/AshJsKiBbVYiOKmHdekF43z+9ad8wyvRKS1+0r1tN5SUC4ebtqtbWmAq3aJDYSXCte9J4Soe/KYr+zB6hErsQnpZwSnrJo86JTaaqpwKk0iI0ANPMSoNk9LW1R99Ir08uApPiuNSjW5wKe5sdHpGCladEo2MJ6cjMvHG/weKKqyZMLvSxqQELEECQ7OqshnoG9FlojQUqnp029dvkDwaWzR7gYU/i6LKmqFf0XVZ+TryhX+zqJFPR1JH0qNydLBGGRpDeqjeTelIax8jAkX6iPUxoiUIJpEXiRZroFHIFwQehr5FFhj6SODz3OJjMAj7PB8mGHi0jKms7423ajBJ5MCkFvoJoIf4BYKgSOhD61YWzqf8gdCEK1IWKIMQEWPyZ/K8oV/bcbiWs27QBicOOOUEy1bwfJBICRoxhrB09jHxs80JyhW3kaewTKMK1rpIJYecaGcmmOsZVKBcXx/SJvlrncIm+GA/GKw9zKZnYCUrvMfEcCIyzXHNMUrYVmmTN7zldmnzT3Grwrk80ep+T3pl5bnWWM1Rm5EMgDjtkLm/WdA3FKu9gIc/59h9Y12nRMoGNmEwGwC8pbfUDJRgc7kRACW0czkUOURAKg2SSNBE2VTSZYi1bpblM04TA/4G4rK7jdVgsD2201K9Q4e0wJNE7vxcOsd9QmvyYSLmmgN5dfU9lkjo7Ww7/NPqprQsGbFU3TcA6gBb3dQOY4lIMKmHoMp1HSpkKZ7KHeTG2MKIJM6dkYYTRLzjD5krwcLxgATQ32Yzs80EhzuD3QKAfh/D4Vxdbo9VgiCIskfSIccqIA6CPpIy80Q9awG2EV20DAQdqHFT2lCyRSWLg+SrYkl9cIpADb2D6Os8Ycvo3T/iB8Wi/6DSof0zU6f8R8j7e4WH2sqSHfkiCpkBDAKEg5Nmj1BpwDxXqDHSSs32NreqCaz7ZAUAsCqjHNEU4Eadh6MyIattZBAJqJQybnwQwRriC1Pup66hN9knRzRMhq7TTBEqTWEjblz3rKrz2MbRNyLZMu5Ry9dZD22CE5SgtNgEO1LWwKn/VgPSt61Z4t3FjhsKe2h6JhQRLmPtshJ62yE6NKModN+W2eZYDrBlfW1d2dnY/riEeBVs98EcgSVZ0YWKIxbIqnLo5kXAC0siTVLPRwVIvpMhtpoMnG7iHNv5P+gNKMjD7OKBPCjlP/YDpImwBBgHZBoJs3NFBjm0mx5xUOuBgEkhMwt7usSDY2To+jj96XivxnOJtkUHViYAHGOBRwXWJtSUGf0K4oNSt8MPlSnJwoFoBInmRcWCqsNB0qFfawEaDJgjYn0u2p0wLzQ7LPN+UPMtq0WCDhqZcCS0EqKGiLpRgXlLCJpsMkbIxD8ZMf0rrO0ElZ1A/aA3QQdewOWOA+deiWVscJ8QRawab8k/QeZ5sdUcV9mpuRRKkW49AaabQzWEozMvQ4o0wIOU79Q3FdzQG9fhneUMU89VKAJ0g11/FfnYmmgyFsjIOBI0qy6yypzXdHD5SLgeEgEdjrtqkjw08yy4TQkwxwALBLMio3bjGXNdIuGguUMOzIy7QTgU6URwG6Jnk01CmsYlPzJF8w8hRWCCt/IuS192g2tdT8oQcglEGFw0lvSlUKpwQlLF5EWOpsZYsO3VWlThjV2SaGMBO7ShusCrQLcpfzY1NhmxmcpicWZ0UhcfSroWvTw1AkVuEQ6iRHxKIk1ly9t8o+kwwb1XawBiLOtAww/l7oZy0i6dKA2AilgCFJnAKEnGWmhiBngQMBYD/xMsGPJ1zSnHk+4ME2mXbC7Ay6BSzTkEd59+az6hCxGngN3aTwE0SbZ68Eto8NEpqcUaAIWyJUiOk8IPPguNEJsrRL8YOcTNCZdvZB9TG9IWSc6RwiZIYD8Ymr7uab6j3KjLHyHPFiQMgJNfUtMjrLTIhAyAaHAkGiidH9UaKlQK4RZiaocZaYDmKczocDLd3VCSzRcqCluTRhmr1g56sTYgHM8cKEJQDM8aoEba6lQHCZlyRYmW46tIZfjLAg+FpeiaDLtDDwLuoyBBu7TY5c/wsQZgUu2+5YVXQXeShywHd4DMST3eOhkk+P2tFu7jCYywYiNHfwjR0GuwQKMouXdXGuS/SpM4FSY5xZHOcB+csCi05vFDEdO5EoQf/YEU3lHCWhIPwRolHPmyhtY7XW3GUOdYgqW0QQYkJnOFSW2RkytLFPnHC8ZwGVRskJnRpghsU7tU72/ZdtWtdoQ3t5M5p48uiAEtgb5ssjgwrWdUJcwdawclVt1vnw9Zei/HpVbshZ6GKrnxPLpBCueqqJuk1AKgCOPVVLNBIk1SayQUOfOxCXapNEkGJKTGKNixLXz6r7cfqQ5PeaHRRjTi1iO9qpkasUVgdknnZsPJvs6QSsjkcsmJvsF1G4ST2yM+qd0D65f14uuqOgOprTjoHi+dHbBiw1/7FGMJRLi+JJg9L0YurwzFKOjWadDZ1AFCV8zcpm0cSa1D87YtsB1ZP75mUiOQKGo3nlcNzOvYYgzoGMqwhShtjrCHIB803dTDpPt56gtMqhLFYpRnH2eLMYxkaB3eJGpJaGmAGLAYPSRUHSHoTjwU4PtImgNSeYDhc+dkM+ba7RYLWoMZyVCWaAnvcwblYYnib7Cq0uyBV8Sap9Z1miBN8/IURTPXsiCQQgc0ge68kTlVkmgKDSAjZl08yz4W4QenVW5DRFDT2IGEKfurJHgiAoGIDCLnEkDOrsMwEMdVawKX7IPxscz7dJmtGwEPpLDUWREIJhTzMRCiWZAATSlJHgp7KJTd33eQMxqLJBBBmmCDBbPxRZUlYP6e7Pe1SRlNVxXn3TPkevzgMGncnkU4WfaQSF4jsG8oZqrHA0s/1swAOwCQ1RM9srqmDT4vt4t1t18liBm8tgQDamnR7UvIAGRO+UrS8+rEHLOUIH84gHZ9BSsQSaFsY0vqqqHB21nMsA6CHD9LgGhF2Gu1Zb0RFLA6N4GFdbLbJw07vtQSJrx81kWarrZkXU41vdGMfx3YDx5vbegLEO03/TqQKWBdegYfFBl8mA6SnPeOikNI5Jxsez0nSO8IlxBMTCVNGkmmvyOIwzHWeQTMYDmEay0i5o5K0154JmlYD5lj21PMd56h84T41zoLKThz4ycvaFfEffMQTW+6outkmeFzVl8etthU4zenSrevu8LvdIahSE7w2qW47Hm02JyMuAz581SQyo2jRg/4zncUu3U+T83ZacIbv8UjbEDHpP25qxnqEdo+FtXCU39vlcG5ZKRnbZaS2rWDRdsg2b7qJrBaPuomgDqxu0xQ0ErrsuzSwP+9YoIA/zVKcdJxUTu/zkWUMli+ZxRwMb7BeSslaBZkg1MmqePIEaGUmwzK5rX8LzMQZ+zdVVEJ/uUisDg+YaLzl7dzeZkcF1hjb3SF3NTLqFMOTiJ5kH+W6XWWdZ/i4mYzMCrwiC2hR4m44de+EKFyV34b4Te0eu80w9hVla/lVoUFDx4WgDS/G5T5mj+E6mqSXwzzQCDYJ/4dBa5fZ5NJ3K7UtjprY/vDcE9dH9kz0WbJoLmGEuzS3GFkya++xhJs3F4BZMumvxYTbdjfIWjFQsLKVQd578Mws2daRlZc1ouOpWUVXsRcQmJ8teOQv4WPbGVnvPY3A4Tj7S5BrNzNgbBgBe7MF+G1Yq18fchWFgIweZy9zkiG5bplpu9mzEuGQNUzHs17GI1I67PV8+AFHDmo/xc2Nvw9k8euwDhoCxYx9pY2DChrzJbNhIIqMzSLMkrx/wLBmukzYmzsCmjTuRs7eRGzbZVY2MCUgxsSlLeDx9nm2TB5qKe1dzkxc3hcCmL+8c2bMdVre0jIclHweJd7bcuTUlpwLMjF0YshszWr7sDoY9e6XvFle6BZbMGo7YE6+YBRaGjOuMGRpxYUkKVe5J+zXLXp9+IUZantJw6dYSGS6MxOKqJa+ohRHogH/FLZ3IVpCJ1ApItJAdusUVjSFkPoAl5HWfOAahq/GdkAp7sDQGNRhSpTVaaJsswrJSGSSaGQbLrs7zuwLLTX63C2AKs+jyGHTTZFWaTVP5bgVMiK72HT6bRgeQGnSUcyht189nTHYDeE5oLrocYWUtmdKgmJRBaatuldpkKpnj5JbqF7q0VgLfzVHpI76bE2Yd8akbkBuzYBdsnG55e8UJK5sHpFOrBJFDJmJW3jUGArlpTRQFN2T9dcUv6wO4kak0NS0Rg7jpFoZ1mJE5QQbhhI9pkXZ7QWuPhsZKB0oawRYNH5UlWqGD7TDsfax6+WRLAFRqHWRiyBrclozGIgA3NToiGIRuwKy4bRh4zgDRaUb8ADlklm6DSTd5gFgBNpE2m2KCpZNTi5WWyKpyG9pISGmZKY0StbcxeFWY0KaHMPhW1w5nWgfbl/uuTDZ7nJjfa1qThtpCNSlTBHPJPAGbgTN9D2N1262rfkNXNpFEo1ZCJIXM0e78akwhcQEM0MsbzwStTTUGuJXPDcOC31bhyt9Wo6veY05T+xKNBYQ1te/YGKZBwBAqoJvdQGSaepSpIXsIYQw6YAAMR/QMfRUIEmoQwlNa1C6XIQJaeH6AcbTW9jASCe3QQYZLVyvAksFeg8anaEzAcQAUF4NU4sGjlU0DC+BZNbj6+KfV/GHAv4pmsmOI8qpoHY01bN4Ag9UyvAPmby/DE14cY1jf6BYVA5TMBtW9SqVVW/EyVbA5FY9KydYUdY24WEeX89ULUjChzSIbQ69ftbPcd5CYjr4y1e6EGZbsACrj5pphuc56k856oS6mX2fLrtpdjI3JMgOhnVI9fbh9BlbTLISzZZOwoKu7OyNwejo7lTrycOP0nKa1TRurqTZKQ2DWgdKFmaFhATlfKbY0ov7adRmIzEYR7ZqMi0WmXI1hSyVLx7e7rEg2BnTwpHYqMTnC7cMyG3shvC1XCkxWGkikNKokZAgyj8gLsI6kSSwTiaHWSgsJhEalePog+wisoHULQYto1knrOkMnZVE/qHYOQEKzShx9mHV4ViMuX3QFtkH0amM0BGbJKV2Y8g0LbV/UyRtLf34rRmMHgdCoDE8fZBeB1SQbSl3RzNEItWkGIrMuPW2YSQY2kDkYqSNYIsloeVV/pAKyhEikU0GgBXcbm5MXWkuIbBSW6MWOYoo2Fkk43AFbBKTVawRlUdnHJn5KyVNpLAXXQOQYLCWS2VW7wT72+JnYKASPKw6asFUkOr02IrnKLmBzMHObpHn1pbYnyQyGaagsFaHEkYzS8FKYpJU9ZiekMYdAY9V3KE3h1ANNaIT2ZRtd2AtEZ1KDJ4exwZ+XM1pGYDn+EJY/g6dECEdmrF6WOggnHCNox42TPppN2k3y6j3KdKuTPJ1ZGZY8zCwcp1F3r9sS28gCpSmadKPglCxI9YbDNCorth65dAuBFduODirrNhxHmLfY7zvqMxg1s99ztDbWAnYbeUnMe41aeluFzfuMriacb4eRrRlWGsVOrYpYt5mqyAPvz3LnwbV7tCq2euONAzpLrLlBLBqyprBJfyh+pVnUlYk0FSzSgnhhzunrwCLxggzCXR8QDSQcVzVIWDJz3TLUYSBhGU1nE/6NeJ1ZBEqzQsLz80HGgZ+yt/ZXHgYCHqAHjGN6pp5TRvNQPaMIe6mExjKa9+UhZoMS8SyjfAZdZyi7t9NhVY2vp0Oaszde2NjT+Oq5ppDBAhHx52JdH6s6WdMWlAsxHvjas86A5uehYYW1D0RDSlutjtg97KxmPwYc7W3pbkUH+9kCcT6TtX0X4IKVnazhKVyoa1Q/huvT0apfvh25UxHLt3B6piz2ylo4QHcLzusBRWmsLOhis0hW0ttlDEsY/Zc+g71qRl/mbq35nJn80iMU+qx/DpJTTf0gJLfQzd+OpYt4Vr7nyPDj5A+2CfgKIWAW82uFnCba9wrtlDHzA4zD6BBsGulFPMAs+lfzOBWU7+Yx4rN3mGmsoXzuTmQVZSkGuja9u9IMWJTRkGuWVNS5wIUa8Bo03ZKNhj80EQdub4tpSP4JML0VNc+FqVSEHwxT6LczXKBifOdLyVdZNWHGAx6e0lvQ9FKVSl3NW1WwztwtdHYm1TwxNTEeOeGNiFS+hKTDDvQWUhxUQk8YOddRmA3l93T0VjS8v6PSVv0CD6yvxXK2jrmxkY/WxXD+w7KfUb75Yu4MoFdfovc40GMtUd0neT+GsOvfB+nT3hxh7mibtB/eHGGSNdrV+yT7WGxQVnUJH5PdLs3vqyFn++XZzS5Zk1HqP988f/Z9m+XV2+cPdb379eiooqyrF9t0XRZVcVe/WBfbo2RTHL1++fJfj169Oto2PI7WXMW8EaTtS6qLMrlHQiouGkt6kZZVfZbUyZeEXCp7utlKZOJrKLz1eoN3pTUg1N21STKQttHlIL/bC2iq3QsiTP8mipB5MN8F1oisNFDlEFPrypw47806wYDo3p/hJSUPzpwW2X6bS59FXKp53bZvTrOMum/2XJrLT1ke0HWoFjq9AlV65cHpNcjptQun05TcHs1yab7YcyAzWMEw7Sd7HtdFVZNHgjYCI/a7g07FPq9LUa3uo8znzZEAX7FxHEmtQ/BVYnOzaoyqC1UsGiJ8UMGiHaoyqkwZ3myoKyM/eUbMZ3teHxKI1fDVAXDk6QgOafJbErr8zbKNaJ3hq4Mkw60cIjshyZ7n+fcdWtdo092m1DzcxbKGKexLOEnvT8pC5Dp8dbDkQ1rWN+l/ii5k+OzQ8EuEHc/mSqhb5rMb1m53G4ifkOTgth9x4y2vk/pBcNzMd4dabq6M56oVukXeyAMPIe7ScotEjAhpDpjGiP1WlJv3SSVoyqc4oASt92ThHbew7U5ACp/kICX7gAcnpPplD0t+CovCFA5DkG/FRbLGLv08T75kInc51QHtxfprsa/x0B73L+i2XguIl5M9eAMyi2kObWm9xmOdCwxRtKF9u9Ck5GS3AaPczwxfFzOEgK7B8BpQyIw8Bhc2TGwHGm6dyFCyyIdPGWvOMHv1B1d7UHVPVc3dA7ziJMxxxNHeVSSN3pjv9txkP+E6FvUbFcwJuWPtLfC2uBu4+IJPx2FERwP6GMdRPz1zKQ34+6/2nECv5+HwrnYor67y00roSNnv9tzO9gjgNXx11O+02O7I09KQmkyaH1c8+fmcbpEkrYrGsRQSCyw7GyHJYcTeXPlU/o6xcpdKY3Yp1ZdzszgOGkZL6F6eNDdlvrtzu0Bo8yVZf4V5Dqn2nC+r0yRfo0wavHIJzpL2z6Mo9OfSPebAUrXxKQ4cOyUhnkLasvqpkN7Jt086rLHQ57TOxFXt5pODr0fVukx3xAsI7p5NcBh6l8KqBv2wLGQ1O47+6KJbB54Ig/OOgzL70e2ctaG+WcO2PtoHZj1rRJV7nDo5QeSaJMAZcwku/dEG4sZ8XkxtD5fRelV1l92jntVZp5lmknW3GzwdFEfUw2c3Xrh2ZU70o0PnUSZ5c9L/TNoCFNPsuX5M83S73/KHLVnWIIEv/+4cmroA1cladQmf0Lrcp/RNlJOi+Cr1Z1D6YpqY4WZOG4dKOID5bfypJrNygNrnkWbmXMrUEQPgpp7Hdl5cT/Ix3eA8W7Lzh0TcsykuW7x5kgH82O8O3gn/uROnWv1Hl2nbzX67pTfcVpU4ceOSxt1gnLcdBzRh39br2HAjNJDhDSqRGZ/iFEJSVugGD+7qh0TsKqVEV77yqJr97gTHTVoDXSSXsCxIqt70s0Ulye+LTDivFp0kC4jQLmH67iBO59Tc8Cz7Mva7W7REs+UKh0uwaQ7tuviWE2mA/V0hyWG35Vslx5n1HxfTVtjn97way8DAo7XoMk/nhBe/+KB8adEmhI/k9Yngg/MpR3uEXKyQ/uOcXSwVQq5i5vPC6jkwxIJ7OtS34t0DK7hsIBDYRMfqiwCsOL3ZGbovEfqAHlEmopNJWAyg1M8JWgCpyeyBIFXGcauGHBURuTSSzDkLPt7tijQH5nJcwmIAo7rA0gIu3W2cHoBRZ7Vd2e44uLbmuDtKl/nf92lJT6ZzywDD5ymPgVxW59/Rel+nj0hclmASnPhlNJhb4tZ9drB8Wu2y5Ae9mkAwPZfiIh3OCUR+st9duF3vv2TpWuTVfXXa1T5Bn9C2eBQl41Oe0HDV9ESpjTMZWPj4E11ulVnHOCARty+5TvMcqy1vgnAJLu4K+8wE3lcR07wOmshIlRIXA1rVPcYWYCVZPVAKZ1MPb4qtCKPu2+HGpH5Mvp8mu2QtnQ7kEpYFksD5GeERMD3TZ9ehRzU5E9NchtwxMBln+P+RdKOXwjiu/+jI52pfA4zo18Vg0fq2cauABYCXV/SCFR/bUf0cOIrsIekhLGjzn09x2fRPKnG60n1bGjaNl7jbQ5Nj5Y9MA5t/HGAeb8mGBrClxyU8MViKL2b77Q5yTMKOr/2MsGR8hvhWsJ+74Ln4eAoThyU7CSqyvHTEfHbk9XuS7SFm7ffFoMf8Xq8FeHgmHtgxMRgHOmSGTs7F9LfiyxGXQrKLXyeaoM3JD9G3D9/dJb266ywFi8qmO6w8FFm6/nFSFvRVbX55mE2Zc4H4kdxDdU8XVn5rHnfjV13kdIejdXd36TpNshZ9/PE6IW0xDdf4jLTNThXLw2fDSp/f2O4e0jsFkNukybcpu+LJwb/N7U4hXJ+6GDRIjzQHDgIol6BBgIKDyvKUHH97TKWdDSHJwa+1ef4DCU6YS3hidw5oH4S2CYPo8nvdXqXMq1w26rJIoQpswtR+gBbcNXdxJZ5LcpiHtl5D3NBmv4+xzTkjDlWPwlrCkGT3RCGcVQdCkgPCYPd98nXZ9sVfSKbuu8u+7O3usZA2q/qvi4KN6r1pS9iQ7J6wgbPOvbCgrtR32b5G+UWJpIplUxZVuernxC2rt2HgWcGqzLpW2OSB2uGQ4tiuoTY9o3fwjyqZEUgBEPIEjxts7Ct51tYYdDabZeHdIl1PZ7O54FZ57XFPDx1vKnn6cgxv6XKIiSqwZM4JRyiIgiDkA6C4VR3el9ND4vJsg/nsdGGAzKn/uCDgkJ3c/v0+T+wMPLyvW1Zl19RVpMuFmzwyetjvi6kv5nZU3+hE5uJW98rS5lbO5IdMUnQinzT1BC/izbaLXwwwPBjuFs4QFsUw9fEKGqkiXSHWfXQYB+xLursBhB4ISdNugC0giitC8FZgzJY9qGLBoasTOayFTXBZSzje7Uo52J797rFfuV7vy1KFqyHVsTnJHSbzed4mdUA3UNwUZOwTsn/IcPBpQLrculV0+T7V4evk0WVECeiuPy5hvp1z0tau7hQ7rX3ClDukT6XlBITC9fl9W41bAFxsjIbPdn1RPlN92zwnblHtIhuP2jezUJlczCliAUq3r9A+t5LtLM65G7hKe65sgsM8izzkxs+z6JflATUUoSHQ9MDkolDzeYF37n5C1T4TsNd9Wx76rsu0IE/+qN96d8Eizy0EmSZORpzyDJSolcnm86SSUEapZ4m/ppaSB3/D58WiPI0G8BjQDgB1ZGDYjxLnrshmtT2Os2J5hdSnno+xTtnsynoViRbgpOCtFSD5p4OyxXUkSIeD2RvGUeGweLd0VuTKt9gtqq3L7nOroDKrctU4KALugpweSFKgffIpDhwX+ZhtjIdAYz+G2RxXhY6wuk1L1ih9lN0i+/1JrgAOAPVspgMDj4aqyzxOUz1NcEcisug/Trl0+K5IhLbUfLHn0D3DwXMZvjoF2kh8um8zLvm3bvwyr+pyv276Ep4xSOGyWRjrli+ch95sRC4ak7gxKYtp+NcPaZbk9QNWw3viR9uNzwF4ON84Lf4fbpGfdsmeNdp05+41qsinHUhIwQPdR8cBCbQhxCW4XLGR19ISe/vNCS912o5ARbwMCQ5+vtgI5/6aL8tCXMA2Yp/fF3lu24ixURPFw3ghZq76Lkvv68jPs23yQBl8KO596lufX1nnJIdU391Hh+nGbpe1L5EKcw42wZ7f+0J8Dq35MkbMpNLrFftyLQbutt9cTglUVXIvXrLefXRb5pIXudyDkeXHF9jvLrtoW3RbC0PE/qNL3/L3PcolO/dfHTCYZX/dCnOH7ttifMTN+qHAolcP6e44r775P6Un8vEJNTHzUNaamFUKPYEIHFAxZKd7+VXVXmKtKIMn8irnz3vSqWhLYUkccEn1l2ML2O9LxGenbThCO05hGFVzmbN28Z/bnVCz3TdXjLQPH35A+X39AIFFIHDmn3w38OcJlohKPKCIB0yGWaD/1DGycaI7G4QKVF5uDvPQl7A8B3pRlFvg7DLz2WVB6oouTIiLjOz3hcI+CtyDYe4L75FAB4a9ysnTRocdbzZpAyag1xfS7Lle7ZC8rN1/dFjrz4oKSYyGr2OuE8/fkIaRYnh7GniFNSsdnwWNkCO34svqL2mei159+DpfHPAyt5lv6j25+RHaJBaS5tt2jrEVjj1kiarqleQ326/OnF6DnF47+cxUfIih+eK2+gIsvLg9IVJUdZLJKzjsdwedSDRAKarVfXRYq0vvH4gfKISKZ7871Nm6vknqmzV2lkK1sQkO+8m7RNhOJh8ctENJefyl2NeMqxP0BClc6mFLnRT6hKod7pakp4mlZG/ewHuzMMUSe+6QA1k8l7De2vFw1ohjVblfUfUpo9Zel3ha5HWS5mQZgSfpS2+/9H9X3Qdi7uQefcQuLKuGfNg6aJtQbatdsqZw3SDaD5N6/ZJUqCF5/uy6vfMTm/RHVaNtW/F/z06zFJGop47gY5Knd3ga+plcevz2+euXr3BPcJylSUWWnbO758++b7O8+nW9r+pim+R5UdPti7fPH+p69+vRUUVLrF5s03VZVMVd/WJdbI+STXGEef3x6NWrI7TZHonZW7ZWXF7+a8elqjbc/jEDd76P4wH55j/QD7GGO+x8Qnd8Vhlzb47E/G/gnpVkJbK8fZ4SE9NG8w5hBJCAruuEHFPPSWAColI/f/bbPstIwMfb53dJJnsysZQujJcpQjTrr5fYZX1/+/x/0Sy/Prv866rJ9YdndG3g12cvn/1v54KbraKm2PwxKdcPCR4GfUy+NytjBDXOPIcBjIbvq5cc47qUL5NX8H0dm28zwNHw/MWZZTvg0dnVlSU79GFg4lg3/agnQF3WhWpbLPRGlV2DhcPaza0VaEexmyozN7KHoRXnYapkXTlWfK/TXAEZWyjvRf9n4Zy6fEHuSXh30U0CLrNKDBsTnH/f0fdN35XJZp90y7puwkA8QmQ6Se9PysJdji5fSNk3D2lZ36T/KSH1v22T7//d2f0OUdENtw3+s6Y3vLkxIu3ndreJw+z4EY+qSuwuHqIo2a4N6DqEX/7kxRSPRe/Scot6JHxJ3buFa9xGvhXl5n1SxdH3Bq335KQd9gLbXRSO3DpNXH5RTPj5W3GRrHFnc563jw378/pQrL/iafZ5viH3kNA4k8Cm0TEMFu14vcZjsAsMPLQ5bU5Z+I9GSHcN93gmT9blpJ//8Oyyus3Tv+9xwmdsDeLR1C0LkMx6RMO83AW+wGk3uvEZ2Qwlu/t8WerB+0O2m2TyohHqVQShoo4CPfAxFS5GHu12SzVuddvkChr5sY8aOg48+5whY5wxBuJBYwo3DB5XVXqfyxfrHCwQqVaeXiZ0EtLfo+w4/2jzBRXu6fLbbEFFtzvup1WtG35YsTrboziMqF6nxXaXoTpsIMNywjYkAb3RBKS3xnm4Li5z0Iw1vyvKNSp/xxC8S5WGcmfVBLjHMlbH22M63eeMYaYLhDZfkvXXKBOLy+o0ydcoCxxot7IRF+7p+2QOIbbqp+kxKr63kA87t57wifR/sw3E2piwyGud3MnJCI3uttSvrhi3BdxAJe+MHiywwge6bqa7Bt64OFjjdWft43SGGy9O1ubvJkY+tle/MW+uA8VULnZdkKUy+spI+GgVZ8S1Ecznc5nkFY2BPWO2A73ZtWciuCcIAhbfeHbt/fMB/D6hdblPazLcOCmKr4BHjjrLJds6nxPynLMHnIfckXYZbaaifZlRV988N8cAaWIsu/kv2wACvY5lnr6mR3Q/H9MN5rAl+3uG4ZLr2OYizZNsBL5n+M9d0NzwsrrZb7eopEYOmex47gG6eQtvR+G1Xg80y+g9Htrh7q6749qtubF5g+YHp6QfQjd4aFc/JEOnGWvNtGE/SrwFBt0mrR37UTfIXaSZ1zyhz+wNvS7zmEuyAT1PIOjGiJezmmbusiLZmByVdbRPs5kaI1zhrPiWE9GCt2SPv1VsjJkiJjDWZHrwQj6thPd/rs1E6T0nn2GbnZd9yF3yt8Jrgkcz+pixz/jUOzqq6OR1GRJnwDGIVbcWJufKXUCoASxPjOnOGbovEfqAHlEWR6gYUx6p2qePg/iAEun9jJDIX5C0KcSSOGQBa7bo/EFDt6K7fIuNwLAbiux2BS7SY7RljdProlmf80Fql9cHUWzeUftN5S5L6KGJy/zv+7QkN4fGPTlBd1YCxq+X1fl3tN7X6SMKWZDAbDIarx3C5Cytdlnyo726I0QnzCk4cnO4rSBgnSbJT9AntG2e0fTnAw+jTK7lU5HRlYCJgz6ZcwRefoI/w+DsKpRHIGJ7i9kd/nWa52l+b9ossXNP2L8mNlsvVrHiQx1MuF36qSi2PoAj+SLu01nUPymxy00+Rh3z+/kKnVTgyD9wMbEz+pg7DMn302SXrJnjihHXK4kCIZNNNr8P+sT8IxoSqCtLOC1w2dIOOqTDvgxftKR8rvYjhigMm9HHW5RvnlAE82yVP3u/3pyyihFhkFRuM5kIWCT7Qz+h+FSg2LwMxO353WVFsnQsMoelfkYe+rTl3UOafycAxoP41GtUvUADztaMqRHZlZqwA+CE2+9JtvdhZw2By3ydEkN/QruifCqOnExuyWGM/vq/4BFeYx60OfnhPD7ucwZhq1Pp6q6rsWCdrossXf84Kck9SFNGsvO8f/Fgfpk/knuE76nNfytqw3LrH196lHF1d5eu0yRrG4aLDgHN8UNCnn77QQ47+R2W7aH/kN5Jt8ta7P7z2QMRNpsn7tUgh8Y2t7vRJmZ9B/qhuE+99ktoxuv2bjKrPbuOGLO3ove9NUiQTNcAXv+Lu/dhtYjMeyLcOdz4lGTXGVlx9QBIn9krVIHN/BTHXFS5rrkHO6zOX0QIZIPGgcJWTKQ+g9Tx74U/uEje6fb/uxKjLoYTppc18li+lMSJEf/CWnXERofl3D0Wwz6OecvRCVPEoE9kQmCcU7/yiMG+rN5l+xrlFyUaqwo+F76VMOT27Tb82lJT5oIatyBQrOY92HbMeaxXpIQTwnyxFQlVEwXeNTV27X3Gls3vPQzzvC+FLTt+u4ojTpSgUSEiwV+aKNGiQo3Pg9kwxI6A1wUeAgBG8eS4c5T5wHm+8eDjeBNwcyWs1/Hz/hJa56AW6Pra6JFTtJAJ9zPYyzA9zMlk9wpJ47M/ydl25NtGjZPkeBeUMPvWIwfg0x39gwqo7yV2K7nNFrZSuy8p+wh7z6G7Pl7hOD5Y8gYIVE/RnXZrPZ9ghCFryGnSy+p4tytDY6n7DbP1el+WEbYAqfHDO7NRm8DYFwbcFGS84r051eT0Gq/0OQ+sW7W6FZxYlRTq0eSGrGFueLwjMaQhXt3F2VB02dcb8ZJ9t/biG5vEwcK5wSgwdRATOFs0ihv7ATX1l6L8StsPeQ/Ns18XefjUG8RjxOrri3N3PUzWxUV/W3ld9m3Q0M0++pRvWAiKO1SDMBoEzifaEU9+qWd4mNInVO0zN+zF8JLXZVqQh0xOH5L83qt3U7AKgqXM6mm7TknxAFEGFgfpzZsqH/FMvGSoKKCPAvflD/HcrdysHUdwLyyjIGuLjP5BXIvvQ3cSg59uxQLwEaAeAeRPyKGcFXnie5XJAgOZLkh4eJJ6tQY2b1BjPLy3PsF3Bhfx3l5z8i700N0apY8x7ku0Wg8LaY4DBp9IgzxN9pXPA0xNtrDzw8YW6NFS3hVJFobG7vL/GMEXBjZWy8+Ws+/XPrPvrne5zCssy5r81B9F8iolxhVFmAe9rYVkGSFYleL5iTTpUdqVy8suIRXR9HQ+m9Iko9emdJdxxCqhZfjtkDFZA8/o53UEp3ZGDi62Q9IY44eTYiOdn4p5Prg3nzemfHewVHU+92zEstNR1fJI4U3n2TZ5OC/LgpxE9KorkternrqMjZ57GndLTyiTN/ZK5/o43u2y9kE9re3+5Fwr74tKv1Iedi9jLPDcFPtyrefqrvtHVFXJvWli5cyWrLBENmm7zsbctu5zKQ6JEjC8EG7p9jGa87VKFqspXpb9dTvqqz8364ciS8rqId0d59U3z7esRCZeYQcQkzGj1Yby6H5uVXHXx8rOyCamBuYZNnoYeP55TzoH6ZJbN8EGJmH3/tA6ct69jgPVTodAsLL2DICrolpiAxb/ud2ZeiGPN7RpRbZvlzWMQrxnyy757sPOy23tYsGB4RTqwHZTgYIvNMgx0PxP0VVdFOU2wpXRV3QKPqxxRVwD4WshHMbh8J0Otn5zc4nBAp/kPd5s0gYyMYK8ZP5XzXPywQPV06yoUAxG7quNPi1kGFkFNhR+2BfQXuzGj0/a9V9Wf0nzfHCxPgvNMcMq7TYaPVZjx9pnvKn3BAjw/qCwhhzz8F0oa3B/NNQY2HOWqKpejeGSCePXsRdeTpkrxOMhgjnWDm8JOW9BF1WdZKELJPRJvDK6vu/T+wfikwqnh+ftqn1d3yT1zRo74BDF3+2SsA3O9ygpj78U+5rxvdGVJeH/xI2iT6jaFXklYcjvTlGeq/HJxjgTfd/tA2B8GdC/L3ArwWEsdVxVxbp5uqNf0SU9wap1hkgMHTvPN/RlmI6wk+sGZXcvuk8f91mdkuV2XCJ5Klmsk6v8DGWoRs+O6d422eet1vTFZbEicHGq8lsJOQH6b7wE/yQxxmhAJakO4vHILnuCa06GTpqv012S8RoLZCDGlOe6j3qmYsoZwkN2AhFBv7Dieq6CYU0GeHPEQEOPGHpd9gp/T+9zcrZIDRlKyVVY+2USwNCyBjFlOdi0UQDUaGtToYHYEdWxKZLmmRdEpEJW9JcBQ+z+2FB/zdfpsGRGckzcyN3diNixKgjuPacEzADx1Xl+V5RrRH4DGsRxAy9fvHgl1aiSM+E4l5NxbPtx3Q1V3KZYsc7mBdM1vZnKviNr6OUa7r7/I3Vq18CNYpNgzarIa8WNZVOii74nYg8uSi7XZvv5HwlajcoLRRYVbgnAauYmBwKq5m2dAphBQslPBVq8WtZD8nkh1r0EtRpkUYOsI+aqdPjoPphyAWwkYPTi2lSQ+p1zT3hEKHUKv0PeZl3Rf1H1OSEPvSirkT7ky9Vg82Uab0PKagSURGg/j+Nd5OeLFXWpeKnYDT6DOoFFToudizTTTfTnRw4RUJag+fpUcEO1WT5scBFJWdOZfut3lMAZSLm6Yz9PByEzgCNBh1HPpjYH8hggilLkBCj6mPytKFf0324gptngIGT8/kbzZRL0cELKUow8PG40talVShmIIV6jwFKndUZUkOX7IkssH7gvskftAnzRMLOyGUc7Ta2e2Gh6limZ25h69ilZj6Z3ZbLZ45T83tS/xZytWwcDHDAkHLqn8+87tK7RpqsMKIp0ImBcFxUNNF59QLi9a+DQEXKVOHycxMM0MnISdJ9GgVGvnk2ldsSBMGoVsimxIZ0fOiS85CdwfgLHuTMy+ZwljGqmhs4cXZcDdGYfyTQXyjTLhKYhDEPLex/2+6IHMqykVr5koJ9uOGMsdEqfwgijWQRcgmfxQOcB+xhXJM/uaD4VxdboYQgRV3nNh0nwQ4oCVwD5hFEQRNW0qUZCGIgcTp2wMqd0RESKZTsgK/AesMuxBunsvqYHDfvI1/EWF6uPBVsCikCRBYFAiieDM1i/gwQeeQ3ssHDHSQzBTiB4aqjj1TsI0DHhbuREhyFqjKdWhQNOfLZjhsgzQVmbmp427mzW8x7tuUSbMMS5TyYuJcZ12vOKnjGusx5dZEFVtadRxHfRPXDldk5ohsD6GZDhGFjfVsYyoEHehby6u4vgcX4iI86RC/pS5/zgyJJUswQwdz90s3tI8++kmqig/NhZTHsCaBJ1OpjuxyYAaG4wzRX8M7FDcgv7WQx6SBT37S4rks0EndQsofEz4MA6NH4JMLjEipGCPqFdUWpWdub2I7ycnBxi0hPAkaCSTakNKdqc/JgXUB8S8qjSDzLSWvJkmxOTj+LgU54AmniNDsUzfUjrOkMnZVE/aI9bROqemkzS5RtPaKWF0dCmxJP0Hht/dhQU5P2uxbqRYe5ABVXMldq0J4AhUadDcSbNeRt4hXFBcJr59Na07sj59NYigISS7DpL6gXfcNiLKIjQf30K4Om1OQDgJBmFDXY/lzXSLvwNLwH0dTYhaBr5JAm6zyPBJsms6pAQRgBNq0xYiROhpr1ZrBG7+UMPHuBqMfbzhEBSSDIkjAYmhyvFBvIowIpY8sRuyQZb8zqm+fA0rXNyxNCs6CGOdDX4VD18wJ4F6leeYP9m3ePM0L9h4mWA6PdCP6ZeBoSIlJIMzccnAR+qyoGAp5+PmaAz/3RsethMPRmzBs4CJvHNm67GMzwsMQCfLmEiEE17vpBT0aZaG9LpzhbqypvO+zCPIC3XAQEvNTXnCdnvT8ANsfociCdadWf8q/coixBB+kTOuk+8PWp/yn0JkCFCL9fZ/ITKoqCiO2o6N1TmPKc8LWycTyovATyOR07nRtOyjptOvCvvfdB0QUCzPGK6EJwt4njpLChzP1g6K8jYtsFCTXeIecihdCDTo00FstGOLjPK2tQypYwHsdAyZ/FfB+G2JgbSbE7qAHxTgS1Dz7qbwqV7Sr7yhq/TgIiUB4RMc9/H8Ua9plaLgx11KJgYvSKUO6FLGgQfP3J6PlRM7Foc0bCIsfX+C31ie0N7ygmw4DN2Okw0uI6PuqqYDxN/KcqvV+WGHP4rtvpZVk/KVSLzdZL+pi+vlRcWpk8cBVWDzjaV3FMHoktSLkLhUyIMK1qUuBpW3Y/ThyS/16xbSznhuh5SpwUgr4Zeto5mXDj2lnBCRpcrFjwFnSPKMqk/dEbpMtzi8lA5j5MMQeH86GvDUZr/WCMQiEuR0qZFI6uATq5pkOgQuyLkiYVKTttockzqFx0xuQyvuCwczuMR/bE394xVHPmOP2ddwixj2rmr1+xiCcsZih5/QowsZsg1E2I8hlqLAs6EULHrDQ8bDocHALshTXQwLGJQMhNInAcjswLmNNlXaHVBrsxJUu0LZpSSv82s+TLJeHeQkBOB/TzOfdNUR5tqDMQPo4lNaVSu2VAzCLs6K3KaogaOc9WNBKFOUv6R4f7jKPBxrNVADPXK2JQ1iDYbjM63SZrRiAD6Sw2hnpCrO+brJACi5ckSjASdQTub2uypAyHUaBShxCkCStYPRZaU1UO6+/MeVSRldZxX37SPKcp5+J1bKH2acJOh5EYJlVxd6jihJ4D+NmgA8oVuOUsaR5VjWnwe73arTh4rcOIMyvrfSREmE0ByZ2wvHMnY4CRGcMQDzhIRkjvv9qGUY1pI0giNqnJ0mkMuFQxYin9Mx8lYwBEaQ865nadJkund5yDRQTrQkIbz9NynfxNZiPeksxYsC64iw/RXyKSq/SkDm31bSXwc2gc583miduTxBJhr0jMMRg595rOwYeaC5kD+A86JJ0LnOE/9A+epcQ5UdguWxQZdpGVVnyV18iURF1XbXDeobumPN5sSkbe/mwQGC30KVhFtk7fPN18KDJbkSzZkQxWwTcEX0O1wSPy7BIh9d4uOiTn0fJ1UEEQEFSrTuQigLdhUoGVB7ItbcGkshbLIgciyXFVpmjIsOTfdMcy9SVOWQJItS+nuc4TL6VKVJXU3WZrKGt6klQoakqBSulQLdZgnjmRtmERQGfZtJ6uSVIVo+duxbp7ngdk3acoiSLK5FOxwk7JWNBY2ESpnSLfwcOTOccjBNd9B/0ZvjrfjrPFsQrqyJHt/1l2rIhXVJUBlNGlm5t29RAD7IQkqoL/QyFxEhjb3SIVdLhUsaCCwQFjzgr1USvMZYt9cnWLDVlPpfLKqGPsqV9xgAbgwkA72Z+AtH5aSCJccqAQRyDRyCJdAOAwqNL0TQ2AYTFj1U9IbiLLaIoV64NS+BWkqU3zjSipSJIBKFN/6MnoY/iUk2dHw6aC/4V+Dsjdt+2SKxrQthdq07dMx5lFv/zACMPDt0+By+scgbEppLvwEC2mSVGU0F5zaFNFchwsW0SSpimhucLYporsuGSykS1QV010VbVOQogg1c1v5lWNMPlmtg+0ok718H8aWoSj7gtgbSRXzty5Z3WIaCguocVdHyn03mwr23ey1mQ5djb6HMXYsbh2soV81d6cWxbEn5OXS2FSwMPaUv1VZil6SSVOWY9c3yuHyUmEyCVSmfAzAumhdmYbCHEoRg7zVZYqUWgnEwHZneWwksZMhdSmej15Vi8DTacXgI3UdJTHLYFW6zeS1j5eTp659Ejhx7eMETUWwgYFSIWwiVAwbyWocTzfxq/IwuvkOjp4TKyu1cWES5/Y7xLmNgLPirHBsTJqyBDvHdp5tk4fzsizIsBIqiU8HS/vw8fj9itKYvbW8Ry97bZkG9N4imUVfAW186MofqAwSDJsyLhbYWYrBEZpssfMWxiiETeFOhbIb4bqyWTqDCGzwgIMkqhGESGEoHW50zPaJOLZdMdsYDBk3wGVoxD0d+WRHr+PwSdoJGnIJey80W/9N3Njj1bBQka5ArLi1fllHmUgtLrcVQIVtv2hUVGxbDLnZtDgq05CBbg9CoTFLYxCexeYgdvPVpLjZWL5KDmZbned3RblG5HdbhEJpXZ5RalDHh4g1BRra5+5smgFAalCHn4YPanTfl9Uw6GqklSVkSoMi3A7ooEP7eYlm6FfHtSYAX3OJrT64fy1wGZKDjdBtNq647WfZDCCdWhVx85MqMHy0MoKlCX1qnmzprPgNUKDmZSqN2OwmUyNx80WnqrR9O2SEt2WDVG03SrWKNjQjqMlu8A75mq/BSg77s6t+t05WE6BSCy3vF1Op2c8mlc1m8lCV7uCuxH1cYLgK0WmGrOyudTNibb5olAT3o4e8EZ0UU3PdXrm2eluisWrX0lhB3tjgm2DCUfzxBE6q1+ZdmWz2ODG/10BbQz2GAaxncx6Kd6EMqz5oQlZXolGLKoZUUGGHjxol+UgPmq/7FE/J28qk4q18GP4AFOwBqalFiWYMqI5ai0MwjG64DJFp6lMO0GmqlP0+U9vsa0wIA9LULU85Rg17GMxDdRIypKtkLl0tLBsRRaVsPmjUg4Kd+pxjzHraGCxNnQIPXEWqSyvzhCinCrzSaGvzIlMk9bWRZi0bkCK6gcSIMLN9dA8JxTUPGP7GWkcgiLgqQpdF1SsCMKHV6ga4iMokzbw80C71G1ZEAKrYWwJzLAixalXtyvDGpP9AOIoJJlsSZHUiUS9Xd3fGuu/pnobqbbCoWueGILayiojXxtOJaRGV1c6yIbLotTzB/JrVgyy53e6yItkYapknHUXtURcFW02kiGSlziJlbJXhAGuaW0yKpbwYG63UXSCMrToY5t3MT/mUaIqndZ2hk7KoH1QLpCBhbMXboFdxezN2b93FoavVbAjG89pcML3gtdu0WMo2q7vDkEeptEAYvW4nW//u9GHOAqiVHojig1k4xtBm7L9GUDTJqAZVH8UPKSoS6UWWpDUqyZ8/6PN1n6Oo2cYXCNH+sLYgraGe5GAE9rPRAIr8Q0LUujboL5LFr+9p1CXwWXFnVGB9JTq9+CBYIajOAvRemfaIkUHlhmoshdnzUX3O5mNML61RVaAZw0ePr2T7noxu/xmiM46TuLh6RuUuYaatgLbW+DNFysrlyGLXL3AsqtkAYL9HU7g7af0eZbo1IJ4u+uRhxF2tVgFSkK5Km/SDVEyxv8Glx1Zsqm2cVgn7fQ59huizo9l2OHg9zfsbWvqRzDL5zgZrbP5FdXDHR0VsV9/KarY1jcoio6DDEhSjYmFEheVH0KEa17+UzostnnRthB6+6lSWT+QOuWOvg/Hnd9V1rHzMO0YdT6qw8Bq1Rmfdu9WRvb+1N/BQHHhyGVDa9DAzJ7p0zpnKzXzVqK06ns2z6BPjqa98D1hnDbtHhGEFxePQvIZDqo2x4KPeMMeOJiJyXEzmY6oQHM1rGvDlVJ15zE+twmoCc18pzcZc0Cl5iNsIKLI3krt5QhA0uUnaHga4YELZGxnepIzQH03tmEXFLHyMKctoJpnFx4jaWplkRCPYNbEIihr9hD7DaAaY3E/I78BBcXb6x+I4VbjLNajo7ReN+vLNHzQj+zlYUfDpMkBX8xNnYaJzucVbVWje4WOw0tJDW4DC+se4OHGlS0iovMxXjarc1ShDvhhTa+hm9O4OEGCSrSHXTKXUl4U0MyooXTc1U119InLrUmOaiX+VSG8jzQtGSoV2O6U2O/35Y/19KAA3lbHDDAS8kaO3kulRHZWS8pUnoo4sxZLxxN20YkSU8lGXcTEVYu4wE8nvhuiNZHhnRKWgvCAoplk3Pgdzx3La3GVFlp5b+QTGZO57LD9F3s4g3PoXFfq0N0fNxUPtB/xnXZTJPfpYbFBW0a9vjj7tce4tav46QyROu2fxBvPMEX26Y2Da0Vzmd0X3roQgUUfSJfej6zrZJHVyXNbpXbKucfIa4UaU3z9/9nuS7Wn3/wVtLvOrfb3b11hlPCbOuIUp8iCFrvw3R5LMb652tN5jqIDFTLEK6Co/2adkp7mV+yLJxMGrigV56eIdwt+buqzxf9H9j57Tb0Vuyag1X/9Ax2e03dFwuqv8JnlEPrLdVugDuk/WP/D3x5TOqVRMzBXBm/3NWZrcl8m2ankM+fGfGMOb7fd/+/8E2H6E438EAA== - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.Designer.cs b/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.Designer.cs deleted file mode 100644 index 1c4842ba..00000000 --- a/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealPK : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealPK)); - - string IMigrationMetadata.Id - { - get { return "201806102139287_ChangingMealPK"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.cs b/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.cs deleted file mode 100644 index f6856f2d..00000000 --- a/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealPK : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.MealToItems", "MealId", "dbo.Meals"); - DropForeignKey("dbo.MealToPeriods", "MealId", "dbo.Meals"); - - RenameColumn("dbo.Meals", "MealId", "Id"); - - AddForeignKey("dbo.MealToItems", "MealId", "dbo.Meals", "Id", cascadeDelete: true); - AddForeignKey("dbo.MealToPeriods", "MealId", "dbo.Meals", "Id", cascadeDelete: true); - } - - public override void Down() - { - DropForeignKey("dbo.MealToPeriods", "MealId", "dbo.Meals"); - DropForeignKey("dbo.MealToItems", "MealId", "dbo.Meals"); - - RenameColumn("dbo.Meals", "Id", "MealId"); - - AddForeignKey("dbo.MealToPeriods", "MealId", "dbo.Meals", "MealId", cascadeDelete: true); - AddForeignKey("dbo.MealToItems", "MealId", "dbo.Meals", "MealId", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.resx b/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.resx deleted file mode 100644 index 2ff8134a..00000000 --- a/src/Dsp.Data/Migrations/201806102139287_ChangingMealPK.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.Designer.cs b/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.Designer.cs deleted file mode 100644 index 19bdd48e..00000000 --- a/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealPeriodPK : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealPeriodPK)); - - string IMigrationMetadata.Id - { - get { return "201806102150165_ChangingMealPeriodPK"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.cs b/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.cs deleted file mode 100644 index 07ad2f93..00000000 --- a/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealPeriodPK : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.MealToPeriods", "MealPeriodId", "dbo.MealPeriods"); - - RenameColumn("dbo.MealPeriods", "MealPeriodId", "Id"); - - AddForeignKey("dbo.MealToPeriods", "MealPeriodId", "dbo.MealPeriods", "Id", cascadeDelete: true); - } - - public override void Down() - { - AddColumn("dbo.MealPeriods", "MealPeriodId", c => c.Int(nullable: false, identity: true)); - - RenameColumn("dbo.MealPeriods", "Id", "MealPeriodId"); - - AddForeignKey("dbo.MealToPeriods", "MealPeriodId", "dbo.MealPeriods", "MealPeriodId", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.resx b/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.resx deleted file mode 100644 index 77815d89..00000000 --- a/src/Dsp.Data/Migrations/201806102150165_ChangingMealPeriodPK.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.Designer.cs b/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.Designer.cs deleted file mode 100644 index 4adc82f6..00000000 --- a/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealPlatePK : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealPlatePK)); - - string IMigrationMetadata.Id - { - get { return "201806102156141_ChangingMealPlatePK"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.cs b/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.cs deleted file mode 100644 index 0de9cf73..00000000 --- a/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealPlatePK : DbMigration - { - public override void Up() - { - RenameColumn("dbo.MealPlates", "MealPlateId", "Id"); - } - - public override void Down() - { - RenameColumn("dbo.MealPlates", "Id", "MealPlateId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.resx b/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.resx deleted file mode 100644 index 66ab316b..00000000 --- a/src/Dsp.Data/Migrations/201806102156141_ChangingMealPlatePK.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.Designer.cs b/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.Designer.cs deleted file mode 100644 index 40ea08df..00000000 --- a/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealVotePK : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealVotePK)); - - string IMigrationMetadata.Id - { - get { return "201806102158017_ChangingMealVotePK"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.cs b/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.cs deleted file mode 100644 index f3af3d91..00000000 --- a/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealVotePK : DbMigration - { - public override void Up() - { - RenameColumn("dbo.MealVotes", "MealVoteId", "Id"); - } - - public override void Down() - { - RenameColumn("dbo.MealVotes", "Id", "MealVoteId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.resx b/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.resx deleted file mode 100644 index b68b1030..00000000 --- a/src/Dsp.Data/Migrations/201806102158017_ChangingMealVotePK.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.Designer.cs b/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.Designer.cs deleted file mode 100644 index aec8ea63..00000000 --- a/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealToItemPK : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealToItemPK)); - - string IMigrationMetadata.Id - { - get { return "201806102202043_ChangingMealToItemPK"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.cs b/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.cs deleted file mode 100644 index d788d994..00000000 --- a/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealToItemPK : DbMigration - { - public override void Up() - { - RenameColumn("dbo.MealToItems", "MealToItemId", "Id"); - } - - public override void Down() - { - RenameColumn("dbo.MealToItems", "Id", "MealToItemId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.resx b/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.resx deleted file mode 100644 index 897ab20f..00000000 --- a/src/Dsp.Data/Migrations/201806102202043_ChangingMealToItemPK.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.Designer.cs b/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.Designer.cs deleted file mode 100644 index 1b6ff546..00000000 --- a/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealToPeriodPK : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealToPeriodPK)); - - string IMigrationMetadata.Id - { - get { return "201806102205176_ChangingMealToPeriodPK"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.cs b/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.cs deleted file mode 100644 index 2ac6aa13..00000000 --- a/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealToPeriodPK : DbMigration - { - public override void Up() - { - RenameColumn("dbo.MealToPeriods", "MealToPeriodId", "Id"); - } - - public override void Down() - { - RenameColumn("dbo.MealToPeriods", "Id", "MealToPeriodId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.resx b/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.resx deleted file mode 100644 index eb80c166..00000000 --- a/src/Dsp.Data/Migrations/201806102205176_ChangingMealToPeriodPK.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19W3McO5LeuyP8HxR6stezoqTxmdg9Ie0GrxJjpUOOKJ6Zt45SN0jWqLqqp6qaktbhX+YH/yT/BQOoGy6JO+rSHMXE6DQLiURm4kPilgD+3//5v2/+/fs2e/aIyiot8rfPX714+fwZytfFJs3v3z7f13f//C/P//3f/ut/eXO+2X5/9ntH90dCh3Pm1dvnD3W9+/XoqFo/oG1Svdim67Koirv6xbrYHiWb4uj1y5f/evTq1RHCLJ5jXs+evfm0z+t0i+gf+M/TIl+jXb1Pso/FBmVV+x2n3FCuz35LtqjaJWv09vlZtXtxltTJ82fHWZrg8m9Qdvf8WZLnRZ3UWLpfbyt0U5dFfn+zwx+S7POPHcJ0d0lWoVbqXwdyWwVeviYKHA0ZO1brfVUXW0eGr/7YWuRIzO5l1+e9xbDNzrFt6x9Ea2q3t8+PN5sSVdXzZ2JZv55mJaEbrPqCZk5R9aLN9IdnXdIf+urHKCH/+8Oz031W70v0Nkf7ukyyPzy73n/J0vV/oB+fi68of5vvs4wVDQuH07gP+NN1WexQWf/4hO54gS83z58d8dmPxPx9bjlro9llXv/x9fNnv2FRki8Z6nHAWOGmLkr0DuWoTGq0uU7qGpW4Gi83iFpSEkIoEuOtNJen50HydhwweHHre/7sY/L9A8rv64e3z1/j5naRfkeb7kPL9DZPcVvFeepyj5wLbW31SlPwq5d2JVsV9Hr0gk5pdSkL+SVGGTcYNdq6ilDGdVHVSXaK6cNgdVpgR1vGN8lvyWN6TxuPUOBHtP2CyufPPqGMJlcP6a5x0S+apFWLBYTd0UVZbD8VWZ9tSFt9Tsp7VGO5CwXBTbEv14Jgb44G16d1iJ2ULv6wyTOLO/Txg1M6wIu0rGryM0L7dgT4h8RYsiXCHQu+TnPBwGavsbfolgylZmhzj06zBOjh9DnPv+/QGlfuuzLZ7GmtOzI4Se9PysIx081DWtY36X/q6gf/jOH5S0Swe9XXCm6j6HO6tULQ7W7jl/n4EXuCEjeYh9EVPN8maabrdn75U6xS8HD8Li23qK/rkwI74SR3hyvG6bei3LxPqvENdIPW+xJ7K9zStrvRS7t+KHL0277pR6YrK1rVfP5WXCRr7PfPc5IrmN+HYv212Nfn+Ya0ndt67dwOOwZRxDler/E44QKDGW3oICjM75IhvqGbsW1/ppKVQytm4BQ6uuoGT8rRVTf8spWt6RzqB/3Q70Na1xlqCSEJeQLVIFCggkaCOllPH8hgpyz2O60lOTJJUiZVZU2WxNWeNG91nt8VmPPGKCZDCUvaE2iFHai85L1J7/OruzuzVQdCWNouXStsT+Qsa5akW72QLYUsHU1QitWkeshD2tznBE8RDFIxdJBsfbJGwoHGS84L7FBvd1mRbEwWFGhheRkSrcwsnavcw4j3Bm1RVSt8VJe46ujz+0YCTng1leStNKSuLusyX6dkLvYJ7Yqy1lpeIpUML1Co7C6SuZr9Q7LPN+UP0kwNnlaklLsFjkAlsEDlLK/QOcXrxlTywp2dtbzFfZrr5WwpZPloglKuJtVVno/J34qy+lyYV4BESkk+nkAlp0DlLC9Ksmsson48xVLJcvaJShkHCh/5fi8sxGuJQOlomk64hsBdNsKgWdLQiNcQrAA3CqUrhnsCkavrZOZOWkvydJIx2WSVPTkaV5MyKzugmEw6ZFAgWbInRONszqJKqWTvUaYdlwqEskHZdKVFOSJXkxJW2jpvCSTZ6HeVTE2iuyyFfszZEgCyFOoRZ5PoKssNKh/TNTp/xL378RblG/x//aBClUOSFiZUia+g9tTnPS7ESR0xg0obns6gjEAcoIutCgbJbQT2kLMgrtk8tuPpZDmZZKWcLI2znPsvWzzOQhsKMr2oIqksLU+hFFggc5X5L0X59arckMW+rRHLALEkt0Sjklwm9Jb9ukwLshp7+pDk93o3rM6j1kQgNSok0nvrZaeJVnaztAHyNcMlF6sLOdRyc4RGHXhqSB/r7dphJW2YNLhs3cr5f27jAmUNZgrdpvSKiNEs4GCRQCgPEkNjYjlVGhIDJK4jYvN8134lWbHgDS02BzYk3wb0s+EAZZFyQptMt1rouME+S+zDmLve6u2vqsJjQPV4iGnKHCnoDxgKqSNTkPmtkRhltfNbGhlF12Y/07BZDFf4LihdvQBu8l86MZvASK0NCclKlhEk0PQALFW4lx2g4+Fqh8w//S1QFrVRcCgVwlOCTSiXKMOlqx3Kq6v8tOqjFIagCUdWZ3sUhxFVDE8Ddxmqw8MxWG4YAESiaEKSpQHnfrPd6S5xm0rvUkBBl+zrJKZSHW9PjS4Q2nxJ1l9Hj0q6rE6TfI2yCNE6rezE4cFt2zL2L4b5e6U82eljJNRdmXbUAo5EuC4MHNLYiibaXy3lUMpKziQIraGFBzS6DK7Dm645xIyd0U3P5AibqNNbtyGtZpobAhPLqa51eI/OnlIMkPUOFe3X1fZs0rUGlUlgiwJ04QNHj+Hiz0EiUFaMSfnntM5mONRwhqp1me6a04Aj9+K3pS6o3PNUVtgk3r4nBHuRoFm7frpJp4iNu5cEY9Jgb8EShLuJRlBnV0ESf7oLoKxpFtIMAb/hyANbBARNf+R1Hawz9pqMP9EHlHWCSMxdnAnMeb7x5RTmt/1GViBiNSMwL+AOi50uqO1yzQJZdkPAFbrKzYQRIUxQdlMnZYQ1LJwRgziYz+cyyZv4sTPmxLY3u49pnm73Wz7yJmR0yTPsok5COH5C63Kf1qTBnBTFV/3YLvYGjelcjdeegugdtBsP0U5cDKUozlyABBphQ85dAOcRxji+oBRefdLBOlQdJcrImb6YngiQtk1Ty9gRBETdKkZffRECKSAlR6GWlSeLF0jaFyCFkvIpaslGDyftSzIHlBpI1UpMHlQqlqwOK9VTGlWyCC21H8kT+LVuzWkg3+ebZVA0FO8zLOJzL+t6IHN5vxW5efMCvBlipMJijjJtyvuYbjDxlvRH2kW5CKtiF2meZFMUdIb/3DlvP15WN/vtFpXtcZGwzTf7mzP0Ayp4YkhPm6iGUXKqvHQmk4ywbeFwtFa1aREioWUsjtNgVB2NY5LUrRPx6D/m6zq8e41JZ9Joh6fRpJMP3b84JZNUdIOnSvVDMsyoJwsUbMo3LK2OtImC3domrX2m6f7zRmdvJy1+qR2i8zF9o0NuiUABaZpOvIbAVbgB2qBwQ3JnA1Y8OVVycgBJuIcjqnp4OZJtPk9HSvf2dl3myQL67FysxzjbkIVeKQGPfTwuomsuHfK5R+ys+JYTUSJcVXT8rWLvjQQvE427qWs1+jM7G83Ij/dGtnK1tWse+TleVKIbAUIXmnh5HtZTurieId8svocfu7g6H5eRz2Rbv7HGJ6ZhRZweUeyyNZ2m280eJvE6KlC6JlEnXEsRtKhFeTje6kqyzNJSaMk+jaTPeHjzESr63M3NfgxqA2nNCFQAvVNz6w6qKo7wEpKVSMj0XEC6fGAXIgpvf35HdLms87XHTgLvdskymKp9WjqEEY7sSi3rvkToA3pEw75z06SY797ttvXusZqDNIrTtZl4S42ul18pBpuKK7K8mm2zeerWXps8szTUDqlHZlJiMkvSkHCbGG2nE3WUM8SuU8jdrkhzxZ6Af/s1tg23O6MULQO+WMo6IKDNDd/B1SZCsQpimnz7lkgwziaBTRiFcmtAJ5q1OxlM6OJQulw/w0OBsuwOBMR5QuUy//s+LVNUaUqK8o5KE8HODBM6CDQJjj7rsjr/jtb7On3smfpuiGJWGX0rIZTRWVrtsuQHvQ4nzCNfVphXlIvRL6umzQTvGif5CfqEtsVjuEyGGeHoN6vr4tOcfL44xVJ2CtZLmJVRrpYEkIqmqGVqkoMmfNyllU7efsg4i8MX3lFx9f26Z1hG7AZije+u0zzHjQyOijb1DrgCE3VMtaHgwW4zn7fRra54XLUqNTLNdaxxx3uuYanKsR8cverlFkgcqZs/IDlmcQSkYB8P0OU7tKY/TywGLuE02SVr5nW+0FgMXQMmlQO1XPa71GS5xHHaqikwW9k2+bht7zbptzTL5pytjYYszIr5p2qzdj5i/GXZj2SMfhke4kD5XO1jnis0rwnp78VWrAGp24tOmKbb8vUnoiigs/E8vAicaHA9yQiw+LnUMlKDi9ZZ07cE4hwMTKooa0cjtvTQS+YVvsBwfihuDx9+rkk5BnDQw9WzcAeLvBwLx+GnX1m4XznekjBDLjT6rMDV4D4kOCC/4vnag96rKE7wjeJUvM8VmlyKhRI+V7X/8Lqgps/704sAZc28aqY53e95Ha/6YmOWKuzuj91Dmn8n/pc+0GiFSSHPTywCZcXo0ah1uY3A0d4HJyX9nmT72EVZ45B/UNHNNfJ5f8IRKKtbjehf3wle72iMjTYnrouWCsmu7rpqDBbtusBV+uOkLOgRs6mXcy3DEX4Zp/TL/BEPX9oO6rfm8UOlEH98OY4QV3d36TpNsq4xh1sh3oDX/QlYxSBX9VKsX5Qh+zyrY7Ahm3WeYy2dc3lI7+RtAfO5Fj67sfHHuS8hSkhvJzm5ZH1zu5t07df1YWDVe/Hw88GBg0n6TK7jYJLmmQXAtGT8+TGlsUgWAbEdMWZvRQ+H5ZrbhiCZ2pG+/pcxHDmn5tSFu7dQ+7MY3cvDjucwumw/x5hR6guKgcFFD+4zcCDY+eUIJ5gN07DXv0w8jLF9elt1QkJ+nNu7IZFXst3bEcn1sxmN1IyIgS9rFLzBflnd7h6LIZTNOoZV+3A7kUyB7SZR9XK7mAqgWyIZ4ZCS1bPymoanFsyp3TVmdG13JNfPdgeUZQr+GucSoMvqXbavUX5Rosit7HNBqlr1yi3TTnpCRVNr04E3bQEi94cA+8YUwyFoZeQbpne7a1R1b3lNvp9tDyiLVtNC+ryAcylalCsBTrFZKVohlwj2dzyFe3dn2x/bugltn6wT06kRuje/nw3PCITK1Gc4QBXyxDCYHSW8pq8fmGXs6WAp22StnB1NhC7j2uNdEDbnT/QCZdFZbJSXSmN0QH7vKIT1GZYg1/UbYkNwke9a/ZzckLxicSyJCtGA8oKEwf2Ib7v82SqVZc1zioa+rhJl1fA83/jxMUzHTB2Xd2uBujBts/JsLWQBA5u53jueZ2VzzvNaEC3a662gPudkZ9loiTOHsmmv12JqEzr3AaUDEAWIwk5bPxQ5as4EOJ62HjLOc9p6KN/rtDWf/ZBWqbvaGjm4zbB1E/sVT4ubfIYqg9aQ2WTlPT4sTaxTDt6HG5Z+0xU9FjLe3VVxAlJ6Iaco7GxfUh4xjjlEiC1UP1T+qLqJkj3xw8bqC7H/CiIg7F9FGX8DSSUtkGxxwiLi+Un/Y5OzeADvZh2tqVkP6tqm4XoF+2V1vNuVMW4R6sNs1+t9WUaI/6U2nGaYOqLvivC8D9+a43sq+eEzk0+zlrxDpdZZdV69O2kr+yueQumyBLIwr1WQ6YNHtCyTcZ6pKC3aayra55x1jG9wdMS8hD78ttzpLvUjbf7qzjb8ODQkeHSHZDEAGRoB2KCZZGVrZmmcT3Z2KIH9ZZe6AkSUEuWRnEQR7mkaWZ39DEmcx8uwzdDZ0di34UNfNLbzMtbHZKzx3+E6HP3S6EDZPrzQ/5ei/EojIU6Lrfv9B2LuWdqCKIRPk4B4TNUy+rJneAKqH7PFiKBG33VHwaKdRQvoF8VqhjpHiUbVQ8qErt1kzwGUuU9dQdLKqZKcAElQT8mI6+Uk5vUOQW5h4aPyz2mdHX7v6nxAucKYmbJbH9phjOYq9uyaFj2CB9S6PrPPc3d212ValBj+pw9Jfq8IBx5MIFFDphSINBYVKZ1XUuhGpp3oAi0kOEeiEZunizPQ403h6cp5JvM6dl6WIDcvszq4QaCkywyjysZ8U7+foqhFraNT+QWV21N5HFcnqHchHZWVF1QRq4eDyhxjjV+9nLl6NGsjtr9fDPSIy/CFUbzgE1weijM6idM+ld2+sUWHAZ0dVHiCnWUxL+BZSYJALzI63I7fNqTxqXX7ynG3ltDY5cNjdbeJg96dtFGS5nkDRKjuJ0Hqsbp450mPuns3C+zr84K83RL8XAQP94/UqTvM2sPaoLIr17ZYL0ifFXnSLLi5YLnL9fM8C1DWBbkgK0kjBDxfpGVlipkaaS32Q2IseZxorfNtkmaaUuPEeHPR/yOX1VwQHhh49gmtUfpoFehhHyHi7QkHiINucEhedZ6C835QutSDg0RB3TcrtYu3G/L99HcQwJJ9FRy/ZfJy4zibd0WSBTbME3Sf5lWE/e7zfAOyibFn9nqkPbOuYV7mFc6/bhv65GLEeoYV86Hv9iVfhu3P8Mt1aPuAr3knKavBvfBXvIuJkoeUKVynY4x3juXGxbGr1td7ufHWnk6PIZAsP533Yvyundf6ZfQQH67phTdQ6f0FZRP2An47NHYBPs0yz2EbUrLXYZsu41RNgBYYIwb9BpcXYSBwRi5k72blI89NToqN7qZez0LUx/M6U4OtrU9d0V9cYxPTpM5QIgiaKjCCOje32aK4OSB7NbsDjeKO0Z5iH+vuIByKc7FPUTYEP5xn2+ThvCwLcpu6I9bZrPPgnRTuhfUuY6Pbu326cfbSx7sd1sGEqj/FAPD7otLFJVoO0ea49EA6KdJieVRzfURVldzrVy5jlHNbaRcPo1RLu9KP6cOGJmQgcluvg8cmN+jve5SvRWkMTSXL/rqNvaZrfyBr/VBkSUn873FefXNd/JOyz3NAS5TC66AWxGSqrp4pnJ4SqYjhAn0ww/PPe9LLsxw9X/Okhol19sR2sNBJD5/wkrVcNWLyZ73UZPKZRw2tc0hCX5sm6QdKg/wyoU4DgDrsBKdsHG+X0TGY22mwzSPAbdi3sniOA/+53enHP6OsUTVY+pjm6Xa/bTjHcC1YcG+GyjbYN6dx3Id0aNTC1ViLvut5OMjPZTIowdDaacJmCHsslelwd+HOhOExtz9hRAkdiexm8Sq8BMErf/EHIhdFufW5U17a0rqiy+zDPmf4hhY39dW3WEy6MrVUjkbX0fOEruMU9zGWr5OxGm1BXimCkwlxLgtwKuHOZCYnEmP/YKZjt8ebTdq4iKmO3AsCXO1QlAiK06yoUAxG3vEERudjHOK4O0zNkAb2rO4TOyupOXKl3AyVSXKW1FV25R6T0GRXTF+mElui0zl4mTiWc2fn2Z4+fmAxt6vnl4ACPL7DWtJSB4+X1V/SPB8Ger7RSzEvX7GJPB4nNGS2wOObek+q3xgU/Mru6U7H0u0Ckscp2xRyPY698bCjRFX1apYBDyn59ej7XafUl0yOY+ZdGSgIM0b4fFHVSRa+LXVKIuPL6W30Pr1/IE680MF+LPSt65ukvlnjHijMeO92SWDs8nuUlMdfin3NdGjTG4RcT0P6LfQJVTs8YtKBN07Uk1DiJuz+TMvF15DdD81IWbNXMtJ6jvtA37CmA80JQkfL7rFbQua5R8i+cVzOaxKLi+aKsS5pbI3+kz9NW1TPFO3gvN8yYD5D9yVCH9Ajwp3UZXWRJfdVbxKnw5oDo3BQ48raoDL7gSuXhRVfQ82Z9y7EFJv29yTb458vpbrkKD+meVH2xK8MxANbOQCFo7x+OOtJ/6gnPcVo6mn/p572JOkpf5EruKlKTfXiIRRddWscVUj9dpz+B8tyjpr+rci7+xXsKhwPhdJHZFvjzdkc21o/zvbbPLWt+OO7uzRL6cDZrvaPN49pxaDVCgLHVVWsU1qhfawavR2inZGgSjDveb55xl0j0ROuhFi64QYL7HNx9abECWEnQ6wq9jtX+RnKUI2eHdMTW+ScQrVONrKnxUpsrAXqO/lBoDZRlOifpIJwD4hK0smQSQU5S5akeS13l2m+TndJZjCJkA/saMGHgI76EsSUM7RDOekFDcrbFK18h+ioL0WoBZN13hwxwNLj7fQB9/Ar/D29z5tLJVX1K1FCiKNEEwFOFghAHCUaaEZCntI2E0BPaQabsmnmecFHx0j0lwF7DKESek3nOR38WJlU6BsTc4BNpoIcoLpN0fA0ZkrADU1ldZ7fFdhm5HdTVdrK1mRUAtLF9TgU5+7pXr54IQ+n/IFnIdxUQLSoFhtRxLzzgvS6eX7XumOW6ZWQvG5frJ7OSwLCzdtVq601FWjVJrGR4Lp/s34+hL4ri/3OHqASuRKflHJKeMqizYtOpammAqfSIDYC0MxLgGb3tLRF3UuvTC8DkuK71qBYnwt4mh8fkYKVpkWjYAvryc28cLzB44mqJk8u9LKoAQkRQ5Ds6KyGeAb2WmiNBCmdnjb12uUPBJfOHuFiTOHrsqSqVvRfVH1OvqJc7eskUtDXkfSp3JwsEYRFkt6oNpJ7UxrGysOQfKE+TmmIQAmmReBFmukWcATCBaGvkUeFPZI6PvQ4m8wAPM4Gy4cdLiIpazrjb9uNEngyKQS9gWoi/AFiqRA4EvrUhrGp/yF3IAjVhoghxgRY/Jj8rShX9N9uJK7ZtAOIwY07QjHVvh0kEwBGjmKsHTyNfWzwQHOGbuVp7BEow7SukQpi5RkbyqU5xlYqFRTH94u8WeZyi7wZDsQrDnMrm9kJSO0y8x0JjLBcc0xTtBaaZc7sOV+ZfdLca/CuTDZ7nJLfm3ptdZYxVmfkQiAPOGYvbNZ3DsQp7WIjzPn3HVrXaNMxgY6ZTQTALihv9QElGx3sREIIbB3NRA5REgmAZpM0EjRVNplgLVqlu03RhMP8gLutrOB2Wy0MbLfVrFDj7DEl0Di9Fw+z3lGb/JpIuKSB3lx+TWWTOTpaD/82+6iuCQVvVjRNwzmAFvR2A5njUA4qYOoxnEZJmwplsod6M7UxoggypWdjhNEsOcPkS/JyvGAANDXYj+3wQCPN4fZAoxyE8/tUFFuj12OJICyS9IlwyIkCoI+kj7zQDFnDboRVbAMBB2kfVvSULpBIYeH6KNmSXF4jkAJsY/s4zhpz+DZO+4Pwab3oN6h8TNfo/BHzPd7iYvWxpoZ8S4KkQkIAoyDl2KDVG3AOFOsNdpCwfo+t6YFqPtsCQS0IqMY0RzgRpGHrzYho2FoHAWgmDpmcBzNEuILU+qjrqU/0SdLNESGrtdMES5BaS9iUP+spv/Ywtk3ItUy6lHP01kHaY4fkKC00AQ7VtrApfNaD9azoVXu2cGOFw57aHoqGBUmY+2yHnLTKTowqyRw25bd5lgGuG1xZV3d3dj6uIx4FWj3zRSBLVHViYInGsCmeujiScQHQypJUs9DDUS2my2ykgSYbu4c0/076A0ozMvo4o0wIO079g+kgbQIEAdoFgW7e0ECNbSbFnlc44GIQSE7A3O6yItnYOD2OPnpfKvKf4WySQdWJgQUY41DAdYm1JQV9Qrui1KzwweRLcXKiWAAieZJxYamw0nSoVNjDRoAmC9qcSLenTgvMD8k+35Q/yGjTYoGEp14KLAWpoKAtlmJcUMImmg6TsDEOxU9+SOs6QydlUT9oD9BB1LE7YIH71KFbWh0nxBNoBZvyT9J7nG12RBX3aW5GEqVajENrpNHOYCnNyNDjjDIh5Dj1D8V1NQf0+mV4QxXz1EsBniDVXMd/dSaaDoawMQ4GjijJrrOkNt8dPVAuBoaDRGCv26aODD/JLBNCTzLAAcAuyajcuMVc1ki7aCxQwrAjL9NOBDpRHgXomuTRUKewyiSoU1jApmySb1bUtXdoNjXU/KEHH5RBhcFJb0lVCqcEJCxeREjqbDURMnUWsQXozDelsg3MBqEC7YIc5PyIVNhmYjfpicNZEUhc+2royPQQFIlVGIS6xBFxKIk1V1+tss9EOFTZwRqIONMywPh7oZ+jiKRLA2IjlAKGJHEKEHKWmRqCnAUOBID9NMsEP55wSTPk+YAH22Ta6bEz6BawKEOe4N2bT6ZDxGrgNXSTwk8QbZ6dEdg+NkhockaBImyJUCGm84DM8+JGJ8jSLsUPcjJBJ9jZ59PH9IaQcaZziJAZDsQnrrp7bqr3KDNGxnPEiwEhJ9TUd8boLDMhAiEbHAoEiSZG90eJlgK5RpiZoMZZYjqIcTofDrR0FyWwRMuBluaKhGl2fp0vSogFMMfrEZYAMMeLEbS5lgLBZV6JYGW66dAafg3CguBreQGCLtPCwLuoqw9s7DY5cv2vO5gVuGy7Y1XRXduhyAHf2DEQT3Zrh0o+PWpHu6fDYC4biNDcwfdzGOwSKMgsXtbFuS7Rp84ESo1xZnGcB+QvCyw6vT/EdMhEogT9Y0c0lXOUhILwR4hGPV2itI3VWnOXOdQhqmwRQYgJneFQWWZnyNDGPl/C8Z4FVBolJ3RqgBkW79Q62fdftmldow3t5c1o4smjA0pgb5gvjwwqWNcJcQVbw8pVtVnnw9dfivLrVbkhJ5+LrX5OLJNCuOqpJuo2AakAOPZULdFIkFSbyAYNfe5AXKpNEkGKKTGJNS5KXD+r7sfpQ5Lfa3ZQjDm1iO1op0auUlgdkHnasfFssqcTsDoesWBusl9E4Sb1yM6od0L75P55ueiOgupoTjsGiudHbxuw1PzHGsFQLi2KJw1K04upwzNLOTaadTZ0AlGU8DUrm0UTa1L/7IhtB1RP7puXieQIGI7mlcNxO/cagjgHMq4iSBliryPIBcw3dTPpPN16gtIqh7JYpRjF2ePNYhgbBXaLG5FaGmIGLAYMShcFSXsQjgc7PdAmgtacYDpc+NgN+bS5RoPVosZwViaYAXrew7hZYXia7Cu0uiAX7iWp9lVliRJ87YQQTfXIiSQQgMwheawHTlRmmQCCSgvYlE0zz4a7QejVWZHTFDX0IGIIferKHgmCoGAACrvEkTCos88EMNRZwab4If9scDzfJmlGw0LoLzUURUIIhj3NRCiUZAIQSFNGgp/KJjZ13+cNxKDKBhFkmCLAbP1QZElZPaS7P+9RRVJWx3n1Tfv4vDoPGHQmk08VfqYRFIrvGMgbqrHC0cz2swEPwCY0RM1sr6iCTYvv491u1cljBW4ugwHZmHZ6UPMCGhC9U7a++LAGLecIHcwjHpxBS8USaFoY0/iqqnJ01HIuA6CHDNPjGhB2Ge5abUVHLA2M4mFcbbXIwk3vtgeJrB03k2WprpsVUY9vdWMcx3cDxpvbewPGOkz/TacKWBZcg4bFB10mA6anPOOhk9I4Jhkfz0rTOcInxhEQC1NFk2quyeMwznScQTIZD2AayUq7oJG31pwLmlUC5lv21PIc56l/4Dw1zoHKTh76pMjZF/IdfccQWO+rutgmeV7UlMWvtxU6zejRrert87rcI6lREL43qG45Hm82JSLvAD5/1iQxoGrTgP0znsct3U6R83dbcobs8rvYEDPo9WxrxnqGdoyGl3CV3NjHcm1YKhnZZae1rGLRdMk2bLpLrhWMukuiDaxu0BY3ELjuujSzPOzLooA8zMOcdpxUTOzyk0cMlSyapxwNbLBfSMpaBZoh1cioeeAEamQkwTK7rn0Jj8UY+DVXV0F8ukutDAyaa7zk7N3dZEYG1xna3CN1NTPpFsKQi59kHuS7XWadZfm7mIzNCLwiCGpT4G06duyFK1yU3IX7Tuwduc4z9RRmafk3oEFBxWeiDSzFxz1ljuKrmKaWwD/KCDQI/j1Da5Xbx9B0Krfvipna/vC6ENRH9w/0WLBpLmCGuTS3GFswae6zh5k0F4NbMOmuxYfZdDfKWzBSsbCUQt158k8s2NSRlpU1o+GqW0VVsRcRm5wse+Us4GPZG1vtPY/B4Tj5SJNrNDNjbxgAeLEH+21YqVwfcxeGgY0cZC5zkyO6bZlqudmzEeOSNUzFsF/HIlI77vZ8+QBEDWs+xs+NvQ1n8+ixDxgCxo59pI2BCRvyJrNhI4mMziDNkrx+wLNkuE7amDgDmzbuRM7eRm7YZFc1MiYgxcSmLOHx9Hm2TR5oKu5dzU1e3BQCm768c2TPdljd0jIelnwcJN7ZcufWlJwKMDN2YchuzGj5sjsY9uyVvltc6RZYMms4Yk+8YhZYGDKuM2ZoxIUlKVS5J+3XLHt9+oUYaXlKw6VbS2S4MBKLq5a8ohZGoAP+Fbd0IltBJlIrINFCdugWVzSGkPkAlpDXfeIYhK7Gd0Iq7MHSGNRgSJXWaKFtsgjLSmWQaGYYLLs6z+8KLDf53S6AKcyiy2PQTZNVaTZN5bsVMCG62jf4bBodQGrQUc6htF0/nzHZDeA5obnocoSVtWRKg2JSBqWtulVqk6lkjpNbql/o0loJfDdHpY/4bk6YdcSnbkBuzIJdsHG65e0VJ6xsHpBOrRJEDpmIWXnXGAjkpjVRFNyQ9dcVv6wP4Eam0tS0RAziplsY1mFG5gQZhBM+pkXa7QWtPRoaKx0oaQRbNHxUlmiFDrbDsPex6uWTLQFQqXWQiSFrcFsyGosA3NToiGAQugGz4rZh4DkDRKcZ8QPkkFm6DSbd5AFiBdhE2myKCZZOTi1WWiKrym1oIyGlZaY0StTexuBVYUKbHsLgW107nGkdbF/uuzLZ7HFifq9pTRpqC9WkTBHMJfMEbAbO9D2M1W23rvoNXdlEEo1aCZEUMke786sxhcQFMEAvbzwTtDbVGOBWPjcMC35bhSt/W42ueo85Te1LNBYQ1tS+Y2OYBgFDqIBudgORaepRpobsIYQx6IABMBzRM/RVIEioQQhPaVG7XIYIaOH5AcbRWtvDSCS0QwcZLl2tAEsGew0an6IxAccBUFwMUokHj1Y2DSyAZ9Xg6uOfVvOHAf8qmsmOIcqronU01rB5AwxWy/AOmL+9DE94cYxhfaNbVAxQMhtU9yqVVm3Fy1TB5lQ8KiVbU9Q14mIdXc5XL0jBhDaLbAy9ftXOct9BYjr6ylS7E2ZYsgOojJtrhuU6600664W6mH6dLbtqdzE2JssMhHZK9fTh9hlYTbMQzpZNwoKu7u6MwOnp7FTqyMON03Oa1jZtrKbaKA2BWQdKF2aGhgXkfKXY0oj6a9dlIDIbRbRrMi4WmXI1hi2VLB3f7rIi2RjQwZPaqcTkCLcPy2zshfC2XCkwWWkgkdKokpAhyDwiL8A6kiaxTCSGWistJBAaleLpg+wjsILWLQQtolknresMnZRF/aDaOQAJzSpx9GHW4VmNuHzRFdgG0auN0RCYJad0Yco3LLR9USdvLP35rRiNHQRCozI8fZBdBFaTbCh1RTNHI9SmGYjMuvS0YSYZ2EDmYKSOYIkko+VV/ZEKyBIikU4FgRbcbWxOXmgtIbJRWKIXO4op2lgk4XAHbBGQVq8RlEVlH5v4KSVPpbEUXAORY7CUSGZX7Qb72ONnYqMQPK44aMJWkej02ojkKruAzcHMbZLm1ZfaniQzGKahslSEEkcySsNLYZJW9pidkMYcAo1V36E0hVMPNKER2pdtdGEvEJ1JDZ4cxgZ/Xs5oGYHl+ENY/gyeEiEcmbF6WeognHCMoB03TvpoNmk3yav3KNOtTvJ0ZmVY8jCzcJxG3b1uS2wjC5SmaNKNglOyINUbDtOorNh65NItBFZsOzqorNtwHGHeYr/vqM9g1Mx+z9HaWAvYbeQlMe81aultFTbvM7qacL4dRrZmWGkUO7UqYt1mqiIPvD/LnQfX7tGq2OqNNw7oLLHmBrFoyJrCJv2h+JVmUVcm0lSwSAvihTmnrwOLxAsyCHd9QDSQcFzVIGHJzHXLUIeBhGU0nU34N+J1ZhEozQoJz88HGQd+yt7aX3kYCHiAHjCO6Zl6ThnNQ/WMIuylEhrLaN6Xh5gNSsSzjPIZdJ2h7N5Oh1U1vp4Oac7eeGFjT+Or55pCBgtExJ+LdX2s6mRNW1AuxHjga886A5qfh4YV1j4QDSlttTpi97Czmv0YcLS3pbsVHexnC8T5TNb2XYALVnayhqdwoa5R/RiuT0erfvl25E5FLN/C6Zmy2Ctr4QDdLTivBxSlsbKgi80iWUlvlzEsYfRf+gz2qhl9mbu15nNm8kuPUOiz/jlITjX1g5DcQjd/O5Yu4ln5niPDj5M/2CbgK4SAWcyvFXKaaN8rtFPGzA8wDqNDsGmkF/EAs+hfzeNUUL6bx4jP3mGmsYbyuTuRVZSlGOja9O5KM2BRRkOuWVJR5wIXasBr0HRLNhr+0EQcuL0tpiH5J8D0VtQ8F6ZSEX4wTKHfznCBivGdLyVfZdWEGQ94eEpvQdNLVSp1NW9VwTpzt9DZmVTzxNTEeOSENyJS+RKSDjvQW0hxUAk9YeRcR2E2lN/T0VvR8P6OSlv1CzywvhbL2TrmxkY+WhfD+Q/Lfkb55ou5M4BefYne40CPtUR1n+T9GMKufx+kT3tzhLmjbdJ+eHOESdZoV++T7GOxQVnVJXxMdrs0v6+GnO2XZze7ZE1Gqf988/zZ922WV2+fP9T17tejo4qyrl5s03VZVMVd/WJdbI+STXH0+uXLfz169epo2/A4WnMV80aQti+pLsrkHgmpuGgs6UVaVvVZUidfEnKp7OlmK5GJr6Hw1usN3pXWgFB31ybJQNpGl4P8bi+gqXYviDD9myhC5sF8F1gjstJAlUNMrStz4rw36wQDont/hpeUPDhzWmT7bS59FnGp5nXbvjnNMuq+2XNpLj9leUDXoVro9ApU6ZUHp9cgp9cunE5Tcns0y6X5Ys+BzGAFw7Sf7HlcF1VNHgnaCIzY7w46Ffu8LkW1uo8ynzdHAnzFxnEktQ7BV4nNzaoxqi5UsWiI8EEFi3aoyqgyZXizoa6M/OQZMZ/teX1IIFbDVwfAkacjOKTJb0no8jfLNqJ1hq8Okgy3cojshCR7nuffd2hdo013m1LzcBfLGqawL+EkvT8pC5Hr8NXBkg9pWd+k/ym6kOGzQ8MvEXY8myuhbpnPbli73W0gfkKSg9t+xI23vE7qB8FxM98darm5Mp6rVugWeSMPPIS4S8stEjEipDlgGiP2W1Fu3ieVoCmf4oAStN6ThXfcwrY7ASl8koOU7AMenJDqlz0s+SksClM4DEG+FRfJGrv08zz5konc5VQHtBfrr8W+xkN73L+g23otIF5O9uANyCymObSl9RqPdS4wRNGG9u1Ck5KT3QaMcj8zfF3MEAK6BsNrQCEz8hhc2DCxHWi4dSJDySIfPmWsOcPs1R9c7UHVPVU1dw/wipMwxxFHe1eRNHpjvttzk/2E61jUb1QwJ+SOtbfA2+Ju4OILPh2HER0N6GMcR/30zKU04O+/2nMCvZ6Hw7vaoby6yk8roSNlv9tzO9sjgNfw1VG/02K7I09LQ2oyaX5c8eTnc7pFkrQqGsdSSCyw7GyEJIcRe3PlU/k7xspdKo3ZpVRfzs3iOGgYLaF7edLclPnuzu0Coc2XZP0V5jmk2nO+rE6TfI0yafDKJThL2j+PotCfS/eYA0vVxqc4cOyUhHgKacvqp0J6J98+6bDGQp/TOhNXtZtPDr4eVesy3REvILh7NsFh6F0Kqxr0w7KQ1ew4+qOLbh14IgzOOw7K7Ee3c9aG+mYN2/poH5j1rBFV7nHq5ASRa5IAZ8wluPRHG4gb83kxtT1cRutV1V12j3pWZ51mmknW3W7wdFAcUQ+f3Xjh2pU50Y8OnUeZ5M1J/zNpC1BMs+f6Mc3T7X7LH7ZkWYMEvvy7c2jqAlQna9UlfELrcp/SN1FOiuKr1J9B6YtpYoabOW0cKuEA5rfxp5rMygFqn0eamXMpU0cMgJt6Htt5cT3Jx3SD82zJzh8Scc+muGzx5kkG8GO/O3gn/OdOnGr1H12mbTf77ZbecFtV4sSNSxp3g3HedhzQhH1br2PDjdBAhjeoRGZ8ilMISVmhGzy4qx8SsauUEl35yqNq9rsTHDdpDXSRXMKyIKl6088WlSS/LzLhvFp0kiwgQruE6buDOJ1Tc8Oz7MvY727REs2WKxwuwaY5tOviW06kAfZ3hSSH3ZZvlRxn1n9cTFthn9/zaiwDA4/Woss8nRNe/OKD8qVFmxA+ktcngg/OpxztEXKxQvqPc3axVAi5ipnPC6vnwBAL7ulQ34p3D6zgsoFAYBMdqy8CsOL0ZmfovkToA3pEmYhOJmExgFI/J2gBpCazB4JUGcetGnJUROTSSDLnLPh4tyvSHJjLcQmLAYzqAksLuHS3cXoARp3VdmW74+DamuPuKF3mf9+nJT2Zzi0DDJ+nPAZyWZ1/R+t9nT4icVmCSXDil9Fgbolb99nB8mm1y5If9GoCwfRciot0OCcQ+cl+d+F2vf+SpWuRV/fVaVf7BH1C2+JRlIxPeULDVdMTpTbOZGDh4090uVVmHeOARNy+5DrNc6y2vAnCJbi4K+wzE3hfRUzzOmgiI1VKXAxoVfcYW4CVZPVAKZxNPbwptiKMum+HG5P6Mfl+muyStXQ6kEtYFkgC52eER8D0TJ9dhx7V5ExMcxlyx8BknOH/R9KNXgrjuP6jI5+rfQ0wol8Xg0Xr28atAhYAXl7RC1Z8bEf1c+Aosoekh7CgzX8+xWXTP6nE6Ur3bWnYNF7ibg9NjpU/Mg1s/nGAebwlGxrAlh6X8MRgKb6Y7bc7yDEJO772M8KS8RniW8F+7oLn4uMpTByW7CSoyPLSEfPZkdfvSbaHmLXfF4Me83u9FuDhmXhgx8RgHOiQGTo5F9Pfii9HXArJLn6daII2Jz9E3z58d5f06q6zFCwqm+6w8lBk6frHSVnQV7X55WE2Zc4F4kdyD9U9XVj5rXncjV91kdMdjtbd3aXrNMla9PHH64S0xTRc4zPSNjtVLA+fDSt9fmO7e0jvFEBukybfpuyKJwf/Nrc7hXB96mLQID3SHDgIoFyCBgEKDirLU3L87TGVdjaEJAe/1ub5DyQ4YS7hid05oH0Q2iYMosvvdXuVMu+SB39U5K5xi+vuXJLDrLP1EeL2Nft9jE3NGVGnegLWEnQkuyfm4KxLhlz3nq8UoMN8d9l1vd09FtJWVP91UTBRvSZtCROS3RMmcNa5lw3Ulfou29covyiRVLFsyqIqV/1YuGX1Ngw8K1iVeZwqppCC2u+MnsA/PmRG0ATAxRMosSEya4sLOl3NsvBuddOer6ajTPB+Hj5l6pYsB4OoQkDmnBqEgiUIKtMCJbwPpke35VkB89npGL/Mqf+4IJCQ/dX+VT1PnAw8vC9BVmXX1FWkK3+bPDJ62O+LqS/mzlLfmEHmOlX3ytLmVs64h0xSzCCfNPXELOJ9s4uftBue8XYLMgiLLZj60AONH5Eu9uo+OvT5+5LuOQABAULStNtSC4itihBSFRhJZQ+qWHDo6kQONmETXNYAjne7Ug6BZ7977CKu1/uyVOFqSHVsTnKHyXyet0kd0L0Q3Pv0fi1o4ODTgHS5davd8i2nw9fJY76IEtANfFzCfPvZpK1d3Sn2P/uEKfctn0rLCQhQ6/P7thq3sLTYGA2f7fqifKb6tnnk26LaRTYetW9moTK5mFPEApRuX6F9biXbWZxzN3CV9kbZBId5FnlejZ9n0S/LA2ooQkOg6YHJRaHm8wJvwv2Eqn0mYK/7tjz0XZdpQR7iUb/A7oJFnlsIMk2cjDjlGShRK5PN50kloYxSzxIVTS0lD/6Gz4tFeRoN4DGgHQDqyMCwHyXOXZHNanscZ8XyCqlPPR9jnbLZlfUqEi3AScFbK0DyTwdli+tIkA4HszeMo8Jh8W7prMiVL6RbVFuX3eeuP2VW5apx0K75BYnpT1KgffIpDhwX+cRsjOc5Yz9R2RwihQ6Wuk1L1ih9lN0i+/1JrgAOAPVspgMDj4aqyzxOUz1NcEcisug/Trl0+K5IhLbUfLHn0D2OwXMZvjoF2kh8um8zLvm3bvwyr+pyv276Ep4xSOGyWRjr7i2ch943RK7/krgxKYtp+NcPaZbk9QNWw3viR9uNz7F0ON84Lf4fbpGfdsmeNdp05+41qsinHUhIwQPdR8cBCbQhxCW4XHyR19ISe/vNCS912o5ARbwMCQ5+vtgIp/GaL8tCXMA2Yp/fF3lu24ixURPFw3ghZq76LkvvS8LPs23yQBl8KO596lufX1nnJIdU391Hh+nGbpe174MKcw42wZ7f+0J8pKz5MkbMpNLrFftyLQbutt9cTgRUVXIvXn3efXRb5pIXudyDkeUnEdjvLrtoW3RbC0PE/qNL3/L3PcolO/dfHTCYZX/dCnOH7ttifMTN+qHAolcP6e44r775P3An8vEJNTHzUNaamFUKPYEIHFAxZKd7+VXVXi2tKIMn8irnz3vSqWhLYUkccEn1l2ML2O9LxGenbThCO05hGFVzmbN28Z/bnVCz3TdXjLTPEX5A+X39AIFFIHDmn3w38OcJlohKPKCIB0yGWaD/1DGycaI7G4QKVF5uDvPQl7A8B3pRlFvgHDLz2WVB6oouTIiLjOz3hcI+CtyDYe4L75FAB4a9ysnTRocdbzZpAyag1xfS7Lle7ZC8rN1/dFjrz4oKSYyGr2OuE8/fkIaRYnh7GniFNSsdnwWNkCO34svqL2mei159+DpfHPAyt5lv6j25jxHaJBaS5tt2jrEVjj1kiarqleQ326/OnF6DnF47+cxUfB6h+eK2+gIsvLg97FFUdZLJKzjsdwedSDRAKarVfXRYq0vvH4gfKISKZ7871Nm6vknqmzV2lkK1sQkO+8m7RNhOJh8ctENJefyl2NeMqxP0BClc6mFLnRT6hKod7pakB4OlZG/ewCuwMMUSe+6QA1k8l7De2vFw1ohjVblfUfUpo9Zel3ha5HWS5mQZgSfpS2+/9H9X3Qdi7uQefcQuLKuGfNg6aJtQbatdsqZw3SDaD5N6/ZJUqCF5/uy6vYkTm/RHVaNtW/F/z06zFJGop47gY5Knd3ga+plcRfz2+euXr3BPcJylSUWWnbO758++b7O8+nW9r+pim+R5UdPti7fPH+p69+vRUUVLrF5s03VZVMVd/WJdbI+STXGEef3x6NWrI7TZHonZW7ZWXF7+a8elqjbc/jEDd76P4wH55j/QD7GGO+x8Qnd8Vhlzb47E/G/gnpVkJbK8fZ4SE9NG8w5hBJCAruuEHFPPSWAColI/f/bbPstIwMfb53dJJnsysZQujJcpQjTrr5fYZX1/+/x/0Sy/Prv866rJ9YdndG3g12cvn/1v54KbraKm2PwxKdcPCR4GfUy+NytjBDXOPIcBjIbvq5cc47qUr3hX8H0dm28zwNHw/MWZZTvg0dnVlSU79GFg4lg3/agnQF3WhWpbLPRylF2DhcPaza0VaEexmyozN7KHoRXnYapkXTlWfK/TXAEZWyjvRf9n4Zy6fEHuSXgN0U0CLrNKDBsTnH/f0VdH35XJZp90y7puwkA8QmQ6Se9PysJdji5fSNk3D2lZ36T/KSH1v22T7//d2f0OUdENtw3+s6Y3vLkxIu3ndreJw+z4EY+qSuwuHqIo2a4N6DqEX/7kxRSPRe/Scot6JHxJ3buFa9xGvhXl5n1SxdH3Bq335KQd9gLbXRSO3DpNXH5RTPj5W3GRrHFnc563TwD78/pQrL/iafZ5viH3kNA4k8Cm0TEMFu14vcZjsAsMPLQ5bU5Z+I9GSHcN93gmT9blpJ//8Oyyus3Tv+9xwmdsDeLR1C0LkMx6RMO8pwW+i2k3uvEZ2Qwlu/t8WerB+0O2m2TyohHqVQShoo4CPfAxFS5GHu12SzVuddvkChr5sU8NOg48+5whY5wxBuJBYwo3DB5XVXqfyxfrHCwQqVaeXiZ0EtJfj+04/2jzBRXu6fLbbEFFtzvup1WtG35YsTrboziMqF6nxXaXoTpsIMNywjYkAb3RBKS3xnm4Li5z0Iw1vyvKNSp/xxC8S5WGcmfVBLjHMlbH22M63eeMYaYLhDZfkvXXKBOLy+o0ydcoCxxot7IRF+7p+2QOIbbqp+kxKr63kA87t57wifR/sw3E2piwyGud3MnJCI3uttSvrhi3BdxAJe+MHiywwge6bqa7Bt6zOFjjdWft43SGGy9O1ubvJkY+tle//G6uA8VULnZdkKUy+spI+GgVZ8S1Ecznc5nkFY2BPWO2A73ZtWciuCcIAhbfeHbt/fMB/D6hdblPazLcOCmKr4BHjjrLJds6nxPyyLIHnIfckXYZbaaifZlRV988N8cAaWIsu/kv2wACvY5lnr6mR3Q/H9MN5rAl+3uG4ZLr2OYizZNsBL5n+M9d0NzwsrrZb7eopEYOmex47gG6eQtvR+G1Xg80y+g9Htrh7q6749qtubF5g+YHp6QfQjd4aFc/JEOnGWvNtGE/SrwFBt0mrR37UTfIXaSZ1zyhz+wNvS7zmEuyAT1PIOjGiJezmmbusiLZmByVdbRPs5kaI1zhrPiWE9GCt2SPv1VsjJkiJjDWZHrwQj6thPd/rs1E6T0nn2GbnZd9yF3yt8Jrgkcz+pixz/jUOzqq6OR1GRJnwDGIVbcWJufKXUCoASxPjOnOGbovEfqAHlEWR6gYUx6p2qePg/iAEun9jJDIX5C0KcSSOGQBa7bo/EFDt6K7fIuNwLAbiux2BS7SY7RljdProlmf80Fql9cHUWzeUftN5S5L6KGJy/zv+7QkN4fGPTlBd1YCxq+X1fl3tN7X6SMKWZDAbDIarx3C5Cytdlnyo726I0QnzCk4cnO4rSBgnSbJT9AntG2e0fTnAw+jTK7lU5HRlYCJgz6ZcwRefoI/w+DsKpRHIGJ7i9kd/nWa52l+b9ossXNP2L8mNlsvVrHiQx1MuF36qSi2PoAj+SLu01nUPymxy00+Rh3z+/kKnVTgyD9wMbEz+pg7DMn302SXrJnjihHXK4kCIZNNNr8P+sT8IxoSqCtLOC1w2dIOOqTDvgxftKR8rvYjhigMm9HHW5RvnlAE82yVP3u/3pyyihFhkFRuM5kIWCT7Qz+h+FSg2LwMxO353WVFsnQsMoelfkYe+rTl3UOafycAxoP41GtUvUADztaMqRHZlZqwA+CE2+9JtvdhZw2By3ydEkN/QruifCqOnExuyWGM/vq/4BFeYx60OfnhPD7ucwZhq1Pp6q6rsWCdrossXf84Kck9SFNGsvO8f/Fgfpk/knuE76nNfytqw3LrH196lHF1d5eu0yRrG4aLDgHN8UNCnn77QQ47+R2W7aH/kN5Jt8ta7P7z2QMRNpsn7tUgh8Y2t7vRJmZ9B/qhuE+99ktoxuv2bjKrPbuOGLO3ove9NUiQTNcAXv+Lu/dhtYjMeyLcOdz4lGTXGVlxfRr962ztmhqxa9zB7qnzDhHC1qBRn7DxEqmHIFj6vZgOSp6xJa2UUZe8CdPLGnksUkriLO4uDWhj8nb3WAy7NOYNRScMEUM+EXdknDG/8oiwvqzeZfsa5RclGqsKPhdTVgKtdK+W08i5oKYsCHQAjdkv5sEJTQfZmB3by/Wkp2TpsM3zlhNW3vgtJ444UUI9hTgCf2lixHjOh81pkTl7h+qxoEIPIUcZt5/nGw8+jvfzNhe1eh0K76+GdQ41gS6VjR7PRAuZcJeBvaLSw5xMdq9AMT77k5wVR74D1DiZjXdtCLObPHJYPN1nP6gw915it5LbbGHrp/uSso+wIxy6F+MVJOODJW+AQPUU3Wm31vMJERiyhpzxvKyOd7syNMK538Zar/dlGWFjjho/vDMbtQmMfYz/piDjFe8toyan13ilz3lg3arVXd3EqqRQjyY3ZA1zw+MdVCEN8eouzjafy27biFffu7UX34ghDhbODUaBqYOYwNmiUdxuD6ipvxTlV9p+yCtlnv26yMOn3iAeI1ZfX5y762GyLi4m28rrsi92hm7K0Qd2wwJD3KEahNEgcD7RjnjyqzbDg4c+oWqfuWEvhpe8LtOCPC9y+pDk9169m4JVECxlVk/bdUqKB4gysDhIb95U+Ygn1SVDRQF9FLgvf4jnbuVm7TiCe2EZBVlbZPQP4lp8n5+TGPx0KxaAjwD1CCB/Qg7lrMgT3wtGFrhfekGCtpPUqzWweYMa4+G9wAm+/reIV/Ca83ChR+HWKH2McYuh1XpYSHMcMPhEGuRpsq98nkVqsoWd6jW2QI+W8q5IsjA0dlfyxwi+MLCxWn62nH2/9pl9d73LZV5hWdbkp/6AkFcpMS4OwjzoHSokywhBphTPT6RJj9KuXN5bCamIpqfz2ZQmGb02pbuMI1YJLcNvh4zJGnhyPq8jOLUzcpywHZLGGD+cFBvpVFPMU7u9+bwx5buDparzuWcjlp2OqpZHCm86z7bJw3lZFuR8oFddkbxe9dRlbPTc07haem6YvHxXOtfH8W6Xtc/caW33J+daeV9U+pXysNsSY4HnptiXaz1Xd90/oqpK7k0TK2e2ZIUlsknbdTbmDnSfq2pIlIDh3W5Lt4/RnK9VslhN8bLsr9tR3+K5WT8UWVJWD+nuOK++eb4wJTLxCjuAmIwZrTaUR/dzq4q71FV2RjYxNTDPsNHDwPPPe9I5SFfPugk2MAm7jYfWkfPudRyodjoEgpW1ZwBcFdUSG7D4z+3O1At5vGxNK7J9UaxhFOI9W3bJdx92Xm5rFwsODKdQB7abChR8oUGOgeZ/iq7qoii3ES5yvqJT8GGNK+IaCF8L4TAOh+90sPWbm0sMFvhQ7vFmkzaQiRHkJfO/ah55Dx6onmZFhWIwcl9t9Gkhw8gqsKHww76A9mI3fnzSrv+y+kua54OL9VlojhlWabfR6LEaO9Y+4029J0CA9weFNeSYh+9CWYP7o6HGwJ6zRFX1agyXTBi/jr3wcspc7B0PEcyxdXhLyHkLuqjqJAtdIKEP1ZXR9X2f3j8Qn1Q4PQdvV+3r+iapb9bYAYco/m6XhG1wvkdJefyl2NeM742uLAn/J24UfULVrsgrCUN+N33yXI0PKcaZ6PtuHwDjy4D+fYFbCQ5jqeOqKtbNgxr9ii7pCVatM0Ri6Nh5vqHvtXSEnVw3KLt70X36uM/qlCy34xLJA8ZinVzlZyhDNXp2TPe2yT5vtabvIIsVgYtTld9KyAnQf+Ml+CeJMUYDKkl1EI9HdtkTXHMydNJ8ne6SjNdYIAMxpjzXfdQzFVPOEB6yE4gI+oUV13MVDGsywJsjBhp6xNBLrFf4e3qfk7NFashQSq7C2i+TAIaWNYgpy8GmjQKgRlubCg3EjqiOTZE0z7wgIhWyor8MGGL3x4b6a75OhyUzkmPiRu7uRsSOVUFw7zklYAaIr87zu6JcI/Ib0CCOG3j54sUrqUaVnAnHuZyMY9uP626o4jbFinU2L5iu6Q1Y9h1ZQy/XcPf9H6lTuwZuD5sEa1ZFXvd34M2HLvrKhz24KLlcm+3nfyRoNSovFFlUuCUAq5mbHAiomhdvCmAGCSU/FWjxalkPyeeFWPc+02qQRQ2yjpir0uGj+2DKBbCRgNGLa1NB6tfHPeERodQp/A55MXVF/0XV54Q8v6KsRvq8LleDzZdpvA0pqxFQEqH9PI53kR8VVtSl4v1gN/gM6gQWOS12LtJMN9GfHzlEQFmC5utTwQ3VZvmwwUUkZU1n+q3fUQJnIOXqjv08HYTMAI4EHUY9m9ocyGOAKEqRE6DoY/K3olzRf7uBmGaDg5Dx+xvNl0nQwwkpSzHy8LjR1KZWKWUghniNAkud1hlRQZbviyyxfOC+yB61C/BFw8zKZhztNLV6YqPpWaZkbmPq2adkPZrelclmj1Pye1P/FnO2bh0McMCQcOiezr/v0LpGm64yoCjSiYBxXVQ00Hj1AeH2roFDR8hV4vBxEg/TyMhJ0H0aBUa9ejaV2hEHwqhVyKbEhnR+6JDwkp/A+Qkc587I5HOWMKqZGjpzdF0O0Jl9JNNcKNMsE5qGMAwt733Y74seyLCSWvmSgX664Yyx0Cl9CiOMZhFwCZ7FA50H7GNckTy7o/lUFFujhyFEXOU1HybBDykKXAHkE0ZBEFXTphoJYSByOHXCypzSEREplu2ArMB7wC7HGqSz+5oeNOwjX8dbXKw+FmwJKAJFFgQCKZ4MzmD9DhJ45DWww8IdJzEEO4HgqaGOV+8gQMeEu5ETHYaoMZ5aFQ448dmOGSLPBGVtanrauLNZz3u05xJtwhDnPpm4lBjXac8resa4znp0kQVV1Z5GEd9A98CV2zmhGQLrZ0CGY2B9WxnLgAZ5F/Lq7i6Cx/mJjDhHLuhLnfODI0tSzRLA3P3Qze4hzb+TaqKC8mNnMe0JoEnU6WC6H5sAoLnBNFfwz8QOyS3sZzHoIVHct7usSDYTdFKzhMbPgAPr0PglwOASK0YK+oR2RalZ2Znbj/BycnKISU8AR4JKNqU2pGhz8mNeQH1IyKNKP8hIa8mTbU5MPoqDT3kCaOI1OhTP9CGt6wydlEX9oD1uEal7ajJJl288oZUWRkObEk/Se2z82VFQkPe7FutGhrkDFVQxV2rTngCGRJ0OxZk0523gFcYFwWnm01vTuiPn01uLABJKsussqRd8w2EvoiBC//UpgKfX5gCAk2QUNtj9XNZIu/A3vATQ19mEoGnkkyToPo8EmySzqsMIgGkVsSmNkM+KmPZWsUbs5g89cIBrxdjPE4JIIcmQMBqQprtOjFPIFlAz3yfGOiIbRM3riuZD0WLxMytyiOtcDV5UDx2wH4F6kSfYm1n3MTP0aJh4GSD6vdCPoJcBISKlJEPz8UnAh6pyIODpZ18m6Mw/+ZoeNlNPvayBs4Ape/OCq/HEDksMwKdLmAhE054m5FS0qdaGdLqThLrypvM+zJNHy3VAwLtMzelB9vsTcEOsPgfiiVbdif7qPcoixIs+kZPtE2+G2p9pXwJkiNDLdTY/obIoqOgOls4NlTlPJU8LG+dzyUsAj+MB07nRtKzDpRPvwXsfK10Q0CwPlC4EZ4s4TDoLytyPkc4KMrZtsFDTHVkecigdyPRoU4FstIPKjLI2tUwp40EstMxZ/NdBuK2JgTSbkzoA31Rgy9CT7abg6J6Sr7zh6zQgIuUBAdLc93G8Ua+p1eJgRx0KJkavCOVO6JIGwcePk54PFRO7Fkc0LGJsvf9CH9Te0J5yAiz4jJ0OEw2u46OuKubDxF+K8utVuSFH/YqtfpbVk3KVyHydpL/py2vlhYXpE0dB1aCzTSX31IHokpSLUPiUCMOKFiWuhlX34/Qhye8169ZSTriuh9RpAciroZetoxkXjr0lnJDR5YoFT0HniLJM6g+dUboMt7g8VM7jJENQOD/62nCU5j/WCATiUqS0adHIKqCTaxokOsSuCHlioZLTNpock/pFR0wuwysuC4fzeER/7M09YxVHvuPPWZcwy5h27uo1u1jCcoaix58QI4sZcs2EGI+h1qKAMyFU7HrDw4bD4QHAbkgTHQyLGJTMBBLnwcisgDlN9hVaXZALcpJU+14ZpeTvLmu+TDLeHSTkRGA/j3O7NNXRphoD8cNoYlMalWs21AzCrs6KnKaogeNcdSNBqJOUf1K4/zgKfBxrNRBDvTI2ZQ2izQaj822SZjQigP5SQ6gn5OqO+ToJgGh5sgQjQWfQzqY2e+pACDUaRShxioCS9UORJWX1kO7+vEcVSVkd59U37dOJch5+5xZKnybcZCi5UUIlV5c6TugJoL8NGoB8oVvOksZR5ZgWn8e73aqTxwqcOIOy/ndShMkEkNwZ2wtHMjY4iREc8YCzRITkzrt9KOWYFpI0QqOqHJ3mkEsFA5biH9NxMhZwhMaQc27naZJkevc5SHSQDjSk4Tw99+nfRBbiPemsBcuCq8gw/RUyqWp/ysBm31YSH4f2Qc58nqgdeTwB5pr0DIORQ5/5LGyYuaA5kP+Ac+KJ0DnOU//AeWqcA5XdgmWxQRdpWdVnSZ18ScRF1TbXDapb+uPNpkTkpe8mgcFCn4JVRNvk7fPNlwKDJfmSDdlQBWxT8AV0OxwS/y4BYt/domNiDj1WJxUEEUGFynQuAmgLNhVoWRD7vhZcGkuhLHIgsixXVZqmDEvOTXcMc2/SlCWQZMtSursc4XK6VGVJ3S2WprKGF2ilgoYkqJQu1UId5kEjWRsmEVSGfcnJqiRVIVr+dqybx3hg9k2asgiSbC4FO9ykrBWNhU2EyhnSLTwcuWEccnDNd9C/0Xvi7ThrPJuQrizJ3p9116pIRXUJUBlNmpl5dy8RwH5IggroLzQyF5GhzT1SYZdLBQsaCCwQ1rxXL5XSfIbYN1en2LDVVDqfrCrGvsoVN1gALgykg/0ZeMuHpSTCJQcqQQQyjRzCJRAOgwpN78QQGAYTVv2U9OKhrLZIoR44tS8/msoUX7SSihQJoBLFl72MHoZ/90h2NHw66G/4t5/sTds+kKIxbUuhNm37UIx51Ns/gwAMfPs0uJz+6QebUpoLP8FCmiRVGc0FpzZFNNfhgkU0SaoimhucbYrorksGC+kSVcV0V0XbFKQoQs3cVn7lGJNPVutgO8pkr9uHsWUoyr4g9kZSxfytS1a3mIbCAmrc1ZFy382mgn03e22mQ1ej72GMHYtbB2voV83dqUVx7Al5uTQ2FSyMPeVvVZail2TSlOXY9Y1yuLxUmEwClSkfA7AuWlemoTCHUsQgb3WZIqVWAjGw3VkeG0nsZEhdiuejV9Ui8HRaMfhIXUdJzDJYlW4zee3j5eSpa58ETlz7OEFTEWxgoFQImwgVw0ayGsfTTfyqPIxuvoOj58TKSm1cmMS5/Q5xbiPgrDgrHBuTpizBzrGdZ9vk4bwsCzKshEri08HSPnw8fr+iNGZvLe/Ry15bpgG9t0hm0VdAGx+68gcqgwTDpoyLBXaWYnCEJlvsvIUxCmFTuFOh7Ea4rmyWziACGzzgIIlqBCFSGEqHGx2zfSKObVfMNgZDxg1wGRpxT0c+2dHrOHySdoKGXMLeC83WfxM39ng1LFSkKxArbq1f1lEmUovLbQVQYdsvGhUV2xZDbjYtjso0ZKDbg1BozNIYhGexOYjdfDUpbjaWr5KD2Vbn+V1RrhH53RahUFqXZ5Qa1PEhYk2BhvaBO5tmAJAa1OGn4YMa3fdlNQy6GmllCZnSoAi3Azro0H5eohn61XGtCcDXXGKrD+5fC1yG5GAjdJuNK277WTYDSKdWRdz8pAoMH62MYGlCn5onWzorfgMUqHmZSiM2u8nUSNx80akqbd8OGeFt2SBV241SraINzQhqshu8Q77ma7CSw/7sqt+tk9UEqNRCy/vFVGr2s0lls5k8VKU7uCtxHxcYrkJ0miEru2vdjFibLxolwf3oIW9EJ8XUXLdXrq3elmis2rU0VpA3NvgmmHAUfzyBk+q1eVcmmz1OzO810NZQj2EA69mch+JdKMOqD5qQ1ZVo1KKKIRVU2OGjRkk+0oPm6z7FU/K2Mql4Kx+GPwAFe0BqalGiGQOqo9biEAyjGy5DZJr6lAN0miplv8/UNvsaE8KANHXLU45Rwx4G81CdhAzpKplLVwvLRkRRKZsPGvWgYKc+5xiznjYGS1OnwANXkerSyjwhyqkCrzTa2rzIFEl9baRZywakiG4gMSLMbB/dQ0JxzQOGv7HWEQgirorQZVH1igBMaLW6AS6iMkkzLw+0S/2GFRGAKvaWwBwLQqxaVbsyvDHpPxCOYoLJlgRZnUjUy9XdnbHue7qnoXobLKrWuSGIrawi4rXxdGJaRGW1s2yILHotTzC/ZvUgS263u6xINoZa5klHUXvURcFWEykiWamzSBlbZTjAmuYWk2IpL8ZGK3UXCGOrDoZ5N/NTPiWa4mldZ+ikLOoH1QIpSBhb8TboVdzejN1bd3HoajUbgvG8NhdML3jtNi2Wss3q7jDkUSotEEav28nWvzt9mLMAaqUHovhgFo4xtBn7rxEUTTKqQdVH8UOKikR6kSVpjUry5w/6fN3nKGq28QVCtD+sLUhrqCc5GIH9bDSAIv+QELWuDfqLZPHrexp1CXxW3BkVWF+JTi8+CFYIqrMAvVemPWJkULmhGkth9nxUn7P5GNNLa1QVaMbw0eMr2b4no9t/huiM4yQurp5RuUuYaSugrTX+TJGycjmy2PULHItqNgDY79EU7k5av0eZbg2Ip4s+eRhxV6tVgBSkq9Im/SAVU+xvcOmxFZtqG6dVwn6fQ58h+uxoth0OXk/z/oaWfiSzTL6zwRqbf1Ed3PFREdvVt7KabU2jssgo6LAExahYGFFh+RF0qMb1L6XzYosnXRuhh686leUTuUPu2Otg/PlddR0rH/OOUceTKiy8Rq3RWfdudWTvb+0NPBQHnlwGlDY9zMyJLp1zpnIzXzVqq45n8yz6xHjqK98D1lnD7hFhWEHxODSv4ZBqYyz4qDfMsaOJiBwXk/mYKgRH85oGfDlVZx7zU6uwmsDcV0qzMRd0Sh7iNgKK7I3kbp4QBE1ukraHAS6YUPZGhjcpI/RHUztmUTELH2PKMppJZvExorZWJhnRCHZNLIKiRj+hzzCaASb3E/I7cFCcnf6xOE4V7nINKnr7RaO+fPMHzch+DlYUfLoM0NX8xFmY6Fxu8VYVmnf4GKy09NAWoLD+MS5OXOkSEiov81WjKnc1ypAvxtQauhm9uwMEmGRryDVTKfVlIc2MCkrXTc1UV5+I3LrUmGbiXyXS20jzgpFSod1Oqc1Of/5Yfx8KwE1l7DADAW/k6K1kelRHpaR85YmoI0uxZDxxN60YEaV81GVcTIWYO8xE8rsheiMZ3hlRKSgvCIpp1o3PwdyxnDZ3WZGl51Y+gTGZ+x7LT5G3Mwi3/kWFPu3NUXPxUPsB/1kXZXKPPhYblFX065ujT3uce4uav84QidPuWbzBPHNEn+4YmHY0l/ld0b0rIUjUkXTJ/ei6TjZJnRyXdXqXrGucvEa4EeX3z5/9nmR72v1/QZvL/Gpf7/Y1VhmPiTNuYYo8SKEr/82RJPObqx2t9xgqYDFTrAK6yk/2KdlpbuW+SDJx8KpiQV66eIfw96Yua/xfdP+j5/RbkVsyas3XP9DxGW13NJzuKr9JHpGPbLcV+oDuk/UP/P0xpXMqFRNzRfBmf3OWJvdlsq1aHkN+/CfG8Gb7/d/+P/+qhU+BfgQA - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.Designer.cs b/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.Designer.cs deleted file mode 100644 index 652ef745..00000000 --- a/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealTableNames : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealTableNames)); - - string IMigrationMetadata.Id - { - get { return "201806102208427_ChangingMealTableNames"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.cs b/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.cs deleted file mode 100644 index cb6b1a80..00000000 --- a/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class ChangingMealTableNames : DbMigration - { - public override void Up() - { - RenameTable(name: "dbo.MealToItems", newName: "MealsToItems"); - RenameTable(name: "dbo.MealToPeriods", newName: "MealsToPeriods"); - } - - public override void Down() - { - RenameTable(name: "dbo.MealsToPeriods", newName: "MealToPeriods"); - RenameTable(name: "dbo.MealsToItems", newName: "MealToItems"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.resx b/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.resx deleted file mode 100644 index e1a51d12..00000000 --- a/src/Dsp.Data/Migrations/201806102208427_ChangingMealTableNames.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.Designer.cs b/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.Designer.cs deleted file mode 100644 index ac8c21bd..00000000 --- a/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class ChangingMealVoteTableName : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ChangingMealVoteTableName)); - - string IMigrationMetadata.Id - { - get { return "201806102216522_ChangingMealVoteTableName"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.cs b/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.cs deleted file mode 100644 index c9a057ae..00000000 --- a/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class ChangingMealVoteTableName : DbMigration - { - public override void Up() - { - RenameTable(name: "dbo.MealVotes", newName: "MealItemVotes"); - } - - public override void Down() - { - RenameTable(name: "dbo.MealItemVotes", newName: "MealVotes"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.resx b/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.resx deleted file mode 100644 index 59f6b4fb..00000000 --- a/src/Dsp.Data/Migrations/201806102216522_ChangingMealVoteTableName.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.Designer.cs b/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.Designer.cs deleted file mode 100644 index e3f48d17..00000000 --- a/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] - public sealed partial class RemovingMealIndexes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovingMealIndexes)); - - string IMigrationMetadata.Id - { - get { return "201806110004492_RemovingMealIndexes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.cs b/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.cs deleted file mode 100644 index 3fd299cf..00000000 --- a/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovingMealIndexes : DbMigration - { - public override void Up() - { - DropIndex("dbo.MealItemVotes", "IX_MealVote"); - DropIndex("dbo.MealsToItems", "IX_MealToItem"); - DropIndex("dbo.MealsToPeriods", "IX_MealToPeriod"); - CreateIndex("dbo.MealItemVotes", "UserId"); - CreateIndex("dbo.MealItemVotes", "MealItemId"); - CreateIndex("dbo.MealsToItems", "MealId"); - CreateIndex("dbo.MealsToItems", "MealItemId"); - CreateIndex("dbo.MealsToPeriods", "MealPeriodId"); - CreateIndex("dbo.MealsToPeriods", "MealId"); - } - - public override void Down() - { - DropIndex("dbo.MealsToPeriods", new[] { "MealId" }); - DropIndex("dbo.MealsToPeriods", new[] { "MealPeriodId" }); - DropIndex("dbo.MealsToItems", new[] { "MealItemId" }); - DropIndex("dbo.MealsToItems", new[] { "MealId" }); - DropIndex("dbo.MealItemVotes", new[] { "MealItemId" }); - DropIndex("dbo.MealItemVotes", new[] { "UserId" }); - CreateIndex("dbo.MealsToPeriods", new[] { "MealPeriodId", "MealId", "Date" }, unique: true, name: "IX_MealToPeriod"); - CreateIndex("dbo.MealsToItems", new[] { "MealId", "MealItemId" }, unique: true, name: "IX_MealToItem"); - CreateIndex("dbo.MealItemVotes", new[] { "UserId", "MealItemId" }, unique: true, name: "IX_MealVote"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.resx b/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.resx deleted file mode 100644 index 480191ab..00000000 --- a/src/Dsp.Data/Migrations/201806110004492_RemovingMealIndexes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.Designer.cs b/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.Designer.cs deleted file mode 100644 index c58f77e3..00000000 --- a/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddNewMealIndexes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddNewMealIndexes)); - - string IMigrationMetadata.Id - { - get { return "201806110031107_AddNewMealIndexes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.cs b/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.cs deleted file mode 100644 index 1a15d6b7..00000000 --- a/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class AddNewMealIndexes : DbMigration - { - public override void Up() - { - DropIndex("dbo.MealItemVotes", new[] { "UserId" }); - DropIndex("dbo.MealItemVotes", new[] { "MealItemId" }); - DropIndex("dbo.MealsToItems", new[] { "MealId" }); - DropIndex("dbo.MealsToItems", new[] { "MealItemId" }); - DropIndex("dbo.MealsToPeriods", new[] { "MealPeriodId" }); - DropIndex("dbo.MealsToPeriods", new[] { "MealId" }); - CreateIndex("dbo.MealItemVotes", new[] { "UserId", "MealItemId" }, unique: true, name: "IX_User_MealItem"); - CreateIndex("dbo.MealsToItems", new[] { "MealId", "MealItemId" }, unique: true, name: "IX_Meal_MealItem"); - CreateIndex("dbo.MealsToPeriods", new[] { "MealPeriodId", "MealId", "Date" }, unique: true, name: "IX_MealPeriod_Meal_Date"); - } - - public override void Down() - { - DropIndex("dbo.MealsToPeriods", "IX_MealPeriod_Meal_Date"); - DropIndex("dbo.MealsToItems", "IX_Meal_MealItem"); - DropIndex("dbo.MealItemVotes", "IX_User_MealItem"); - CreateIndex("dbo.MealsToPeriods", "MealId"); - CreateIndex("dbo.MealsToPeriods", "MealPeriodId"); - CreateIndex("dbo.MealsToItems", "MealItemId"); - CreateIndex("dbo.MealsToItems", "MealId"); - CreateIndex("dbo.MealItemVotes", "MealItemId"); - CreateIndex("dbo.MealItemVotes", "UserId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.resx b/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.resx deleted file mode 100644 index bc010fa2..00000000 --- a/src/Dsp.Data/Migrations/201806110031107_AddNewMealIndexes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO192XIcO5Ll+5jNP8j0NEu1KKnmlnVfk7qNq0Rr6ZIlirfqLS2UCZJRiozIioikpB7rL5uH+aT5hQEQGxbHjliSJSsr3WTA4XB3HDg2B/D//s//ffNv37fZs0dUVmmRv33+6sXL589Qvi42aX7/9vm+vvunf37+b//6X//Lm/PN9vuz3zu6PxI6nDOv3j5/qOvdr0dH1foBbZPqxTZdl0VV3NUv1sX2KNkUR69fvvyXo1evjhBm8Rzzevbszad9XqdbRP/Af54W+Rrt6n2SfSw2KKva7zjlhnJ99luyRdUuWaO3z8+q3YuzpE6ePzvO0gSXf4Oyu+fPkjwv6qTG0v16W6Gbuizy+5sd/pBkn3/sEKa7S7IKtVL/OpDbKvDyNVHgaMjYsVrvq7rYOjJ89cfWIkdidi+7Pu8thm12jm1b/yBaU7u9fX682ZSoqp4/E8v69TQrCd1g1Rc0c4qqF22mPzzrkv7QVz9GCfnfH56d7rN6X6K3OdrXZZL94dn1/kuWrv8d/fhcfEX523yfZaxoWDicxn3An67LYofK+scndMcLfLl5/uyIz34k5u9zy1kbzS7z+o+vnz/7DYuSfMlQjwPGCjd1UaJ3KEdlUqPNdVLXqMTVeLlB1JKSEEKRGG+luTw9D5K344DBi1vf82cfk+8fUH5fP7x9/ho3t4v0O9p0H1qmt3mK2yrOU5d75Fxoa6tXmoJfvbQr2aqg16MXdEqrS1nILzHKuMGo0dZVhDKui6pOslNMHwar0wI72jK+SX5LHtN72niEAj+i7RdUPn/2CWU0uXpId42LftEkrVosIOyOLspi+6nI+mxD2upzUt6jGstdKAhuin25FgR7czS4Pq1D7KR08YdNnlncoY8fnNIBXqRlVZOfEdq3I8A/JMaSLRHuWPB1mgsGNnuNvUW3ZCg1Q5t7dJolQA+nz3n+fYfWuHLflclmT2vdkcFJen9SFo6Zbh7Ssr5J/0NXP/hnDM9fIoLdq75WcBtFn9OtFYJudxu/zMeP2BOUuME8jK7g+TZJM12388ufYpWCh+N3ablFfV2fFNgJJ7k7XDFOvxXl5n1SjW+gG7Tel9hb4Za23Y1e2vVDkaPf9k0/Ml1Z0arm87fiIlljv3+ek1zB/D4U66/Fvj7PN6Tt3NZr53bYMYgizvF6jccJFxjMaEMHQWF+lwzxDd2MbfszlawcWjEDp9DRVTd4Uo6uuuGXrWxN51A/6Id+H9K6zlBLCEnIE6gGgQIVNBLUyXr6QAY7ZbHfaS3JkUmSMqkqa7Ikrvakeavz/K7AnDdGMRlKWNKeQCvsQOUl7016n1/d3ZmtOhDC0nbpWmF7ImdZsyTd6oVsKWTpaIJSrCbVQx7S5j4neIpgkIqhg2TrkzUSDjRecl5gh3q7y4pkY7KgQAvLy5BoZWbpXOUeRrw3aIuqWuGjusRVR5/fNxJwwqupJG+lIXV1WZf5OiVzsU9oV5S11vISqWR4gUJld5HM1ewfkn2+KX+QZmrwtCKl3C1wBCqBBSpneYXOKV43ppIX7uys5S3u01wvZ0shy0cTlHI1qa7yfEz+VpTV58K8AiRSSvLxBCo5BSpneVGSXdZo+3tR64dUAqEsLZuuFJYj8pH1GstnFrSjAqVsEnUithTu8hEOzRKHRsKGYAW4VShdMfwTiFxdKTOX0hqTp5PMySarDMrRuJqUWekBxWTSIYMCyZI9IRpncxZVSiV7jzLtOFUglA3KpistyhG5mpSw0tZ5SyDJRr+rZGoS3WUp9GPQlgCQpVCPQJtEV1luUPmYrtH5I+7tj7co3+D/6wcZqhyStDChSnwFtac+73EhTuqIGVTa8HQGZQTiAF1sVTBIbiOwh5wFcc3msR5PJ8vJJCvlZGmc5dx/2eJxF9pQkOlFFUllaXkKpcACmavMfynKr1flhiz+bY1YBogluSUaleQyobfs12VakNXZ04ckv9e7YXUetSYCqVEhkd5bLztNtLKbpQ2QrxkuuVhdyKGWmyM06sBTQ/pYb98OK2vDJMJlK1fO/3NbFyhrMFPotqVXhIxmQQeLBEJ5kBgaE8up0pAYIHEdEZvnv/Yry4oFcGjxObAh+Tagnw0HKIuUE9pkutVDxw33WWIhxtwFV2+HVRUeA6rHQ0xT5khBf8BQSB2ZgsxvjcQoq53f0sgoujb7mYbN4rjCd0Hp6gVxk//SidkESmptSEhWsowggaYHYKnCvewAHQ9XO2T+6W+BsqiNgkOrEJ4SbEK5RBkuXe1QXl3lp1UftTAEUTiyOtujOIyoYngauMtQHR6ewXLDACASRROSLA0495vtzneJ21R6lwIKumRfJzGV6nh7anSB0OZLsv46epTSZXWa5GuURYjeaWUnDg9u25axgDHM3yvlyU4fM6HuyrSjFnAkwnVh4JDGVjTR/moph1JWciZBaA0tPKDRZXAd3nTNIWYsjW56JkfcRJ3eug1pNdPcEJhYTnWtw3109pRigqx3qGi/rrZnk641qEwCWxSgCx84egwXfw4SgbJiTMo/p3U2wyGHM1Sty3TXnA4cuRe/LXVB5p6ntMIm8fY9IdiLBM3a9dNNOkVs3L0kGJMGewuWINxNNII6uwqS+NNdAGVNs5BmCAAORx7YIiBo+iOv62Cdsddk/Ik+oKwTRGLw4kxgzvONL6cwv+03sgIRqxmBeQF3WOx0QW2XaxbIshsCrtBVbiaMCGGCsps6KSOsYeGMGMTBfD6XSd7Ej50xJ7i92X1M83S73/KRNyGjS55hF3USwvETWpf7tCYN5qQovurHdrE3aEznbLz2FETvoN14iHYCYyhFcQYDJNAIG3IOAzifMMZxBqXw6pMP1qHrKFFGzvTF9ESAtG2aWsaOICDqVjH66osQSAEpOQq1rDxZvEDSvgAplJRPUUs2ejhpX5I5oNRAqlZi8qBSsWR1WKme0qiSRWip/UiewK91a04D+T7fLIOioXifYRGfe1nXBZnL+63IzZsX4E0RIxUWc5RpU97HdIOJt6Q/0i7KRVgVu0jzJJuioDP85855+/Gyutlvt6hsj4uEbb7Z36ShH1DBE0N62kQ1jJJT5aUzmWSEbQuHo7aqTYsQCS1jcZwGo+poHJOkbp2IR/8xX9fh3WtMOpNGOzyNJp186P7FKZmkohs8VaofkmFGPVmgYFO+YWl1pE0U7NY2ae0zTfefNzp7O2nxS+0QnY/tGx1ySwQKSNN04jUErsIN0AaFG5I7G7DiyamSkwNIwj0cUdXDy5Fs83k6Urq3t+syTxbQZ+diPcbZhiz0igl47ONxMV1zCZHPvWJnxbeciBLh6qLjbxV7jyR4uWjcTV2r0Z/Z2WhGfrw3spWrrV3zyM/x4hLdCBC64MTL87Ce0sX1DPlm8T382MXV+biMfCbb+o01PjENK+L0iGKXrek03W76MInXUYHSNYk64VqKoEUtysPxlleSZZaWQkv2aSR9xsObj1DR525u9mNQG0hrRqAC6J2aW3dQVXGEl5CsREKm5wLS5QO7EFF4+/M7ostlna89dhJ4t0uWwVTt09IhjHBkV2pZ9yVCH9AjGvadmybFfPdut613j9UcpFGcrs3EW2p0vQxLMdhUXJnl1WybzVO39trkmaWhdkg9MpMSk1mShoTbxGg7naijnCF2nULudkWaK/YE/NuvsW243RmlaBnwxVLWAQFtbvgOrjYRilUQ0+Tbt0SCcTYJbMIolFsDOtGs3clgQheH0uX6GR4KlGV3ICDOkyqX+d/3aZmiSlNSlHdVmgh2ZpjQQaBJcPRZl9X5d7Te1+ljz9R3QxSzyujbCaGMztJqlyU/6HU4YR75ssK8olyUflk1bSZ41zjJT9AntC0ew2UyzAhHv2ldF5/m5PPFKZayU7BewqyMcrUkgFQ0RS1Tkxw04eMurXTy9kPGWRy+8K6Kq+/XPcsyYjcQa3x3neY5bmRwVLSpd8AVmKhjqg0FD3ab+byNbnXF46pVqZFprmONO95zDUtVjv3g6FUvt0DiSN38AckxiyMgBft4gC7foTX9eWIxcAmnyS5ZM6/1hcZi6BowqRyo5bLfpSbLJY7TVk2B2cq2ycdte7dJv6VZNudsbTRkYVbMP1WbtfMR4y/LfiRj9MvwEAfK52of81yheU1Ify+2Yg1I3V50wjTdlq8/EUUBnY3n4UXgRIPrSUaAxc+llpEaXLTOmr4lEOdgYFJFWTsasaWHXjKv8AWG80Nxe/jwc03KMYCDHq6ehTtY5OVYOA4//crC/crxloQZcqHRZwWuBvchwQH5Fc/XHvReRXGCbxSn4n2u0ORSLJTwuar9h9cFNX3en14EKGvmVTPN6X7P63jVFxuzVGF3f+we0vw78b/0wUYrTAp5fmIRKCtGj0aty20EjvZeOCnp9yTbxy7KGof8A4turpHP+xOOQFndakT/+k7wekdjbLQ5cV20VEh2dddVY7Bo1wWu0h8nZUGPmE29nGsZjvDLOKVf5o94+NJ2UL81jzQqhfjjy3GEuLq7S9dpknWNOdwK8Qa87k/CKga5qpdj/aIM2edaHYMN2azzHGvpnMtDeidvC5jPtfDZjY0/zn0JUUJ6O8nJJeub292ka7+uDwWr3o+HnxMOHEzSZ3MdB5M0zywApiXjz48pjUWyCIjtiDF7K3o4LNfcNgTJ1I709T+P4cg5Nacu3L2F2p/FYB4gdjyKweT8OdKMUmvAXlpr5FA+l9Xt7rEYInGsQ/CM72QrHHOTSB+PBh7IFlMBlyyRjHDGwukFb9UJC/CZ76C26NcOf7ZBoCxTHMs495lcVu+yfY3yixJFbnGqpzqZ1qJuatBjnFyyz/vzbeOJ4QS00vGN0Lt9fS78WliT72cbA8qi1bSQfi4glF6LciXAe/8vgXtIAXs3Jtm9Z7PtenW+QNvlRujJ3NvYz9ZlVe1qb2sFRsjLAlh1keqaXsNukKsnAiRr09SydQQR/P+1x7sEbM6fKAXKGuooSk8QYTUq6gqUqQOwwbayExDB797ylMI1yXBXwKaBwnEEwd2Bb7P72eiUZc0TpE8fb2haVODu1Hm+8ePjOUWybg1QNwQ2F//WkCU+620028+2AJQVY7GNWndAYSC6u62QCJcGGiIfXv8y8c5hD0XVqlmTqFsyaykCuxXCDvujeu94rpTNOc+rPbRorzd7+pyTnSmjJc4cUqa95oqpTej8BZQO+HiAKOzU80ORoyY23/HU85BxnlPPQ/lep5757IfUA3S1NXKQmcGfx35N0+JGnaHKIJfOJivv02FpYp028D5ksPQbp+jxjPHukIoTGNILOUVhZ/uS8ohx3CBCjJ/6wfBH1Y2Q7MkbNmZeiMFXEAHh9yrK+DuhKmmBZIuTDhHPMfofX5zFA3g362hNzXpQ1zYN16vQL6vj3a6McZtPH+66Xu/LMkIcLrXhNMPUEX1XhGd2+NYc31PJD5CZfJq15B0qtc6q8+rdiVfZX/EUSpclkIV5rYJMHzyiVpmM80xFadFeU9E+56xjfIOjI+Yl9OG31k53uR5p81d3tmHAoaG5ozskiwHI0AjABs0kK1szS+N8wrJDCewvu9QVIKKUKI/kJIpwT9PI6uxnSOI8XoZths6Oxr4NH/ruip2XsT6uYo3/Dtfh6JdGB8r24YX+vxTlVxrec1ps3e8hEHPP0hZEIXyaBMRjqpbRlz3DU0z9mC3Gtgr6rjuSFe1MWEC/KFYz1DlKNKoeUiZ07SZ7DqDMfeoKklZOleQESIJ6SkZcLycxr3cIcgsLH5V/Tuvs8HtX54PCFcbMlN360A5jNFexZ9e06BE8oNb1mX2eu7O7LtOixPA/fUjye0WM+2ACiRoypUCksahI6bySQjcy7UQXaCHBORKN2DxdnIEebwpPV84zmdex87IEuXmZ1cENAiVdZhhVNuab+h0TRS1qHZ3KL6jcnsrjuDpBvQvpqKy8oIpYPRxU5hhr/OrlzNWjWRux/f1ioEdchi+M4gWf4PJQnNFJnPap7PaNLToM6OygwhPsLIt5Ac9KEgR6kdHhdvy2IY1PrdtXjru1hMYuHx6ru00c9O6kjZI0zxsgQnU/CVKP1cU7T3rU3btZYF+fF+TtluDnIni4f6RO3WHWHtYGlV25tsV6QfqsyJNmwc3pffo218/DLkBZF+SiqiSNEPB8kZaVKWZqpLXYD4mx5HGitc63SZppSo0T481F/49cVnNRd2Dg2Se0RumjVaCHfYSItyccIA66wSF51XkKzvtB6VIPDhIFdd+s1C7ebsj3099BAEv2VXD8lsnLjeNs3hVJFtgwT9B9mlcR9rvP8w3IJsae2euR9sy6hnmZVzj/um3ok4sR6zlUzIe+n5d8GbY/w2+Gou0Dvm6dpKwG98JftS4mSh5SpnCdjjHeOZYbF8euWl/v5cZbezo9SkCy/HTei/G7dl7rl9FDfLimF95ApXcQlE3YC/jt0NgF+DTLPIdtSMleh226jFM1AVpgjBj0G1xehIHAGbkYvZuVjzw3OSk2uhtzPQtRH8/rTA22tj51RX9xjU1MkzpDiSBoqsAI6tzcZovi5oDs1ewONIo7RnuKfay7g3AozsU+RdkQ/HCebZOH87IsyK3mjlhns86Dd1K4F9a7jI1u7/bpxtlLH+92WAcTqv4UA8Dvi0oXl2g5RJvj0gPppEiL5VHN9RFVVXKvX7mMUc5tpV08jFIt7Uo/pg8bmpCByG29Dh6b3KC/71G+FqUxNJUs++s29pqu/YGs9UORJSXxv8d59c118U/KPs8BLVEKr4NaEJOpunqmcHpKpCKGC/TBDM8/70kvz3L0fFWTGibW2RPbwUInPXzCS9Zy1YjJn/VSk8lnHjW0ziEJfW2apB8oDfLLhDoNAOqwE5yycbxdRsdgbqfBNo8At2HfyuI5Dvzndqcf/4yyRtVg6WOap9v9tuEcw7Vgwb0ZKttg35zGcR/SoVELV2Mt+q7n4SA/l8mgBENrpwmbIezRUqbD3YU7E4bH3P6EESV0JLKbxavwEgSv/MUfiFwU5dbnoQRpS+uKLrMP+5zhG1rc1FffYjHpytRSORpdR88Tuo5T3MdYvk7GarQFeaUITibEuSzAqYQ7k5mcSIz9g5mO3R5vNmnjIqY6ci8IcLVDUSIoTrOiQjEYeccTGJ2PcYjj7jA1QxrYs7pP7Kyk5siVcjNUJslZUlfZlXtMQpNdMX2ZSmyJTufgZeJYzp2dZ3v6+IHF3K6eXwIK8PgOa0lLHTxeVn9J83wY6PlGL8W8fMUm8nic0JDZAo9v6j2pfmNQ8Cu7+/xdXzewCkgep2xTyPU49sbDjhJV1atZBjyk5Nej73edUl8yOY6Z95WgIMwY4fNFVSdZ+LbUKYmML6e30fv0/oE48UIH+7HQt65vkvpmjXugMOO92yWBscvvUVIefyn2NdOhTW8Qcj0N6bfQJ1Tt8IhJB944UU9CiZuw+zMtF19Ddj80I2XNXslI6znuA33Dmg40JwgdLbvHbgmZ5x4h+8ZxOa9JLC6aK8a6pLE1+k/+NG1RPVO0g/N+y4D5DN2XCH1Ajwh3UpfVRZbcV71JnA5rDozCQY0ra4PK7AeuXBZWfA01Z967EFNs2t+TbI9/vpTqkqP8mOZF2RO/MhAPbOUAFI7y+uGsJ/2jnvQUo6mn/V962pOkp/xFruCmKjXVi4dQdNWtcVQh9dtx+p8syzlq+rci7+5XsKtwPBRKH5FtjTdnc2xr/Tjbb/PUtuKP7+7SLKUDZ7vaP948phWDVisIHFdVsU5phfaxavR2iHZGgirBvOf55hl3jURPuBJi6YYbLLDPxdWbEieEnQyxqtjvXOVnKEM1enZMT2yRcwrVOtnInhYrsbEWqO/kB4HaRFGi/yEVhHtAVJJOhkwqyFmyJM1rubtM83W6SzKDSYR8YEcLPgR01JcgppyhHcpJL2hQ3qZo5TtER30pQi2YrPPmiAGWHm+nD7iHX+Hv6X3eXCqpql+JEkIcJZoIcLJAAOIo0UAzEvKUtpkAekoz2JRNM88LPjpGor8M2GMIldBrOs/p4MfKpELfmJgDbDIV5ADVbYqGpzFTAm5oKqvz/K7ANiO/m6rSVrYmoxKQLq7HoTh3T/fyxQt5OOUPPAvhpgKiRbXYiCLmnRek18371dYds0yvhOR1+7T7dF4SEG7erlptralAqzaJjQRN7nkR+q4s9jt7gErkSnxSyinhKYs2LzqVppoKnEqD2AhAMy8Bmt3T0hZ1L70yvQxIiu9ag2J9LuBpfnxEClaaFo2CLawnN/PC8QaPJ6qaPLnQy6IGJEQMQbKjsxriGdhroTUSpHR62tRrlz8QXDp7hIsxha/Lkqpa0X9R9Tn5inK1r5NIQV9H0qdyc7JEEBZJeqPaSO5NaRgrD0Pyhfo4pSECJZgWgRdpplvAEQgXhL5GHhX2SOr40ONsMgPwOBssH3a4iKSs6Yy/bTdK4MmkEPQGqonwB4ilQuBI6FMbxqb+h9yBIFQbIoYYE2DxY/K3olzRf7uRuGbTDiAGN+4IxVT7dpBMABg5irF28DT2scEDzRm6laexR6AM07pGKoiVZ2wol+YYW6lUUBzfL/Jmmcst8mY4EK84zK1sZicgtcvMdyQwwnLNMU3RWmiWObPnfGX2SXOvwbsy2exxSn5v6rXVWcZYnZELgTzgmL2wWd85EKe0i40w5993aF2jTccEOmY2EQC7oLzVB5RsdLATCSGwdTQTOURJJACaTdJI0FTZZIK1aJXuNkUTDvMD7raygttttTCw3VazQo2zx5RA4/RePMx6R23yayLhkgZ6c/k1lU3m6Gg9/Nvso7omFLxZ0TQN5wBa0NsNZI5DOaiAqcdwGiVtKpTJHurN1MaIIsiUno0RRrPkDJMvycvxggHQ1GA/tsMDjTSH2wONchDO71NRbI1ejyWCsEjSJ8IhJwqAPpI+8kIzZA27EVaxDQQcpH1Y0VO6QCKFheujZEtyeY1ACrCN7eM4a8zh2zjtD8Kn9aLfoPIxXaPzR8z3eIuL1ceaGvItCZIKCQGMgpRjg1ZvwDlQrDfYQcL6PbamB6r5bAsEtSCgGtMc4USQhq03I6Jhax0EoJk4ZHIezBDhClLro66nPtEnSTdHhKzWThMsQWotYVP+rKf82sPYNiHXMulSztFbB2mPHZKjtNAEOFTbwqbwWQ/Ws6JX7dnCjRUOe2p7KBoWJGHusx1y0io7Maokc9iU3+ZZBrhucGVd3d3Z+biOeBRo9cwXgSxR1YmBJRrDpnjq4kjGBUArS1LNQg9HtZgus5EGmmzsHtL8O+kPKM3I6OOMMiHsOPUPpoO0CRAEaBcEunlDAzW2mRR7XuGAi0EgOQFzu8uKZGPj9Dj66H2pyH+Gs0kGVScGFmCMQwHXJdaWFPQJ7YpSs8IHky/FyYliAYjkScaFpcJK06FSYQ8bAZosaHMi3Z46LTA/JPt8U/4go02LBRKeeimwFKSCgrZYinFBCZtoOkzCxjgUP/khresMnZRF/aA9QAdRx+6ABe5Th25pdZwQT6AVbMo/Se9xttkRVdynuRlJlGoxDq2RRjuDpTQjQ48zyoSQ49Q/FNfVHNDrl+ENVcxTLwV4glRzHf/VmWg6GMLGOAA4JtmK/HNZI+3SHUsGA5A8DjoR/DhhwK42yT4XJHk00EH2mARtkO42BdNMc8Ksvb2Q/NQDjSVUQW3S+ygloZSQg8WKCDrINhPBDrKALfBmvnuybzWNHBZ+riVciqfrxJkPeJBVpvR3ggUOwuMRH23h7wYyFdygnmxEyDECzdW5yjaZCGyy7tZQwzmXAbffi1r7CIhIujTYNUIpoEeoCMEU4OOsMzUAOSscCAibqRBTS8a1FI54MTNbTqi5gKi2z4TTWsgSBzCr7YW/zhJLFDaUS4JgK5ECfzR1fPDxZpkWebwBDgR25OncvflEOUSsBl9DNykEBdHm2dGA7WODhCZnFCzClggVYjo/yDwLbvSELO1SfCEnE3TynH32fEx/CBlnOo8ImeFAfOKqu5+meo8yY0Q7R7wYEHJCTX3Xi84yEyIQssGhQJBoYnR/lGgpkGuEmQlqnCWmgxin8+FAS3fBAUu0HGhprjaYZsfW+YKDWABzvNZgCQBzvNBAm2spEFzmVQZWppsOreHXFywIvpYXF+gyLQy8i7qywMZukyPX/5qCWYHLtjtWFd11G4oc8E0bA/Fkt22o5NOjdrT7NQzmsoEIzR18r4bBLoGCzOJlXZzrEn3qTKDUGGcWx3lA/rLAotN7P0yHQyRK0D92RFM5R0koCH+EaNRTIUrbWK01d5lDHaLKFhGEmNAZDpVldoYMbexzIRzvWUClUXJCpwaYYfFOrZN9/2Wb1jXa0F7ejCaePDqgBPaG+fLIoIJ1nRBXsDWsXFWbdT58/aUov16VG3Jiudjq58QyKYSrnmqibhOQCoBjT9USjQRJtYls0NDnDsSl2iQRpJgSk1jjosT1s+p+nD4k+b1mB8WYU4vYjnZq5CqF1QGZpx0bzyZ7OgGr4xEL5ib7RRRuUo/sjHontE/un5eL7iiojua0Y6B4fvS2AUvNf6wRDOXSonjSoDS9mDo8s5Rjo1lnQycQRQlfs7JZNLEm9c+O2HZA9eS+eZlIjoDhaF45HLdzryGIcyDjKoKUIfY6glzAfFM3k87TrScorXIoi1WKUZw93iyGsVFgt7gRqaUhZsBiwKB0UZC0B+F4sNMDbSJozQmmw4WP3ZBPm2s0WC1qDGdlghmg5z2MmxWGp8m+QqsLclFekmpfQ5YowVdKCNFUj5NIAgHIHJLHephEZZYJIKi0gE3ZNPNsuBuEXp0VOU1RQw8ihtCnruyRIAgKBqCwSxwJgzr7TABDnRVsih/yzwbH822SZjQshP5SQ1EkhGDY00yEQkkmAIE0ZST4qWxiU/d93kAMqmwQQYYpAszWD0WWlNVDuvvzHlUkZXWcV9+0j8ar84BBZzL5VOFnGkGh+I6BvKEaKxzNbD8b8ABsQkPUzPaKKti0+D7e7VadPFbg5jIYkI1ppwc1L6AB0Ttl64sPa9ByjtDBPOLBGbRULIGmhTGNr6oqR0ct5zIAesgwPa4BYZfhrtVWdMTSwCgextVWiyzc9G57kMjacTNZluq6WRH1+FY3xnF8N2C8ub03YKzD9N90qoBlwTVoWHzQZTJgesozHjopjWOS8fGsNJ0jfGIcAbEwVTSp5po8DuNMxxkkk/EAppGstAsaeWvNuaBZJWC+ZU8tz3Ge+gfOU+McqOzkoU+BnH0h39F3DIH1vqqLbZLnRU1Z/HpbodOMHt2q3j6vyz2SGgXhe4PqluPxZlMi8n7f82dNEgOqNg3YP+N53NLtFDl/tyVnyC6/Zw0xg169tmasZ2jHaHjBVsmNfeTWhqWSkV12WssqFk2XbMOmu01dwai7k9zA6gZtcQOB665LM8vDvggKyMM8qGnHScXELj95fFDJonmC0cAG+4WkrFWgGVKNjJqHSaBGRhIss+val/DIi4Ffc3UVxKe71MrAoLnGS87e3U1mZHCdoc09Ulczk24hDLn4SeZBvttl1lmWv4vJ2IzAK4KgNgXepmPHXrjCRclduO/E3pHrPFNPYZaWf7sZFFR83tnAUnyUU+YovmZpagn8Y4pAg+DfIbRWuX3ETKdy+x6Yqe33d8lDXTR7A7YFo+aBITUjKybNuwMqNt2rBBaMVCwspVD3fPxzHBbM9KxcGDU3XSv4NJdFG9kM190qWLGXEZscLXvtLOBn2Vtb7b2Pwek4+UmTezQzY28ZAHixh/ttWKncH3MfhoGNHGguc5Ojum2ZarnZsxFjkzVMxdBfxyJSO+72fPkgRA1rPs7Pjb0NZ/MIsg8aAsaPfbSNgQkb9iazYaOJjM4gzZK8fsAzZbhO2rg4A5s29kTO3kZv2GRXNTImKMXEpizhMfV5tk0eaCruYc1NXtwYApu+vHtkz3ZY4dIyHpZ9HCTe2XLn1pWcCjAzdmHIbs5o+bK7GPbslb5bXO0WWDLrOGJPvGIWWRgyrjNmaMTFJSlcuSft1y17ffrFGGmJSsOlW09kuDASiyuXvKIWRqCD/hW3fCJbQSZSKyDRQnboFlg0hpD5AJaQ137iGISuyHdCKuzB0hjUYEiV1mihbbIIy0plkGhmGCy7Os/vCiw3+d0uginMostj0E2TVWk2TeW7FTAhutpXHm0aHUBq0FHOobRdPy0y2Q3gOaG56JKElbVkSoNiUgalrbqVapOpZI6TW6pf7NJaCXw7R6WP+HZOmHXE525AbsyiXbBxuiXuFSesbB6QTq0SRA6ZiFl91xgI5KY1URTckDXYFb+0D+BGptLUtEQM4qZbHNZhRuYEGYQTPqZF2i0GrT0aGisdKGkEWzR8VJZohQ62w7D/serlky0BUKl1kIkha3DbMhqLANzU6IhgELoJs+K2YuA5A0SnGfED5JBZuk0m3eQBYgXYRNpwigmWTk4tVloiq8ptaCMhpWWmNErU3sbgVWFCmx7C4FtdO5xpHWxf7rsy2exxYn6vaU0aagvVpEwRzCXzBGwGzvQ9jNVtua76TV3ZRBKNWgmRFDJHu/urMYXEBTBAL288E7Q21RjgVj47DAt+W4Urf1uNrnqPOU3tSzQWENbUvmNjmAYBQ7iAbnYDkWnqUaaG7CGEMuiAATAc0TP0VSBIqEEIT2lRu1yGCGjh+QHG0Vrbw0gkvEMHGS5drQBLBnsNGqOiMQHHAVBcDFSJB49WNg0sgKfV4Orjn1fzhwH/MprJjiHKqyJ2NNaweQcMVsvwFpi/vQzPeHGMYX2jW1QMUjIbVPcylVZtxetUweZUPCwlW1PUNeJiHV3OVy9IwYQ2i2wMvX7VznLfQWI6+spUuxNmWLIDqIyba4blOutNOuuFuph+nS27ancxNibLDIR2SvX04fYZWE2zEM6WTcKCru7ujMDp6exU6sjDjdNzmtY2bbym2igNgVkHShdmhoYF5Hyl+NKI+mvXZSAyG0W0azIuFplyNYYtlSwd3+6yItkY0MGT2qnE5Ai3D8ts7IXwtlwpOFlpIJHSqJKQIcg8Ii/AOpImsUwkhlsrLSQQGpXi6YPsI7CC1i0ELaJZJ63rDJ2URf2g2jkACc0qcfRh1uFZjbh80RXYBtKrjdEQmCWndGHKNyy0fVEnbyz9+a0YjR0EQqMyPH2QXQRWk2wokYD6FXOmAbILR6HTgiUEt9aa0wpaS3A8IBOwRyeiqN9G3bTCwQbgaPTis6QqI9hEBEm8lMZQcAtBQ89Sg4eOxqI2W9JATHRcJjIEwZgeFQyFXvyBUGUCENA6PpM0jb689uiUwQwNlaUKlDiSORpeCpO0skfrSZjTYroOlaczO3+WPKwb4ThNZ5Tu0JbWIi2RlRINbbAtWjYKQ3RSR7JE+zqNLmwFojMpwpPDrYY/72a0jcBy/CEof4ZOiRKOzFjBLHUQUjhG0I4ZJ300m7Sb3NV7lOlWF3k6szIseZhZOE6j7j63JbaRAUpTNOlGwSlZkOoNh2lUVmwdcukWAiu2DR1U1m0YjrC8br9vqM9g1Mx+z9DaWAvYLeQlMe8VaultFTbvE7qacL4dQrZmWGkUO60qYt1mqCIPvL/KnefW7rGq2OqNNw7oLLHmBrFoyJrCJv2h9pVmUVYm0lSwSAvihTlnrwOLxAsyCHf8PxpIOK5qkLBk5rplqMNAwjKazib8O+86swiUZoXgN+z9jAM/R2/trzwMBDwiDxjH9NQ8p4zmsXlGEfZSCI1lNG/EQ8wGJeJZRvmUuc5Qdu+fw6oaX0CHNGdvrLCxp/Hlck0hgwUi4s/Fuj5WdbKmLSgXYjzwxWadAc1PPMMKax95hpS2Wh2xe5xZzX4MONrb0t2KDvazBeJ8Jmv7LsAFKztZw3O2UNeoftDWp6NVv147cqcilm/h9ExZ7JW1cIDuFpzXA4rSWFnQxWaRrKS3yxiWMPovfQZ71Yy+zN1a8zkz+bVGKHRZ/6Qjp5r6UUduoZu/3UoXsax8k5Hhx8kfbBPwJUHALOYXBzlNtG8O2ilj5gcYh9Eh2DTSq3aAWfQv33EqKN++Y8Rn7yDTWEP5ZJ3IKspSDHT1eXclGbAooyHXLKmoc4ELNeA1ZrolGw1/aCIO3L4W05D8M156K2qe/FKpCD/6pdBvZ7gAxfhWl5KvsmrCjAc8HqW3oOm1KZW6mvemYJ25W+TsTKp5JmpiPHLCGxGpfM1Ihx3oPaM4qISeIXKuozAbym/i6K1oeENHpa36FR1YX4vlbB1zYyMfrYvh/IdlP6N8t8XcGUAvt0TvcaAHV6K6T/IGDGHXv/HRp705wtzRNmk/vDnCJGu0q/dJ9rHYoKzqEj4mu12a31dDzvbLs5tdsiaj1H+6ef7s+zbLq7fPH+p69+vRUUVZVy+26bosquKufrEutkfJpjh6/fLlvxy9enW0bXgcrbmKeSNI25dUF2Vyj4RUXDSW9CItq/osqZMvCbkU9nSzlcjEF0146/UG70prQKi7K5NkIG2jy0F+txfIVLsXRJj+XRMh82C+C6wRWWmgyiGm1pU5cd6bdYIB0b0hw0tKHo05LbL9Npc+i7hU87pt341mGXXf7Lk0l5eyPKDrTC10egWq9MqD02uQ02sXTqcpuf2Z5dJ8sedAZrCCYdpP9jyui6omD/1sBEbsdwedin1el6Ja3UeZz5sjAb5i4ziSWofgq8TmZtUYVReiWDRE+KCBRTtUZVSZMrzZUFdGfvKMmM/2vD4kEKvhqwPgyPMPHNLk9yB0+ZtlG9E6w1cHSYZbNUR2QpI9z/PvO7Su0aa7Dal5fItlDVPYl3CS3p+Uhch1+OpgyYe0rG/S/xBdyPDZoeGXCDuezZVQt8xnN6zd7jYQPyHJwW0/4sZbXif1g+C4me8Otdxc+c5VK3QLvJEHHkLcpeUWiRgR0hwwjRH7rSg375NK0JRPcUAJWu/JwjtuYdudgBQ+yUFK9gEOTkj1yxyW/BQWhSkchiDfiotkjV36eZ58yUTucqoD2ov112Jf46E97l/Qbb0WEC8ne/AGZBbTHNrSeo3HOhcYomhD+3ahScnJbgNGuZ8Zvi5mCAFdY+E1oJAZeQwubJjYDjTcOpGhZJEPnzLWnGH26g+u9qDqnqqau0d0xUmY44ijvWtIGr0x3+25yX7CdSzqNyqYE3LH2lvcbXE3cPEFn47DiI4G9DGOo3566lQa8Pdf7TmBXs/D4V3tUF5d5aeV0JGy3+25ne0RwGv46qjfabHdkeehITWZND+uePLzOd0iSVoVjWMpJBZYdjZCksOIvbmyqfwdY+UulcbsUqov52ZxHDSMltC9PGluynx353aB0OZLsv4K8xxS7TlfVqdJvkaZNHjlEpwl7Z83UejPpXvMgaVq41McOHZKQjyFtGX1UyG9k2+fdFhjoc9pnYmr2s0nB1+PqnWZ7ogXENw9m+Aw9C6FVQ36YVnIanYc/dFFtw48EQbnHQdl9qPbOWtDfauIbX2078x61ogq9zh1coLINUeAM+YSXPqjDcSN+byY2h4uk/Wq6i67Rz2rs04zzSTrbjd4OiiOqIfPbrxw7cqc6EeHzqNM8uak/5m0BSim2XP9mObpdr/lD1uyrEECX/7dOTR1AaqTteoSPqF1uU/pmyYnRfFV6s+g9MU0McPNmjYOlXAA89v4U01m5QC1zyPNzLmUqSMGwE09j+28uJ7kY7rBebZk5w+JuGdTXLZ48yQD+LHfHbwT/nMnTrX6jy7Ttpv9dktvqK0qceLGJY27wThvOw5owr6t17HhRmggwxtSIjM+xSmEpKzQDR7c1Q+J2FVKia585VE1+90Jjpu0BrpILmFZkFS9yWeLSpLfF5lwXi06SRYQoV3C9N1BnM6puaFZ9mXsd7doiWbLFQ6XYNMc2nXxLSfSAPu7QpLDbsu3So4z6z8upq2wz+d5NZaBgUdr0WWezgkvfvFB+VKiTQgfyesTwQfnU472CLlYIf3HObtYKoRcxcznhdVzYIgF9/Snb8W7B1Zw2UAgsImO1RcBWHF6szN0XyL0AT2iTEQnk7AYQKmfA7QAUpPZA0GqjONWDTkqInJpJJlzFny82xVpDszluITFAEZ1gaUFXLrbOD0Ao85qu7LdcXBtzXF3lC7zv+/Tkp5M55YBhs9THgO5rM6/o/W+Th+RuCzBJDjxy2gwt8St++xg+bTaZckPejWBYHouxUU6nBOI/GS/u3C73n/J0rXIq/vqtKt9gj6hbfEoSsanPKHhqumJURtnMrDw8Se63CqzjnFAIm5fcp3mOVZb3gThElzcFfaZCbyvIqZ5HTSRkSolLga0qnuMLcBKsnqgFM6mHt4UWxFG3bfDjUn9mHw/TXbJWjodyCUsCySB8zPCI2B6ps+uQ49qciamuQy5Y2AyzvD/I+lGL4VxXP/Rkc/VvgYY0a+LwaL1beNWAQsAL6/oBSs+tqP6OXAU2UPSQ1jQ5j+f4rLpn1TidKX7tjRsGi9xt4cmx8ofmQY2/zjAPN6SDQ1gS49LeGKwFF+89tsd5JiEHV/7GWHJ+AzxrV8/d8Fz8fEUJg5LdhJUZHnpiPnsyOv3JNtDzNrvi0GP+b1dC/DwTDywY2IwDnTIDJ2ci+lvxZcjLoVkF79ONEGbkx+ibx++u0t6dddZChaVTXdYeSiydP3jpCzoq9j88jCbMucC8SO5h+qeLqz81jxzx6+6yOkOR+vu7tJ1mmQt+vjjdULaYhqu8Rlom50qlofPhpU+v7HdPaR3CiC3SZNvU3bFk4N/m9udQrg+dTFokB5ZDhwEUC5BgwAFB5XlKTn+9phKOxtCkoNfa/P8OxKcMJfwxO4c0L3ZahMFwTw06nV/lS77kkeAneRSyATz3WUf7Hb3WEibA/3XRcFF9Qi4A1wCoLK8iZy6Ut9l+xrlFyWSKpZNWVTldo9He1dvw8CzglWZx6liCimo/c7oCfx37GcETQBcPIESGyKztrig864sC+9WN+2JV/rmNnhjCp8ydUuWt+dVm/IzwiUYLEFQmRYo4X0wPUxLJmHCYv7w2elgtcyp/7gskDQv2vtjhOT3hQicd8mDeSpyN10XI2m4JAfktbN+MSCV/T5GmOJsqCP7rP3rep7IG3h4X4asyq7xEJGu/m3yyD6L/b6Y+mLuLvWNHWSuVXWvLG1uZTsdMkmxg3zS1B4k4r2zi2/qhue83YINwmIMpj78QONIpAu+uo8OI819SfcegMAAIWna7akFxFhFCK0KjKiyB1UsOHR1IgedsAkuK0/Hu10ph8Kz3z12E9frfVmqcDWkOjYnucNkPs/bpA7ofgjunXq/FjRw8GlAuty6MbJ82+nwdfLYL6IEdBMflzDfvjZpa1d3in3QPmHK/cun0nICAtX6/L6txi08LTZGw9dYfFE+U33bPPZtUe0iG4/aN7NQmVzMKWIBSrev0D63ku0szrkbuEorKmyCwzyLPLPGz7Pol+UBNRShIdD0wOSiUPN5gTfifkLVPhOw131bHvquy7QgD/KoX2J3wSLPLQSZJk5GnPIMlKiVyebzpJJQRqlniY6mlpIHf8PnxaI8jQbwGNAOAHVkYNiPEueuyGa1PY6zYnmF1Keej7FO2ezKehWJFuCk4K0VIPmng7LFdSRIh4PZG8ZR4bB4t3RW5MqX0i2qrcvuc+efMqty1ThoJ/6CxPYnKdA++RQHjot8ajbGM52xn6psDpNCB0zdpiVrlD7KbpH9/iRXAAeAejbTgYFHQ9VlHqepnia4IxFZ9B+nXDp8VyRCW2q+2HPoHsnguQxfncK7JD7dtxmX/Fs3fplXdblfN30JzxikcNksjHUHF85D7x0i14BJ3JiUxTT864c0S/L6AavhPfGj7cbneDqcb5wW/w+3yE+7ZM8abbpz9xpV5NMOJKTgge6j44AE2hDiElwuwMhraYm9/eaElzptR6AiXoYEBz9fbIRTec2XZSEuYBuxz++LPLdtxNioieJhvBAzV32Xpfdl4efZNnmgDD4U9z71rc+vrHOSQ6rv7qPDdGO3y9p3QoU5B5tgz+99IT5W1nwZI2ZS6fWKfbkWA3fbby7nUKoquRevQO8+ui1zyYtc7sHI8tMI7HeXXbQtuq2FIWL/0aVv+fse5ZKd+68OGMyyv26FuUP3bTE+4mb9UGDRq4d0d5xX3/wfuhP5+ISamHkoa03MKoWeQAQOqBiy0738qmqvmFaUwRN5lfPnPelUtKWwJA64pPrLsQXs9yXis9M2HKEdpzCMqrnMWbv4z+1OqNnumytG2mcJP6D8vn6AwCIQOPNPvhv48wRLRCUeUMQDJsMs0H/qGNk40Z0NQgUqLzeHeehLWJ4DvSjKLXD6nfnssiB1RRcmxEVG9vtCYR8F7sEw94X3SKADw17l5Gmjw443m7QBE9DrC2n2XK92SF7W7j86rPVnRYUkRsPXMdeJ529Iw0gxvD0NvMKalY7PgkbIkVvxZfWXNM9Frz58nS8OeJnbzDf1ntzLCG0SC0nzbTvH2ArHHrJEVfVK8pvtV2dOr0FOr518Zio+k9B8cVt9ARZe3B74KKo6yeQVHPa7g04kGqAU1eo+OqzVpfcPxA8UQsWz3x3qbF3fJPXNGjtLodrYBIf95F0ibCeTDw7aoaQ8/lLsa8bVCXqCFC71sKVOCn1C1Q53S9LDwVKyN2/gNViYYok9d8iBLJ5LWG/teDhrxLGq3K+o+pRRa69LPC3yOklzsozAk/Slt1/6v6vuAzF3co8+YheWVUM+bB20Tai21S5ZU7huEO2HSb1+SSrUkDx/dt3eyIlN+qOq0bat+L9np1mKSNRTR/AxydM7PA39TK4kfvv89ctXuCc4ztKkIsvO2d3zZ9+3WV79ut5XdbFN8ryo6fbF2+cPdb379eiooiVWL7bpuiyq4q5+sS62R8mmOMK8/nj06tUR2myPxOwtWysuL/+l41JVG27/mIE738fxgHzz7+iHWMMddj6hOz6rjLk3R2L+N3DPSrISWd4+T4mJaaN5hzACSEDXdUKOqeckMAFRqZ8/+22fZSTg4+3zuySTPZlYShfGyxQhmvXXS+yyvr99/r9pll+fXf511eT6wzO6NvDrs5fP/tO54GarqCk2f0zK9UOCh0Efk+/NyhhBjTPPYQCj4fvqJce4LuWr3hV8X8fm2wxwNDx/cWbZDnh0dnVlyQ59GJg41k0/6glQl3Wh2hYLvSBl12DhsHZzawXaUeymysyN7GFoxXmYKllXjhXf6zRXQMYWynvR/1k4py5fkHsSXkV0k4DLrBLDxgTn33f09dF3ZbLZJ92yrpswEI8QmU7S+5OycJejyxdS9s1DWtY36X9ISP1v2+T7f3d2v0NUdMNtg/+s6Y1zboxI+7ndbeIwO37Eo6oSu4uHKEq2awO6DuGXP3kxxWPRu7Tcoh4JX1L3buEat5FvRbl5n1Rx9L1B6z05aYe9wHYXhSO3ThOXXxQTfv5WXCRr3Nmc5+1TwP68PhTrr3iafZ5vyD0kNM4ksGl0DINFO16v8RjsAgMPbU6bUxb+oxHSXcM9nsmTdTnp5z88u6xu8/Tve5zwGVuDeDR1ywIksx7RMO9qge9j2o1ufEY2Q8nuPl+WevD+kO0mmbxohHoVQaioo0APfEyFi5FHu91SjVvdNrmCRn7sk4OOA88+Z8gYZ4yBeNCYwg2Dx1WV3ufyxToHC0SqlaeXCZ2E9JeyO84/2nxBhXu6/DZbUNHtjvtpVeuGH1aszvYoDiOq12mx3WWoDhvIsJywDUlAbzQB6a1xHq6Lyxw0Y83vinKNyt8xBO9SpaHcWTUB7rGM1fH2mE73OWOY6QKhzZdk/TXKxOKyOk3yNcoCB9qtbMSFe/o+mUOIrfppeoyK7y3kw86tJ3wi/d9sA7E2JizyWid3cjJCo7st9asrxm0BN1DJO6MHC6zwga6b6a6BV1QO1njdWfs4neHGi5O1+buJkY/t1S/Am+tAMZWLXRdkqYy+bRM+WsUZcW0E8/lcJnlFY2DPmO1Ab3btmQjuCYKAxTeeXXv/fAC/T2hd7tOaDDdOiuIr4JGjznLJts7nhDy27AHnIXekXUabqWhfZtTVN8/NMUCaGMtu/ss2gECvY5mnr+kR3c/HdIM5bMn+nmG45Dq2uUjzJBuB7xn+cxc0N7ysbvbbLSqpkUMmO557gG7ewttReK3XA80yeo+Hdri76+64dmtubN6g+cEp6YfQDR7a1Q/J0GnGWjNt2I8Sb4FBt0lrx37UDXIXaeY1T+gze0OvyzzmkmxAzxMIujHi5aymmbusSDYmR2Ud7dNspsYIVzgrvuVEtOAt2eNvFRtjpogJjDWZHryQTyvh/Z9rM1F6z8ln2GbnZR9yl/yt8Jrg0Yw+ZuwzPvWOjio6eV2GxBlwDGLVrYXJuXIXEGoAyxNjunOG7kuEPqBHlMURKsaUR6r26eMgPqCEHldX2+E/44UFg6SNBJbEIatbs4XuDxq6Fd3lW2x4ht04ZbcrcJEeQzFrEF8XzeKdD1K7vD6IYvOO2qkqt2BCT1Rc5n/fpyW5VjTusQq67RIwuL2szr+j9b5OH1HIagVmk9Fg7hAmZ2m1y5If7b0eITphTsFhncNVBgGLOEl+gj6hbfPGpj8feIxlci2fiowuE0wcEcocMvDyE/wBB2dXoTwfEdtbzO7wr9M8T/N7006KnXvC/jWx2ZexCiQf6mDCvdRPRbH1ARzJF3ETz6L+SYldbvIx6oTAz1fopAKnBYErjZ3Rx9x+SL6fJrtkzZxljLiYSRQImYmy+X3QJ+Yf0ZBAXVnCaYFrmnbQIR32ZfiKJuVztR8xfmHYqT7eonzzhMKbZ6v82fv15ghWjPCDpHKbyUTAItk8+gnFpwLF5tkgbkPwLiuSpWOROUn1MyzRpy3vHtL8OwEwHsSnXqPqBRpwtmZMjciu1ISdDifcfk+yvQ87awhc5uuUGPoT2hXlU3HkZHJLTmr0dwMGj/Aa86DNyQ/n8XGfMwhbnUpXd12NBet0XWTp+sdJSS5JmjLMnef9iwfzy/yRXDJ8T23+W1Ebllv/+NKjjKu7u3SdJlnbMFx0CGiOHxLyLtwPchLK7yRtD/2H9E66etYiNIDPHoiw2TxxrwY5Uba53Y02Mes70A/FPblsJvK2H+V63d5qZrWh1xFj9lb0vvcNCZLpWsfrf3Z3TawWkXlPBEqHu6KS7LJG29+xH3si/a+/iVedNaKulXZMY8kU5ZqG6nb3WAyL8Ob9ImdEPRE0GSdErzyiay+rd9m+RvlFicaqgs/FE6oEiin3+COca2lNGpYpSkyU18a2E6YOEk2Oreb6KZ2TJCpde16jMeRtQEtGtfEbUVyxorQjYW86XCr34EInzD4pxJq7W4/ZND2e+jndouA55Xm+8eDjVp1Z8nMoHhy1QozYzcODa72byEc4fgIt0AoxUpEWc5pd++Y6WK+j5/0FtM4xK9DVtdEDo2ghE25XsBdhepiTye4VccZnf5JtNvJNo8amFu9yEmZbeuT4erphf1Dx8r3EbiW32cIWYvclZR9hazl0U8cr2sYHS94AgeoputNurecTazBkDTlJelkd73ZlaKh0vx+2Xu/LMsIOHzV+eGc2ahMY+7KAm4KMV7z3npqcXuOVPueBdatWN4ITq5JCPZrckDXMDY934oU0xKu7OPuFLtt2I16w79ZefEOPOFg4NxgFpg5iMcAWjeK+fUBN/aUov9L2Q95C8+zXRR4+9QbxGLH6+uLcXQ+TdXHB3VZel30XNHTJgD7jGxZh4g7VIIwGgfOJdsSTX+gZHoX0CVX7zA17MbzkdZkW5BGT04ckv/fq3RSsgmAps3rarlNSPECUgcVBevOmykc88i4ZKgroo8B9+UM8dys3a8cR3AvLKMjaIqN/ENfi+8idxOCnW7EAfASoRwD5E3IoZ0We+N5UssDd2gsS/Z2kXq2BzRvUGA/vnU/wjcFFvLXXHKwLPVO3RuljjLsSrdbDQprjgMEn0iBPk33l8/hSky3seLCxBXq0lHdFkoWhsbv4P0Ygj4GN1fKz5ez7tc/su+tdLvMKy7ImP/UnjbxKiXEDEeZBL2MhWUYIZ6Z4fiJNepR25fKqS0hFND2dz6Y0yei1Kd1lHLFKaBl+O2RM1sAj+HkdwamdkXOJ7ZA0xvjhpNhIJ6BiHv/tzeeNKd8dLFWdzz0bsex0VLU8UnjTebZNHs7LsiAHDb3qiuT1qqcuY6PnngZR0wPI5H290rk+jne7rH1MT2u7PznXyvui0q+Uh127GAs8N8W+XOu5uuv+EVVVcm+aWDmzJSsskU3arrMxN6373HlDogQMr4Nbun2M5nytksVqipdlf92O+uLPzfqhyJKyekh3x3n1zfMdK5GJV9gBxGTMaLWhPLqfW1Xc7bCyM7KJqYF5ho0eBp5/3pPOQbrD1k2wgUnYtT60jpx3r+NAtdMhEKysPQPgqqiW2IDFf253pl7I4/1sWpHtu2UNoxDv2bJLvvuw83Jbu1hwYDiFOrDdVKDgCw1yDDT/U3RVF0W5jXAj9BWdgg9rXBHXQPhaCIdxOHyng63f3FxisMDneI83m7SBTIwgL5n/VfOUfPBA9TQrKhSDkftqo08LGUZWgQ2FH/YFtBe78eOTdv2X1V/SPB9crM9Cc8ywSruNRo/V2LH2GW/qPQECvD8orCHHPHwXyhrcHw01BvacJaqqV2O4ZML4deyFl1PmhvB4iGDuKoC3hJy3oIuqTrLQBRL6HF4ZXd/36f0D8UmF06PzdtW+rm+S+maNHXCI4u92SdgG53uUlMdfin3N+N7oypLwf+JG0SdU7Yq8kjDkd2Uoz9X4XGOcib7v9gEwvgzo3xe4leAwljquqmLdvMzRr+iSnmDVOkMkho6d5xv68EtH2Ml1g7K7F92nj/usTslyOy6RPJMs1slVfoYyVKNnx3Rvm+zzVmv62rJYEbg4VfmthJwA/Tdegv8hMcZoQCWpDuLxyC57gmtOhk6ar9NdkvEaC2QgxpTnuo96pmLKGcJDdgIRQb+w4nqugmFNBnhzxEBDjxh6G/YKf0/vc3K2SA0ZSslVWPtlEsDQsgYxZTnYtFEA1GhrU6GB2BHVsSmS5pkXRKRCVvSXAUPs/thQf83X6bBkRnJM3Mjd3YjYsSoI7j2nBMwA8dV5fleUa0R+AxrEcQMvX7x4JdWokjPhOJeTcWz7cd0NVdymWLHO5gXTdXOLm3VH1tDLNdx9/0fq1K6Bm+gmwZpVkdf9RYjzoYs+F2IPLkou12b7+R8JWo3KC0UWFW4JwGrmJgcCqubpnAKYQULJTwVavFrWQ/J5IdY99LQaZFGDrCPmqnT46D6YcgFsJGD04tpUkPoZc094RCh1Cr9Dnl5d0X9R9Tkh77goq5G+08vVYPNlGm9DymoElERoP4/jXeTXiRV1qXiI2A0+gzqBRU6LnYs0003050cOEVCWoPn6VHBDtVk+bHARSVnTmX7rd5TAGUi5umM/TwchM4AjQYdRz6Y2B/IYIIpS5AQo+pj8rShX9N9uIKbZ4CBk/P5G82US9HBCylKMPDxuNLWpVUoZiCFeo8BSp3VGVJDl+yJLLB+4L7JH7QJ80TCzshlHO02tnthoepYpmduYevYpWY+md2Wy2eOU/N7Uv8WcrVsHAxwwJBy6p/PvO7Su0aarDCiKdCJgXBcVDTRefUC4vWvg0BFylTh8nMTDNDJyEnSfRoFRr55NpXbEgTBqFbIpsSGdHzokvOQncH4Cx7kzMvmcJYxqpobOHF2XA3RmH8k0F8o0y4SmIQxDy3sf9vuiBzKspFa+ZKCfbjhjLHRKn8IIo1kEXIJn8UDnAfsYVyTP7mg+FcXW6GEIEVd5zYdJ8EOKAlcA+YRREETVtKlGQhiIHE6dsDKndEREimU7ICvwHrDLsQbp7L6mBw37yNfxFherjwVbAopAkQWBQIongzNYv4MEHnkN7LBwx0kMwU4geGqo49U7CNAx4W7kRIchaoynVoUDTny2Y4bIM0FZm5qeNu5s1vMe7blEmzDEuU8mLiXGddrzip4xrrMeXWRBVbWnUTbhuHI7JzRDYP0MyHAMrG8rYxnQIO9CXt3dRfA4P5ER58gFfalzfnBkSapZApi7H7rZPaT5d1JNVFB+7CymPQE0iTodTPdjEwA0N5jmCv6Z2CG5hf0sBj0kivt2lxXJZoJOapbQ+BlwYB0avwQYXGLFSEGf0K4oNSs7c/sRXk5ODjHpCeBIUMmm1IYUbU5+zAuoDwl5VOkHGWktebLNiclHcfApTwBNvEaH4pk+pHWdoZOyqB+0xy0idU9NJunyjSe00sJoaFPiSXqPjT87Cgryftdi3cgwd6CCKuZKbdoTwJCo06E4k+a8DbzCuCA4zXx6a1p35Hx6a2YgJdmK/HNZI+3izXCbe4sf8mEa9OCiPhdEPkmC7vNIuEkyqwoM7sB6RWxKo5U1J1zam6HITz1ggCuh2M8TgkchyZAwGoCmuwqKU8gWSDPfBdV7n0aOJfuf+SC0WPDMChviLy18ENhtQJ3GE+y8rLuUGTowTLwM+Pxe1NprnZcBIVIckRSUo0l4EjDq1TkQIDWzMEbw5c7p54XRtCtCjkBaxFSejIKyZOkIoiLKQ/rm6xPBTqPNgQCnecnVeHKHJQYQ1CVMhKNpTxVyKtpUa0M63YlCXXnTeSDm6aPl+iDgfabmFCH7/Qn4IVafA/FEq+5kf/UeZRHiRp/ICfeJN0Xtz7YvATJE6OU6m59QWRRUdAdM54bKnKeTp4WN8/nkJYDH8aDp3Gha1iHTiffivY+XLgholgdLF4KzRRwqnQVl7sdJZwUZ2zZYqOmOLg85lA5kerSpQDbagWVGWZtappTxIBZa5iz+6yDc1sRAms1JHYBvKrBl6Al3U5B0T8lX3vB1GhCR8oBAae77ON6o19RqcbCjDgUTo1eEcid0SYPg48dLz4eKiV2LIxoWMbbef6EPa29oTzkBFnzGToeJBtfxUVcV82HiL0X59arckCN/xVY/y+pJuUpkvk7S3/TltfLCwvSJo6Bq0NmmknvqQHRJykUofEqEYUWLElfDqvtx+pDk95p1ayknXNdD6rQA5NXQy9bRjAvH3hJOyOhyxYKnoHNEWSb1h84oXYZbXB4q53GSISicH31tOErzH2sEAnEpUtq0aGQV0Mk1DRIdYleEPLFQyWkbTY5J/aIjJpfhFZeFw3k8oj/25p6xiiPf8eesS5hlTDt39ZpdLGE5Q9HjT4iRxQy5ZkKMx1BrUcCZECp2veFhw+HwAGA3pIkOhkUMSmYCifNgZFbAnCb7Cq0uyEU5Sap9t4xS8neYNV8mGe8OEnIisJ/HuWWa6mhTjYH4YTSxKY3KNRtqBmFXZ0VOU9TAca66kSDUSco/Ldx/HAU+jrUaiKFeGZuyBtFmg9H5NkkzGhFAf6kh1BNydcd8nQRAtDxZgpGgM2hnU5s9dSCEGo0ilDhFQMn6ociSsnpId3/eo4qkrI7z6pv2CUU5D79zC6VPE24ylNwooZKrSx0n9ATQ3wYNQL7QLWdJ46hyTIvP491u1cljBU6cQVn/OynCZAJI7ozthSMZG5zECI54wFkiQnLn3T6UckwLSRqhUVWOTnPIpYIBS/GP6TgZCzhCY8g5t/M0STK9+xwkOkgHGtJwnp779G8iC/GedNaCZcFVZJj+CplUtT9lYLNvK4mPQ/sgZz5P1I48ngBzTXqGwcihz3wWNsxc0BzIf8A58UToHOepf+A8Nc6Bym7Bstigi7Ss6rOkTr4k4qJqm+sG1S398WZTIvLid5PAYKFPwSqibfL2+eZLgcGSfMmGbKgCtin4ArodDol/lwCx727RMTGHHq2TCoKIoEJlOhcBtAWbCrQsiH1nCy6NpVAWORBZlqsqTVOGJeemO4a5N2nKEkiyZSnd1aBwOV2qsqTuUlRTWcNLtFJBQxJUSpdqoQ7zsJGsDZMIKsO+6GRVkqoQLX871s2jPDD7Jk1ZBEk2l4IdblLWisbCJkLlDOkWHo7cNA45uOY76N/offF2nDWeTUhXlmTvz7prVaSiugSojCbNzLy7lwhgPyRBBfQXGpmLyNDmHqmwy6WCBQ0EFghr3q2XSmk+Q+ybq1Ns2GoqnU9WFWNf5YobLAAXBtLB/gy85cNSEuGSA5UgAplGDuESCIdBhaZ3YggMgwmrfkp6+VBWW6RQD5zaFyBNZYovW0lFigRQieILX0YPw79/JDsaPh30N/wbUPambR9K0Zi2pVCbtn0wxjzqZe9yBca+bDJcGnuXrW1xmqL0xdgV0d2UDRbSJaqKqRoCu5IUZWi4WyqgHAryyRolbEeD7BMLYGmmspwKai5+hctp0pTFNJfd2s3jukMgitlcl6xuPw2FRXncRZJyT86mgj05e4mmQ8ej72+M3Yxbd2voZc2dq0Vx7Hl5uTQ2FSyMPfNvVZaiz2TSlOXY9ZRy8LxUmEwClSkfCrAuWlemoTCHUsSQb3WZIqVWAjHM3VkeG0nsZEhdiudjWdUi8HRaMfi4XUdJzDJYlW4zle2j5+SJbJ8ETmP7qEFTEWyYoFQImwgVw8a1GkfXTTSrPKhuvoNj6cTKSm2UmMS5/Q5xbuPhrDgrHBuTpizBzrGdZ9vk4bwsCzLIhEri08HSPnw8fr+iNGZvLe/Yy15bpgG9t0hm0VdA2yC68gcqgwTDFo2LBXaWYnCEJlvsvIUxCmFTuFOh7La4rmyWziACG0rgIIlqBCFSGEqHGx2zmSKObVfMpgZDxg1wGRpxh0c+59HrOHyS9oWGXMJODM3WfxO3+Xg1LFSk6xErbuVf1lEmUovLbQxQYdsvGhUVmxhDbjYtjso0gKDbkVBozNIYhGexOYjdfDUpbjaWr5KD2Vbn+V1RrhH53RahUFqXZ5Qa1PEhYk2BhvbJRJtmAJAa1OEn+4Ma3fdlNQy6NmllCZnSoAi3Hzro0H5eohn6tXKtCcC3XWKrD+5mC1yG5GAjdFuPK24zWjYDSKdWRdwKpQoMH62MYGlCn5onGzwrfjsUqHmZSiM2u+XUSNx80akqbeYOGeFN2iBV221TraINzQhqstu9Q77ma7CSw27tqt+7k9UEqNRCy7vHVGr2s0lls5k8VKX7uStxVxcYrkJ0miEru4fdjFibLxolwd3pIW9EJ8XUXLdzrq3elmis2rU0VpA3NvgmmHAUfzyBk+q1eVcmmz1OzO810NZQj2EA69mch+JdYMOqD6GQ1ZVo1KKKARZU2OGjRkk+7oPm6z7FU/K2Mql4Kx+NPwAFe0BqalGiGQOqo9biEBqjGy5DZJr6lMN1miplv8/UNvsaE4KCNHXLU45Rwx4G81CdBBDpKplLVwvLxkdRKZsPGvWg0Kc+5xiznjYiS1OnwHNXkerSyjwhyqnCsDTa2rzPFEl9bdxZywakiG4gMT7MbB/ds0JxzQMGw7HWEQgirorQZVH1igBMaLW6AS6iMkkzLw+0S/2GFRGAKvaWwBwLQqxaVbsyvDHpPxCOYoLJlgRZnUjUy9XdnbHue7qnoXobOqrWuSGIrawi/rXxdGJaRGW1s2yILHotTzC/ZvUgS263u6xINoZa5klHUXvURcFWEyk+WamzSBlbZTjcmuYWk2IpL0ZKK3UXCGOrDgZ9N/NTPiWa4mldZ+ikLOoH1QIpSBhb8TboVdzejN1bd1HpajUbgvG8NhdaL3jtNi2Wss3q7jDkUSotEEav28nWv0mY9ooJ1Yc05ih0qg7B9a2i5IMWwmLgf5+v+xxFwXbDvQ3mh1XkaPQiA7vx7Gejwor8Q0K8Wu0D/TX12tHEr9lpFCVA0dctQ6EXGYQiBMRZYNyr0Z7cMSjbUI2lsHgEicvdJETzyvyBJbVT5uji97eTK92dn9Fq3BKNoS539Gfwc83XSIq2r8no9pshOuO4iIujZ5TuEmZa+m8rjj9DpKxfjix2DQPHoJoFf/Z7NIW7c9bvUaZb8+Hpok8WRtzFahUgBemqtEk/SMUU+xlcemzFptq2aZWw39fQZ4g+G5ptR4PX07yfoaUfySyT72SwxubfUwd3eFTEdvWtrGZb06gsMgo6LEExKhZGVFh+Ah2qcf076bzY4snWRujhq05l+QTukDv2uhd/Xlddx8qnvGPU8aQKC29Ra3TWvVod2ftbewMPxYEHlwGlTc8yc6JL55qp3MxXjdqq49g8iz4xnvrK14B11rB7QhhWUDz+zGs4pNoYCz7aDXPsaCIix8VkPqYKwdG8pgHfTdWZx/zQKqwmMPeV0mzMBZ2Kh7iNgCJ7I7mbJwRBk5uk7WGACyWUvZHhRcoI/dHUjllUzMLHmLKMZpJZfIyorZVJRjSCXROLoKjRT+gzjGaAyf2E/AocFFenfyqOU4W7TIOK3n7RqC/f9EEzsp+DFQUfLgN0NT9wFiY6l1u8RYXmHT4GKy09swUorH+KixNXunSEyst81ajKXYUy5IsxtYbuRe/u/AAm2RpyzVRKfTlIM6OC0nVTM9VVJyK3LjWmmfg3ifQ20rxfpFRot1Nqs9OfN9bffwJwUxk7zEDACzl6K5me1FEpKV9xIurIUiwZT9zNKkZEKZ90GRdTIeYOM5H8aojeSIZXRlQKyguCYpp143MwdyynzV1OZOm5lQ9gTOa+x/JT5OUMwq1/T6FPe3PUXDTUfsB/1kWZ3KOPxQZlFf365ujTHufeouavM0TisnsWbzDPHNGHOwamHc1lfld0r0oIEnUkXXI/uq6TTVInx2Wd3iXrGievEW5E+f3zZ78n2Z52/1/Q5jK/2te7fY1VxmPijFuYIs9R6Mp/cyTJ/OZqR+s9hgpYzBSrgK7yk31KdppbuS+STBy8qliQdy7eIfy9qcsa/xfd/+g5/Vbkloxa8/XPc3xG2x0N1rjKb5JH5CPbbYU+oPtk/QN/f0zpnErFxFwRvNnfnKXJfZlsq5bHkB//iTG82X7/1/8PhuI1uQl+BAA= - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.Designer.cs b/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.Designer.cs deleted file mode 100644 index 3d3e341b..00000000 --- a/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class MealSchemaReduction1 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(MealSchemaReduction1)); - - string IMigrationMetadata.Id - { - get { return "201806161629223_MealSchemaReduction1"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.cs b/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.cs deleted file mode 100644 index 0b4d2db1..00000000 --- a/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class MealSchemaReduction1 : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.MealItemsToPeriods", - c => new - { - Id = c.Int(nullable: false, identity: true), - MealPeriodId = c.Int(nullable: false), - MealItemId = c.Int(nullable: false), - Date = c.DateTime(nullable: false, storeType: "date"), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.MealPeriods", t => t.MealPeriodId, cascadeDelete: true) - .ForeignKey("dbo.MealItems", t => t.MealItemId, cascadeDelete: true) - .Index(t => new { t.MealPeriodId, t.MealItemId, t.Date }, unique: true, name: "IX_MealPeriod_MealItem_Date"); - } - - public override void Down() - { - DropForeignKey("dbo.MealItemsToPeriods", "MealItemId", "dbo.MealItems"); - DropForeignKey("dbo.MealItemsToPeriods", "MealPeriodId", "dbo.MealPeriods"); - DropIndex("dbo.MealItemsToPeriods", "IX_MealPeriod_MealItem_Date"); - DropTable("dbo.MealItemsToPeriods"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.resx b/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.resx deleted file mode 100644 index a998b2e1..00000000 --- a/src/Dsp.Data/Migrations/201806161629223_MealSchemaReduction1.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.Designer.cs b/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.Designer.cs deleted file mode 100644 index c85bd564..00000000 --- a/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class MealSchemaReduction2 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(MealSchemaReduction2)); - - string IMigrationMetadata.Id - { - get { return "201806161649318_MealSchemaReduction2"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.cs b/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.cs deleted file mode 100644 index 3a7be306..00000000 --- a/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class MealSchemaReduction2 : DbMigration - { - public override void Up() - { - var dataMigrationQuery = @" - INSERT INTO dbo.MealItemsToPeriods - SELECT mp.MealPeriodId, mi.MealItemId, mp.Date - FROM dbo.MealsToPeriods as mp - INNER JOIN dbo.Meals as m on mp.MealId = m.Id - INNER JOIN dbo.MealsToItems as mi on m.Id = mi.MealId"; - Sql(dataMigrationQuery); - } - - public override void Down() - { - } - } -} diff --git a/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.resx b/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.resx deleted file mode 100644 index a998b2e1..00000000 --- a/src/Dsp.Data/Migrations/201806161649318_MealSchemaReduction2.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.Designer.cs b/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.Designer.cs deleted file mode 100644 index 828c87b5..00000000 --- a/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class MealSchemaReduction3 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(MealSchemaReduction3)); - - string IMigrationMetadata.Id - { - get { return "201806161705472_MealSchemaReduction3"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.cs b/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.cs deleted file mode 100644 index af04026b..00000000 --- a/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.cs +++ /dev/null @@ -1,60 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class MealSchemaReduction3 : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.MealsToItems", "MealId", "dbo.Meals"); - DropForeignKey("dbo.MealsToPeriods", "MealId", "dbo.Meals"); - DropForeignKey("dbo.MealsToPeriods", "MealPeriodId", "dbo.MealPeriods"); - DropForeignKey("dbo.MealsToItems", "MealItemId", "dbo.MealItems"); - DropIndex("dbo.MealsToPeriods", "IX_MealPeriod_Meal_Date"); - DropIndex("dbo.MealsToItems", "IX_Meal_MealItem"); - DropTable("dbo.MealsToPeriods"); - DropTable("dbo.MealsToItems"); - DropTable("dbo.Meals"); - } - - public override void Down() - { - CreateTable( - "dbo.Meals", - c => new - { - Id = c.Int(nullable: false, identity: true), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.MealsToItems", - c => new - { - Id = c.Int(nullable: false, identity: true), - MealId = c.Int(nullable: false), - MealItemId = c.Int(nullable: false), - DisplayOrder = c.Int(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.MealsToPeriods", - c => new - { - Id = c.Int(nullable: false, identity: true), - MealPeriodId = c.Int(nullable: false), - MealId = c.Int(nullable: false), - Date = c.DateTime(nullable: false, storeType: "date"), - }) - .PrimaryKey(t => t.Id); - - CreateIndex("dbo.MealsToItems", new[] { "MealId", "MealItemId" }, unique: true, name: "IX_Meal_MealItem"); - CreateIndex("dbo.MealsToPeriods", new[] { "MealPeriodId", "MealId", "Date" }, unique: true, name: "IX_MealPeriod_Meal_Date"); - AddForeignKey("dbo.MealsToItems", "MealItemId", "dbo.MealItems", "Id", cascadeDelete: true); - AddForeignKey("dbo.MealsToPeriods", "MealPeriodId", "dbo.MealPeriods", "Id", cascadeDelete: true); - AddForeignKey("dbo.MealsToPeriods", "MealId", "dbo.Meals", "Id", cascadeDelete: true); - AddForeignKey("dbo.MealsToItems", "MealId", "dbo.Meals", "Id", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.resx b/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.resx deleted file mode 100644 index ead755ac..00000000 --- a/src/Dsp.Data/Migrations/201806161705472_MealSchemaReduction3.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.Designer.cs b/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.Designer.cs deleted file mode 100644 index 361b513d..00000000 --- a/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class CachingMealVotes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(CachingMealVotes)); - - string IMigrationMetadata.Id - { - get { return "201806241957117_CachingMealVotes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.cs b/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.cs deleted file mode 100644 index 80388b32..00000000 --- a/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class CachingMealVotes : DbMigration - { - public override void Up() - { - AddColumn("dbo.MealItems", "Upvotes", c => c.Int(nullable: false)); - AddColumn("dbo.MealItems", "Downvotes", c => c.Int(nullable: false)); - } - - public override void Down() - { - DropColumn("dbo.MealItems", "Downvotes"); - DropColumn("dbo.MealItems", "Upvotes"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.resx b/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.resx deleted file mode 100644 index 34828f00..00000000 --- a/src/Dsp.Data/Migrations/201806241957117_CachingMealVotes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.Designer.cs b/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.Designer.cs deleted file mode 100644 index 6740f5db..00000000 --- a/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class InitialBugReportEntities : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(InitialBugReportEntities)); - - string IMigrationMetadata.Id - { - get { return "201809011555039_InitialBugReportEntities"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.cs b/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.cs deleted file mode 100644 index 00285622..00000000 --- a/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.cs +++ /dev/null @@ -1,52 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class InitialBugReportEntities : DbMigration - { - public override void Up() - { - CreateTable( - "dbo.BugReports", - c => new - { - Id = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - Description = c.String(maxLength: 2500), - UrlWithProblem = c.String(maxLength: 100), - Response = c.String(maxLength: 2500), - IsFixed = c.Boolean(nullable: false), - ErroredOn = c.DateTime(nullable: false), - ReportedOn = c.DateTime(nullable: false), - LastUpdatedOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.Members", t => t.UserId, cascadeDelete: true) - .Index(t => t.UserId); - - CreateTable( - "dbo.BugImages", - c => new - { - Id = c.Int(nullable: false, identity: true), - BugReportId = c.Int(nullable: false), - Image = c.Binary(storeType: "image"), - }) - .PrimaryKey(t => t.Id) - .ForeignKey("dbo.BugReports", t => t.BugReportId, cascadeDelete: true) - .Index(t => t.BugReportId); - - } - - public override void Down() - { - DropForeignKey("dbo.BugReports", "UserId", "dbo.Members"); - DropForeignKey("dbo.BugImages", "BugReportId", "dbo.BugReports"); - DropIndex("dbo.BugImages", new[] { "BugReportId" }); - DropIndex("dbo.BugReports", new[] { "UserId" }); - DropTable("dbo.BugImages"); - DropTable("dbo.BugReports"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.resx b/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.resx deleted file mode 100644 index 7c6d5c75..00000000 --- a/src/Dsp.Data/Migrations/201809011555039_InitialBugReportEntities.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.Designer.cs b/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.Designer.cs deleted file mode 100644 index d488eaec..00000000 --- a/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class RemovedErroredOnFromBugReport : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovedErroredOnFromBugReport)); - - string IMigrationMetadata.Id - { - get { return "201809032326475_RemovedErroredOnFromBugReport"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.cs b/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.cs deleted file mode 100644 index eef2496b..00000000 --- a/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovedErroredOnFromBugReport : DbMigration - { - public override void Up() - { - DropColumn("dbo.BugReports", "ErroredOn"); - } - - public override void Down() - { - AddColumn("dbo.BugReports", "ErroredOn", c => c.DateTime(nullable: false)); - } - } -} diff --git a/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.resx b/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.resx deleted file mode 100644 index d7cbb50c..00000000 --- a/src/Dsp.Data/Migrations/201809032326475_RemovedErroredOnFromBugReport.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.Designer.cs b/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.Designer.cs deleted file mode 100644 index a302d2db..00000000 --- a/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class BugReportRequiredProperties : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(BugReportRequiredProperties)); - - string IMigrationMetadata.Id - { - get { return "201809040129566_BugReportRequiredProperties"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.cs b/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.cs deleted file mode 100644 index d375b6df..00000000 --- a/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class BugReportRequiredProperties : DbMigration - { - public override void Up() - { - AlterColumn("dbo.BugReports", "Description", c => c.String(nullable: false, maxLength: 2500)); - AlterColumn("dbo.BugReports", "UrlWithProblem", c => c.String(nullable: false, maxLength: 100)); - } - - public override void Down() - { - AlterColumn("dbo.BugReports", "UrlWithProblem", c => c.String(maxLength: 100)); - AlterColumn("dbo.BugReports", "Description", c => c.String(maxLength: 2500)); - } - } -} diff --git a/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.resx b/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.resx deleted file mode 100644 index 3756d21f..00000000 --- a/src/Dsp.Data/Migrations/201809040129566_BugReportRequiredProperties.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.Designer.cs b/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.Designer.cs deleted file mode 100644 index c15201f9..00000000 --- a/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class MemberDietaryInstructions : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(MemberDietaryInstructions)); - - string IMigrationMetadata.Id - { - get { return "201810060122124_MemberDietaryInstructions"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.cs b/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.cs deleted file mode 100644 index b34428f6..00000000 --- a/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class MemberDietaryInstructions : DbMigration - { - public override void Up() - { - AddColumn("dbo.Members", "DietaryInstructions", c => c.String(maxLength: 50)); - } - - public override void Down() - { - DropColumn("dbo.Members", "DietaryInstructions"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.resx b/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.resx deleted file mode 100644 index 8d9737da..00000000 --- a/src/Dsp.Data/Migrations/201810060122124_MemberDietaryInstructions.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.Designer.cs b/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.Designer.cs deleted file mode 100644 index 20212440..00000000 --- a/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class RemovedFilesAndGrades : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovedFilesAndGrades)); - - string IMigrationMetadata.Id - { - get { return "201906292138158_RemovedFilesAndGrades"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.cs b/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.cs deleted file mode 100644 index 6bd72404..00000000 --- a/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.cs +++ /dev/null @@ -1,43 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovedFilesAndGrades : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.ClassFiles", "ClassId", "dbo.Classes"); - DropForeignKey("dbo.ClassFiles", "UserId", "dbo.Members"); - DropIndex("dbo.ClassFiles", new[] { "ClassId" }); - DropIndex("dbo.ClassFiles", new[] { "UserId" }); - DropColumn("dbo.ClassesTaken", "MidtermGrade"); - DropColumn("dbo.ClassesTaken", "FinalGrade"); - DropTable("dbo.ClassFiles"); - } - - public override void Down() - { - CreateTable( - "dbo.ClassFiles", - c => new - { - ClassFileId = c.Int(nullable: false, identity: true), - ClassId = c.Int(nullable: false), - UserId = c.Int(), - UploadedOn = c.DateTime(nullable: false), - LastAccessedOn = c.DateTime(), - DownloadCount = c.Int(nullable: false), - AwsCode = c.String(maxLength: 200), - }) - .PrimaryKey(t => t.ClassFileId); - - AddColumn("dbo.ClassesTaken", "FinalGrade", c => c.String(maxLength: 1)); - AddColumn("dbo.ClassesTaken", "MidtermGrade", c => c.String(maxLength: 1)); - CreateIndex("dbo.ClassFiles", "UserId"); - CreateIndex("dbo.ClassFiles", "ClassId"); - AddForeignKey("dbo.ClassFiles", "UserId", "dbo.Members", "UserId"); - AddForeignKey("dbo.ClassFiles", "ClassId", "dbo.Classes", "ClassId", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.resx b/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.resx deleted file mode 100644 index 3bede942..00000000 --- a/src/Dsp.Data/Migrations/201906292138158_RemovedFilesAndGrades.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.Designer.cs b/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.Designer.cs deleted file mode 100644 index 619c52e0..00000000 --- a/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class RemovedFilesAndGrades2 : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemovedFilesAndGrades2)); - - string IMigrationMetadata.Id - { - get { return "201906292147464_RemovedFilesAndGrades2"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.cs b/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.cs deleted file mode 100644 index b3ad2cae..00000000 --- a/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemovedFilesAndGrades2 : DbMigration - { - public override void Up() - { - DropColumn("dbo.ClassesTaken", "Dropped"); - } - - public override void Down() - { - AddColumn("dbo.ClassesTaken", "Dropped", c => c.Boolean()); - } - } -} diff --git a/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.resx b/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.resx deleted file mode 100644 index db2fc661..00000000 --- a/src/Dsp.Data/Migrations/201906292147464_RemovedFilesAndGrades2.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.Designer.cs b/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.Designer.cs deleted file mode 100644 index 7bb4c41c..00000000 --- a/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class RemoveShirtSize : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemoveShirtSize)); - - string IMigrationMetadata.Id - { - get { return "201906292206344_RemoveShirtSize"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.cs b/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.cs deleted file mode 100644 index 2a8106c7..00000000 --- a/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemoveShirtSize : DbMigration - { - public override void Up() - { - DropColumn("dbo.Members", "ShirtSize"); - } - - public override void Down() - { - AddColumn("dbo.Members", "ShirtSize", c => c.String()); - } - } -} diff --git a/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.resx b/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.resx deleted file mode 100644 index 345a3c85..00000000 --- a/src/Dsp.Data/Migrations/201906292206344_RemoveShirtSize.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.Designer.cs b/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.Designer.cs deleted file mode 100644 index 17e5c917..00000000 --- a/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddSemesterToServiceEvent : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddSemesterToServiceEvent)); - - string IMigrationMetadata.Id - { - get { return "201907201558340_AddSemesterToServiceEvent"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.cs b/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.cs deleted file mode 100644 index 1674619d..00000000 --- a/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System.Data.Entity.Migrations; - - public partial class AddSemesterToServiceEvent : DbMigration - { - public override void Up() - { - AddColumn("dbo.ServiceEvents", "SemesterId", c => c.Int()); - Sql(@" - UPDATE ServiceEvents - SET SemesterId=( - SELECT TOP 1 SemesterId - FROM Semesters as S - WHERE ServiceEvents.DateTimeOccurred <= S.DateEnd - ORDER BY S.DateEnd - );"); - AlterColumn("dbo.ServiceEvents", "SemesterId", c => c.Int(nullable: false)); - CreateIndex("dbo.ServiceEvents", "SemesterId"); - AddForeignKey("dbo.ServiceEvents", "SemesterId", "dbo.Semesters", "SemesterId", cascadeDelete: true); - } - - public override void Down() - { - DropForeignKey("dbo.ServiceEvents", "SemesterId", "dbo.Semesters"); - DropIndex("dbo.ServiceEvents", new[] { "SemesterId" }); - DropColumn("dbo.ServiceEvents", "SemesterId"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.resx b/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.resx deleted file mode 100644 index 8d71648e..00000000 --- a/src/Dsp.Data/Migrations/201907201558340_AddSemesterToServiceEvent.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.Designer.cs b/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.Designer.cs deleted file mode 100644 index 470c9a28..00000000 --- a/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class ReaddShirtSize : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(ReaddShirtSize)); - - string IMigrationMetadata.Id - { - get { return "201908010316108_ReaddShirtSize"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.cs b/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.cs deleted file mode 100644 index 56366af2..00000000 --- a/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class ReaddShirtSize : DbMigration - { - public override void Up() - { - AddColumn("dbo.Members", "ShirtSize", c => c.String()); - } - - public override void Down() - { - DropColumn("dbo.Members", "ShirtSize"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.resx b/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.resx deleted file mode 100644 index 091d7404..00000000 --- a/src/Dsp.Data/Migrations/201908010316108_ReaddShirtSize.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.Designer.cs b/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.Designer.cs deleted file mode 100644 index fc09d6f3..00000000 --- a/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class RemoveBugReports : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(RemoveBugReports)); - - string IMigrationMetadata.Id - { - get { return "201908031622582_RemoveBugReports"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.cs b/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.cs deleted file mode 100644 index 50be3e5c..00000000 --- a/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.cs +++ /dev/null @@ -1,51 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class RemoveBugReports : DbMigration - { - public override void Up() - { - DropForeignKey("dbo.BugImages", "BugReportId", "dbo.BugReports"); - DropForeignKey("dbo.BugReports", "UserId", "dbo.Members"); - DropIndex("dbo.BugReports", new[] { "UserId" }); - DropIndex("dbo.BugImages", new[] { "BugReportId" }); - DropTable("dbo.BugReports"); - DropTable("dbo.BugImages"); - } - - public override void Down() - { - CreateTable( - "dbo.BugImages", - c => new - { - Id = c.Int(nullable: false, identity: true), - BugReportId = c.Int(nullable: false), - Image = c.Binary(storeType: "image"), - }) - .PrimaryKey(t => t.Id); - - CreateTable( - "dbo.BugReports", - c => new - { - Id = c.Int(nullable: false, identity: true), - UserId = c.Int(nullable: false), - Description = c.String(nullable: false, maxLength: 2500), - UrlWithProblem = c.String(nullable: false, maxLength: 100), - Response = c.String(maxLength: 2500), - IsFixed = c.Boolean(nullable: false), - ReportedOn = c.DateTime(nullable: false), - LastUpdatedOn = c.DateTime(nullable: false), - }) - .PrimaryKey(t => t.Id); - - CreateIndex("dbo.BugImages", "BugReportId"); - CreateIndex("dbo.BugReports", "UserId"); - AddForeignKey("dbo.BugReports", "UserId", "dbo.Members", "UserId", cascadeDelete: true); - AddForeignKey("dbo.BugImages", "BugReportId", "dbo.BugReports", "Id", cascadeDelete: true); - } - } -} diff --git a/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.resx b/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.resx deleted file mode 100644 index ae773996..00000000 --- a/src/Dsp.Data/Migrations/201908031622582_RemoveBugReports.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.Designer.cs b/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.Designer.cs deleted file mode 100644 index 8a95bbd3..00000000 --- a/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace Dsp.Data.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddIncidentReportIdentitySharing : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddIncidentReportIdentitySharing)); - - string IMigrationMetadata.Id - { - get { return "201908161344300_AddIncidentReportIdentitySharing"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.cs b/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.cs deleted file mode 100644 index 2b033be5..00000000 --- a/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class AddIncidentReportIdentitySharing : DbMigration - { - public override void Up() - { - AddColumn("dbo.IncidentReports", "ShareIdentity", c => c.Boolean(nullable: false)); - } - - public override void Down() - { - DropColumn("dbo.IncidentReports", "ShareIdentity"); - } - } -} diff --git a/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.resx b/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.resx deleted file mode 100644 index f368020b..00000000 --- a/src/Dsp.Data/Migrations/201908161344300_AddIncidentReportIdentitySharing.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/src/Dsp.Data/Migrations/20230917175104_InitialCreate.Designer.cs b/src/Dsp.Data/Migrations/20230917175104_InitialCreate.Designer.cs new file mode 100644 index 00000000..426c1239 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230917175104_InitialCreate.Designer.cs @@ -0,0 +1,3100 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230917175104_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.AggregatedCounter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExpireAt") + .HasColumnType("datetime"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Value") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("PK_HangFire_CounterAggregated"); + + b.HasIndex(new[] { "Key" }, "UX_HangFire_CounterAggregated_Key") + .IsUnique(); + + b.ToTable("AggregatedCounter", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Causes"); + + b.ToTable("Causes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.Property("Url") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id") + .HasName("PK_dbo.Chores"); + + b.HasIndex("TypeId"); + + b.ToTable("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CancelledOnCst") + .HasColumnType("datetime"); + + b.Property("ChoreId") + .HasColumnType("int"); + + b.Property("CreatedOnCst") + .HasColumnType("datetime"); + + b.Property("DueOnCst") + .HasColumnType("datetime"); + + b.Property("EnforcementChoreId") + .HasColumnType("int"); + + b.Property("EnforcerFeedback") + .HasColumnType("nvarchar(max)"); + + b.Property("EnforcerId") + .HasColumnType("int"); + + b.Property("EnforcerVerificationTimeCst") + .HasColumnType("datetime"); + + b.Property("EnforcerVerified") + .HasColumnType("bit"); + + b.Property("GroupCompleted") + .HasColumnType("bit"); + + b.Property("GroupCompletionTimeCst") + .HasColumnType("datetime"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("GroupSignerId") + .HasColumnType("int"); + + b.Property("IsCancelled") + .HasColumnType("bit"); + + b.Property("OpensOnCst") + .HasColumnType("datetime"); + + b.Property("PeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreAssignments"); + + b.HasIndex("ChoreId"); + + b.HasIndex("EnforcementChoreId"); + + b.HasIndex("EnforcerId"); + + b.HasIndex("GroupId"); + + b.HasIndex("GroupSignerId"); + + b.HasIndex("PeriodId"); + + b.ToTable("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroups"); + + b.HasIndex("SemesterId"); + + b.HasIndex("TypeId"); + + b.ToTable("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChoreGroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupToMembers"); + + b.HasIndex("ChoreGroupId"); + + b.HasIndex("UserId"); + + b.ToTable("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupTypes"); + + b.ToTable("ChoreGroupTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOnCst") + .HasColumnType("datetime"); + + b.Property("EndsOnCst") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.ChorePeriods"); + + b.ToTable("ChorePeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreTypes"); + + b.ToTable("ChoreTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Counter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExpireAt") + .HasColumnType("datetime"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Value") + .HasColumnType("smallint"); + + b.HasKey("Id") + .HasName("PK_HangFire_Counter"); + + b.HasIndex(new[] { "Key" }, "IX_HangFire_Counter_Key"); + + b.ToTable("Counter", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FundraiserId") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("ReceivedOn") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Donations"); + + b.HasIndex(new[] { "FundraiserId" }, "IX_FundraiserId"); + + b.ToTable("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ElmahError", b => + { + b.Property("ErrorId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newid())"); + + b.Property("AllXml") + .HasColumnType("nvarchar(max)"); + + b.Property("Application") + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("Host") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Message") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Sequence") + .HasColumnType("int"); + + b.Property("Source") + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("StatusCode") + .HasColumnType("int"); + + b.Property("TimeUtc") + .HasColumnType("datetime"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("User") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("ErrorId") + .HasName("PK_dbo.ELMAH_Error"); + + b.HasIndex(new[] { "Application", "TimeUtc", "Sequence" }, "IX_ELMAH_Error_App_Time_Seq") + .IsDescending(false, true, true); + + b.ToTable("ELMAH_Error", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Email", b => + { + b.Property("EmailId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EmailId")); + + b.Property("Body") + .HasColumnType("nvarchar(max)"); + + b.Property("Destination") + .HasColumnType("nvarchar(max)"); + + b.Property("EmailTypeId") + .HasColumnType("int"); + + b.Property("SentOn") + .HasColumnType("datetime"); + + b.HasKey("EmailId") + .HasName("PK_dbo.Emails"); + + b.HasIndex("EmailTypeId"); + + b.ToTable("Emails"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.EmailType", b => + { + b.Property("EmailTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EmailTypeId")); + + b.Property("Destination") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Name") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("EmailTypeId") + .HasName("PK_dbo.EmailTypes"); + + b.ToTable("EmailTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOn") + .HasColumnType("datetime"); + + b.Property("CauseId") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("DonationInstructions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("EndsOn") + .HasColumnType("datetime"); + + b.Property("Goal") + .HasColumnType("float"); + + b.Property("IsPledgeable") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Fundraisers"); + + b.HasIndex(new[] { "CauseId" }, "IX_CauseId"); + + b.ToTable("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Hash", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExpireAt") + .HasColumnType("datetime2"); + + b.Property("Field") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id") + .HasName("PK_HangFire_Hash"); + + b.HasIndex(new[] { "ExpireAt" }, "IX_HangFire_Hash_ExpireAt"); + + b.HasIndex(new[] { "Key" }, "IX_HangFire_Hash_Key"); + + b.HasIndex(new[] { "Key", "Field" }, "UX_HangFire_Hash_Key_Field") + .IsUnique(); + + b.ToTable("Hash", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Arguments") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedAt") + .HasColumnType("datetime"); + + b.Property("ExpireAt") + .HasColumnType("datetime"); + + b.Property("InvocationData") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("StateId") + .HasColumnType("int"); + + b.Property("StateName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.HasKey("Id") + .HasName("PK_HangFire_Job"); + + b.HasIndex(new[] { "ExpireAt" }, "IX_HangFire_Job_ExpireAt"); + + b.HasIndex(new[] { "StateName" }, "IX_HangFire_Job_StateName"); + + b.ToTable("Job", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.JobParameter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("JobId") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id") + .HasName("PK_HangFire_JobParameter"); + + b.HasIndex(new[] { "JobId", "Name" }, "IX_HangFire_JobParameter_JobIdAndName"); + + b.ToTable("JobParameter", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.JobQueue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("FetchedAt") + .HasColumnType("datetime"); + + b.Property("JobId") + .HasColumnType("int"); + + b.Property("Queue") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_HangFire_JobQueue"); + + b.HasIndex(new[] { "Queue", "FetchedAt" }, "IX_HangFire_JobQueue_QueueAndFetchedAt"); + + b.ToTable("JobQueue", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LeaderId") + .HasColumnType("int"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "LeaderId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("LeaderId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.List", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExpireAt") + .HasColumnType("datetime"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id") + .HasName("PK_HangFire_List"); + + b.HasIndex(new[] { "ExpireAt" }, "IX_HangFire_List_ExpireAt"); + + b.HasIndex(new[] { "Key" }, "IX_HangFire_List_Key"); + + b.ToTable("List", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("UserId")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("UserId") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MemberClaims"); + + b.HasIndex("UserId"); + + b.ToTable("MemberClaims"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey", "UserId") + .HasName("PK_dbo.MemberLogins"); + + b.HasIndex("UserId"); + + b.ToTable("MemberLogins"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MigrationHistory", b => + { + b.Property("MigrationId") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("ContextKey") + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.Property("Model") + .IsRequired() + .HasColumnType("varbinary(max)"); + + b.Property("ProductVersion") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.HasKey("MigrationId", "ContextKey") + .HasName("PK_dbo.__MigrationHistory"); + + b.ToTable("__MigrationHistory", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("PositionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PositionId")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("PositionId") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Schema", b => + { + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("Version") + .HasName("PK_HangFire_Schema"); + + b.ToTable("Schema", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("SemesterId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SemesterId")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("SemesterId") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Server", b => + { + b.Property("Id") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("LastHeartbeat") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_HangFire_Server"); + + b.ToTable("Server", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Set", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExpireAt") + .HasColumnType("datetime"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Score") + .HasColumnType("float"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_HangFire_Set"); + + b.HasIndex(new[] { "ExpireAt" }, "IX_HangFire_Set_ExpireAt"); + + b.HasIndex(new[] { "Key" }, "IX_HangFire_Set_Key"); + + b.HasIndex(new[] { "Key", "Value" }, "UX_HangFire_Set_KeyAndValue") + .IsUnique(); + + b.ToTable("Set", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.State", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("JobId") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Reason") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id") + .HasName("PK_HangFire_State"); + + b.HasIndex(new[] { "JobId" }, "IX_HangFire_State_JobId"); + + b.ToTable("State", "HangFire"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.Property("WorkOrderCommentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderCommentId")); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.HasKey("WorkOrderCommentId") + .HasName("PK_dbo.WorkOrderComments"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.ToTable("WorkOrderComments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Property("WorkOrderPriorityId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderPriorityId") + .HasName("PK_dbo.WorkOrderPriorities"); + + b.ToTable("WorkOrderPriorities"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.Property("WorkOrderPriorityChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderPriorityId") + .HasColumnType("int"); + + b.HasKey("WorkOrderPriorityChangeId") + .HasName("PK_dbo.WorkOrderPriorityChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderPriorityId"); + + b.ToTable("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Property("WorkOrderStatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderStatusId") + .HasName("PK_dbo.WorkOrderStatuses"); + + b.ToTable("WorkOrderStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.Property("WorkOrderStatusChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderStatusId") + .HasColumnType("int"); + + b.HasKey("WorkOrderStatusChangeId") + .HasName("PK_dbo.WorkOrderStatusChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderStatusId"); + + b.ToTable("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.HasOne("Dsp.Data.Entities.ChoreType", "Type") + .WithMany("Chores") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Chores_dbo.ChoreTypes_TypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.HasOne("Dsp.Data.Entities.Chore", "Chore") + .WithMany("ChoreAssignments") + .HasForeignKey("ChoreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Chores_ChoreId"); + + b.HasOne("Dsp.Data.Entities.ChoreAssignment", "EnforcementChore") + .WithMany("InverseEnforcementChore") + .HasForeignKey("EnforcementChoreId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreAssignments_EnforcementChoreId"); + + b.HasOne("Dsp.Data.Entities.Member", "Enforcer") + .WithMany("ChoreAssignmentEnforcers") + .HasForeignKey("EnforcerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_EnforcerId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroup", "Group") + .WithMany("ChoreAssignments") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreGroups_GroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "GroupSigner") + .WithMany("ChoreAssignmentGroupSigners") + .HasForeignKey("GroupSignerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_GroupSignerId"); + + b.HasOne("Dsp.Data.Entities.ChorePeriod", "Period") + .WithMany("ChoreAssignments") + .HasForeignKey("PeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChorePeriods_PeriodId"); + + b.Navigation("Chore"); + + b.Navigation("EnforcementChore"); + + b.Navigation("Enforcer"); + + b.Navigation("Group"); + + b.Navigation("GroupSigner"); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ChoreGroups") + .HasForeignKey("SemesterId") + .HasConstraintName("FK_dbo.ChoreGroups_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroupType", "Type") + .WithMany("ChoreGroups") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroups_dbo.ChoreGroupTypes_TypeId"); + + b.Navigation("Semester"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.HasOne("Dsp.Data.Entities.ChoreGroup", "ChoreGroup") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("ChoreGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.ChoreGroups_ChoreGroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.Members_UserId"); + + b.Navigation("ChoreGroup"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTakens") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTakens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.HasOne("Dsp.Data.Entities.Fundraiser", "Fundraiser") + .WithMany("Donations") + .HasForeignKey("FundraiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Donations_dbo.Fundraisers_FundraiserId"); + + b.Navigation("Fundraiser"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Email", b => + { + b.HasOne("Dsp.Data.Entities.EmailType", "EmailType") + .WithMany("Emails") + .HasForeignKey("EmailTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Emails_dbo.EmailTypes_EmailTypeId"); + + b.Navigation("EmailType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.HasOne("Dsp.Data.Entities.Cause", "Cause") + .WithMany("Fundraisers") + .HasForeignKey("CauseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId"); + + b.Navigation("Cause"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.JobParameter", b => + { + b.HasOne("Dsp.Data.Entities.Job", "Job") + .WithMany("JobParameters") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_HangFire_JobParameter_Job"); + + b.Navigation("Job"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "LeaderNavigation") + .WithMany("Leaders") + .HasForeignKey("LeaderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Positions_LeaderId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("LeaderNavigation"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MemberClaims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MemberClaims_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MemberLogins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MemberLogins_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("RoomToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.State", b => + { + b.HasOne("Dsp.Data.Entities.Job", "Job") + .WithMany("States") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_HangFire_State_Job"); + + b.Navigation("Job"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderComments") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderComments") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.WorkOrders_WorkOrderId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderPriority", "WorkOrderPriority") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderPriorityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrderPriorities_WorkOrderPriorityId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderPriority"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderStatus", "WorkOrderStatus") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrderStatuses_WorkOrderStatusId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderStatus"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Navigation("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Navigation("InverseEnforcementChore"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Navigation("ChoreAssignments"); + + b.Navigation("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Navigation("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Navigation("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTakens"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.EmailType", b => + { + b.Navigation("Emails"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Navigation("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Job", b => + { + b.Navigation("JobParameters"); + + b.Navigation("States"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ChoreAssignmentEnforcers"); + + b.Navigation("ChoreAssignmentGroupSigners"); + + b.Navigation("ChoreGroupToMembers"); + + b.Navigation("ClassesTakens"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("MemberClaims"); + + b.Navigation("MemberLogins"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("RoomToMembers"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ChoreGroups"); + + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Navigation("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Navigation("WorkOrderStatusChanges"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230917175104_InitialCreate.cs b/src/Dsp.Data/Migrations/20230917175104_InitialCreate.cs new file mode 100644 index 00000000..b698d6f1 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230917175104_InitialCreate.cs @@ -0,0 +1,23 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/src/Dsp.Data/Migrations/20230917175702_RemoveSomeOldTables.Designer.cs b/src/Dsp.Data/Migrations/20230917175702_RemoveSomeOldTables.Designer.cs new file mode 100644 index 00000000..83fbf494 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230917175702_RemoveSomeOldTables.Designer.cs @@ -0,0 +1,2611 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230917175702_RemoveSomeOldTables")] + partial class RemoveSomeOldTables + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Causes"); + + b.ToTable("Causes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.Property("Url") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id") + .HasName("PK_dbo.Chores"); + + b.HasIndex("TypeId"); + + b.ToTable("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CancelledOnCst") + .HasColumnType("datetime"); + + b.Property("ChoreId") + .HasColumnType("int"); + + b.Property("CreatedOnCst") + .HasColumnType("datetime"); + + b.Property("DueOnCst") + .HasColumnType("datetime"); + + b.Property("EnforcementChoreId") + .HasColumnType("int"); + + b.Property("EnforcerFeedback") + .HasColumnType("nvarchar(max)"); + + b.Property("EnforcerId") + .HasColumnType("int"); + + b.Property("EnforcerVerificationTimeCst") + .HasColumnType("datetime"); + + b.Property("EnforcerVerified") + .HasColumnType("bit"); + + b.Property("GroupCompleted") + .HasColumnType("bit"); + + b.Property("GroupCompletionTimeCst") + .HasColumnType("datetime"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("GroupSignerId") + .HasColumnType("int"); + + b.Property("IsCancelled") + .HasColumnType("bit"); + + b.Property("OpensOnCst") + .HasColumnType("datetime"); + + b.Property("PeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreAssignments"); + + b.HasIndex("ChoreId"); + + b.HasIndex("EnforcementChoreId"); + + b.HasIndex("EnforcerId"); + + b.HasIndex("GroupId"); + + b.HasIndex("GroupSignerId"); + + b.HasIndex("PeriodId"); + + b.ToTable("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroups"); + + b.HasIndex("SemesterId"); + + b.HasIndex("TypeId"); + + b.ToTable("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChoreGroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupToMembers"); + + b.HasIndex("ChoreGroupId"); + + b.HasIndex("UserId"); + + b.ToTable("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupTypes"); + + b.ToTable("ChoreGroupTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOnCst") + .HasColumnType("datetime"); + + b.Property("EndsOnCst") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.ChorePeriods"); + + b.ToTable("ChorePeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreTypes"); + + b.ToTable("ChoreTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FundraiserId") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("ReceivedOn") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Donations"); + + b.HasIndex(new[] { "FundraiserId" }, "IX_FundraiserId"); + + b.ToTable("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOn") + .HasColumnType("datetime"); + + b.Property("CauseId") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("DonationInstructions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("EndsOn") + .HasColumnType("datetime"); + + b.Property("Goal") + .HasColumnType("float"); + + b.Property("IsPledgeable") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Fundraisers"); + + b.HasIndex(new[] { "CauseId" }, "IX_CauseId"); + + b.ToTable("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LeaderId") + .HasColumnType("int"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "LeaderId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("LeaderId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("UserId")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("UserId") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MemberClaims"); + + b.HasIndex("UserId"); + + b.ToTable("MemberClaims"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey", "UserId") + .HasName("PK_dbo.MemberLogins"); + + b.HasIndex("UserId"); + + b.ToTable("MemberLogins"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("PositionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PositionId")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("PositionId") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("SemesterId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SemesterId")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("SemesterId") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.Property("WorkOrderCommentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderCommentId")); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.HasKey("WorkOrderCommentId") + .HasName("PK_dbo.WorkOrderComments"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.ToTable("WorkOrderComments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Property("WorkOrderPriorityId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderPriorityId") + .HasName("PK_dbo.WorkOrderPriorities"); + + b.ToTable("WorkOrderPriorities"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.Property("WorkOrderPriorityChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderPriorityId") + .HasColumnType("int"); + + b.HasKey("WorkOrderPriorityChangeId") + .HasName("PK_dbo.WorkOrderPriorityChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderPriorityId"); + + b.ToTable("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Property("WorkOrderStatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderStatusId") + .HasName("PK_dbo.WorkOrderStatuses"); + + b.ToTable("WorkOrderStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.Property("WorkOrderStatusChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderStatusId") + .HasColumnType("int"); + + b.HasKey("WorkOrderStatusChangeId") + .HasName("PK_dbo.WorkOrderStatusChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderStatusId"); + + b.ToTable("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.HasOne("Dsp.Data.Entities.ChoreType", "Type") + .WithMany("Chores") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Chores_dbo.ChoreTypes_TypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.HasOne("Dsp.Data.Entities.Chore", "Chore") + .WithMany("ChoreAssignments") + .HasForeignKey("ChoreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Chores_ChoreId"); + + b.HasOne("Dsp.Data.Entities.ChoreAssignment", "EnforcementChore") + .WithMany("InverseEnforcementChore") + .HasForeignKey("EnforcementChoreId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreAssignments_EnforcementChoreId"); + + b.HasOne("Dsp.Data.Entities.Member", "Enforcer") + .WithMany("ChoreAssignmentEnforcers") + .HasForeignKey("EnforcerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_EnforcerId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroup", "Group") + .WithMany("ChoreAssignments") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreGroups_GroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "GroupSigner") + .WithMany("ChoreAssignmentGroupSigners") + .HasForeignKey("GroupSignerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_GroupSignerId"); + + b.HasOne("Dsp.Data.Entities.ChorePeriod", "Period") + .WithMany("ChoreAssignments") + .HasForeignKey("PeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChorePeriods_PeriodId"); + + b.Navigation("Chore"); + + b.Navigation("EnforcementChore"); + + b.Navigation("Enforcer"); + + b.Navigation("Group"); + + b.Navigation("GroupSigner"); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ChoreGroups") + .HasForeignKey("SemesterId") + .HasConstraintName("FK_dbo.ChoreGroups_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroupType", "Type") + .WithMany("ChoreGroups") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroups_dbo.ChoreGroupTypes_TypeId"); + + b.Navigation("Semester"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.HasOne("Dsp.Data.Entities.ChoreGroup", "ChoreGroup") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("ChoreGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.ChoreGroups_ChoreGroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.Members_UserId"); + + b.Navigation("ChoreGroup"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTakens") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTakens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.HasOne("Dsp.Data.Entities.Fundraiser", "Fundraiser") + .WithMany("Donations") + .HasForeignKey("FundraiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Donations_dbo.Fundraisers_FundraiserId"); + + b.Navigation("Fundraiser"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.HasOne("Dsp.Data.Entities.Cause", "Cause") + .WithMany("Fundraisers") + .HasForeignKey("CauseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId"); + + b.Navigation("Cause"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "LeaderNavigation") + .WithMany("Leaders") + .HasForeignKey("LeaderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Positions_LeaderId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("LeaderNavigation"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MemberClaims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MemberClaims_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MemberLogins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MemberLogins_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("RoomToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderComments") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderComments") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.WorkOrders_WorkOrderId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderPriority", "WorkOrderPriority") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderPriorityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrderPriorities_WorkOrderPriorityId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderPriority"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderStatus", "WorkOrderStatus") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrderStatuses_WorkOrderStatusId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderStatus"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Navigation("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Navigation("InverseEnforcementChore"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Navigation("ChoreAssignments"); + + b.Navigation("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Navigation("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Navigation("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTakens"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Navigation("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ChoreAssignmentEnforcers"); + + b.Navigation("ChoreAssignmentGroupSigners"); + + b.Navigation("ChoreGroupToMembers"); + + b.Navigation("ClassesTakens"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("MemberClaims"); + + b.Navigation("MemberLogins"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("RoomToMembers"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ChoreGroups"); + + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Navigation("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Navigation("WorkOrderStatusChanges"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230917175702_RemoveSomeOldTables.cs b/src/Dsp.Data/Migrations/20230917175702_RemoveSomeOldTables.cs new file mode 100644 index 00000000..94a3fa45 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230917175702_RemoveSomeOldTables.cs @@ -0,0 +1,444 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RemoveSomeOldTables : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "__MigrationHistory"); + + migrationBuilder.DropTable( + name: "AggregatedCounter", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "Counter", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "ELMAH_Error"); + + migrationBuilder.DropTable( + name: "Emails"); + + migrationBuilder.DropTable( + name: "Hash", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "JobParameter", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "JobQueue", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "List", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "Schema", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "Server", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "Set", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "State", + schema: "HangFire"); + + migrationBuilder.DropTable( + name: "EmailTypes"); + + migrationBuilder.DropTable( + name: "Job", + schema: "HangFire"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "HangFire"); + + migrationBuilder.CreateTable( + name: "__MigrationHistory", + columns: table => new + { + MigrationId = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false), + ContextKey = table.Column(type: "nvarchar(300)", maxLength: 300, nullable: false), + Model = table.Column(type: "varbinary(max)", nullable: false), + ProductVersion = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.__MigrationHistory", x => new { x.MigrationId, x.ContextKey }); + }); + + migrationBuilder.CreateTable( + name: "AggregatedCounter", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExpireAt = table.Column(type: "datetime", nullable: true), + Key = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Value = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_CounterAggregated", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Counter", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExpireAt = table.Column(type: "datetime", nullable: true), + Key = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Value = table.Column(type: "smallint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_Counter", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ELMAH_Error", + columns: table => new + { + ErrorId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "(newid())"), + AllXml = table.Column(type: "nvarchar(max)", nullable: true), + Application = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: true), + Host = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Message = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + Sequence = table.Column(type: "int", nullable: true), + Source = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: true), + StatusCode = table.Column(type: "int", nullable: false), + TimeUtc = table.Column(type: "datetime", nullable: false), + Type = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + User = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.ELMAH_Error", x => x.ErrorId); + }); + + migrationBuilder.CreateTable( + name: "EmailTypes", + columns: table => new + { + EmailTypeId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Destination = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.EmailTypes", x => x.EmailTypeId); + }); + + migrationBuilder.CreateTable( + name: "Hash", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExpireAt = table.Column(type: "datetime2", nullable: true), + Field = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Key = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_Hash", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Job", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Arguments = table.Column(type: "nvarchar(max)", nullable: false), + CreatedAt = table.Column(type: "datetime", nullable: false), + ExpireAt = table.Column(type: "datetime", nullable: true), + InvocationData = table.Column(type: "nvarchar(max)", nullable: false), + StateId = table.Column(type: "int", nullable: true), + StateName = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_Job", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "JobQueue", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FetchedAt = table.Column(type: "datetime", nullable: true), + JobId = table.Column(type: "int", nullable: false), + Queue = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_JobQueue", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "List", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExpireAt = table.Column(type: "datetime", nullable: true), + Key = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_List", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Schema", + schema: "HangFire", + columns: table => new + { + Version = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_Schema", x => x.Version); + }); + + migrationBuilder.CreateTable( + name: "Server", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Data = table.Column(type: "nvarchar(max)", nullable: true), + LastHeartbeat = table.Column(type: "datetime", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_Server", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Set", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExpireAt = table.Column(type: "datetime", nullable: true), + Key = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Score = table.Column(type: "float", nullable: false), + Value = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_Set", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Emails", + columns: table => new + { + EmailId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + EmailTypeId = table.Column(type: "int", nullable: false), + Body = table.Column(type: "nvarchar(max)", nullable: true), + Destination = table.Column(type: "nvarchar(max)", nullable: true), + SentOn = table.Column(type: "datetime", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.Emails", x => x.EmailId); + table.ForeignKey( + name: "FK_dbo.Emails_dbo.EmailTypes_EmailTypeId", + column: x => x.EmailTypeId, + principalTable: "EmailTypes", + principalColumn: "EmailTypeId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "JobParameter", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + JobId = table.Column(type: "int", nullable: false), + Name = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_JobParameter", x => x.Id); + table.ForeignKey( + name: "FK_HangFire_JobParameter_Job", + column: x => x.JobId, + principalSchema: "HangFire", + principalTable: "Job", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "State", + schema: "HangFire", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + JobId = table.Column(type: "int", nullable: false), + CreatedAt = table.Column(type: "datetime", nullable: false), + Data = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false), + Reason = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HangFire_State", x => x.Id); + table.ForeignKey( + name: "FK_HangFire_State_Job", + column: x => x.JobId, + principalSchema: "HangFire", + principalTable: "Job", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "UX_HangFire_CounterAggregated_Key", + schema: "HangFire", + table: "AggregatedCounter", + column: "Key", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_Counter_Key", + schema: "HangFire", + table: "Counter", + column: "Key"); + + migrationBuilder.CreateIndex( + name: "IX_ELMAH_Error_App_Time_Seq", + table: "ELMAH_Error", + columns: new[] { "Application", "TimeUtc", "Sequence" }, + descending: new[] { false, true, true }); + + migrationBuilder.CreateIndex( + name: "IX_Emails_EmailTypeId", + table: "Emails", + column: "EmailTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_Hash_ExpireAt", + schema: "HangFire", + table: "Hash", + column: "ExpireAt"); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_Hash_Key", + schema: "HangFire", + table: "Hash", + column: "Key"); + + migrationBuilder.CreateIndex( + name: "UX_HangFire_Hash_Key_Field", + schema: "HangFire", + table: "Hash", + columns: new[] { "Key", "Field" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_Job_ExpireAt", + schema: "HangFire", + table: "Job", + column: "ExpireAt"); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_Job_StateName", + schema: "HangFire", + table: "Job", + column: "StateName"); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_JobParameter_JobIdAndName", + schema: "HangFire", + table: "JobParameter", + columns: new[] { "JobId", "Name" }); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_JobQueue_QueueAndFetchedAt", + schema: "HangFire", + table: "JobQueue", + columns: new[] { "Queue", "FetchedAt" }); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_List_ExpireAt", + schema: "HangFire", + table: "List", + column: "ExpireAt"); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_List_Key", + schema: "HangFire", + table: "List", + column: "Key"); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_Set_ExpireAt", + schema: "HangFire", + table: "Set", + column: "ExpireAt"); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_Set_Key", + schema: "HangFire", + table: "Set", + column: "Key"); + + migrationBuilder.CreateIndex( + name: "UX_HangFire_Set_KeyAndValue", + schema: "HangFire", + table: "Set", + columns: new[] { "Key", "Value" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_HangFire_State_JobId", + schema: "HangFire", + table: "State", + column: "JobId"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922135001_AddIdentity.Designer.cs b/src/Dsp.Data/Migrations/20230922135001_AddIdentity.Designer.cs new file mode 100644 index 00000000..9f1de0ef --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922135001_AddIdentity.Designer.cs @@ -0,0 +1,2707 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922135001_AddIdentity")] + partial class AddIdentity + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Causes"); + + b.ToTable("Causes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.Property("Url") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id") + .HasName("PK_dbo.Chores"); + + b.HasIndex("TypeId"); + + b.ToTable("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CancelledOnCst") + .HasColumnType("datetime"); + + b.Property("ChoreId") + .HasColumnType("int"); + + b.Property("CreatedOnCst") + .HasColumnType("datetime"); + + b.Property("DueOnCst") + .HasColumnType("datetime"); + + b.Property("EnforcementChoreId") + .HasColumnType("int"); + + b.Property("EnforcerFeedback") + .HasColumnType("nvarchar(max)"); + + b.Property("EnforcerId") + .HasColumnType("int"); + + b.Property("EnforcerVerificationTimeCst") + .HasColumnType("datetime"); + + b.Property("EnforcerVerified") + .HasColumnType("bit"); + + b.Property("GroupCompleted") + .HasColumnType("bit"); + + b.Property("GroupCompletionTimeCst") + .HasColumnType("datetime"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("GroupSignerId") + .HasColumnType("int"); + + b.Property("IsCancelled") + .HasColumnType("bit"); + + b.Property("OpensOnCst") + .HasColumnType("datetime"); + + b.Property("PeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreAssignments"); + + b.HasIndex("ChoreId"); + + b.HasIndex("EnforcementChoreId"); + + b.HasIndex("EnforcerId"); + + b.HasIndex("GroupId"); + + b.HasIndex("GroupSignerId"); + + b.HasIndex("PeriodId"); + + b.ToTable("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroups"); + + b.HasIndex("SemesterId"); + + b.HasIndex("TypeId"); + + b.ToTable("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChoreGroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupToMembers"); + + b.HasIndex("ChoreGroupId"); + + b.HasIndex("UserId"); + + b.ToTable("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupTypes"); + + b.ToTable("ChoreGroupTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOnCst") + .HasColumnType("datetime"); + + b.Property("EndsOnCst") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.ChorePeriods"); + + b.ToTable("ChorePeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreTypes"); + + b.ToTable("ChoreTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FundraiserId") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("ReceivedOn") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Donations"); + + b.HasIndex(new[] { "FundraiserId" }, "IX_FundraiserId"); + + b.ToTable("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOn") + .HasColumnType("datetime"); + + b.Property("CauseId") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("DonationInstructions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("EndsOn") + .HasColumnType("datetime"); + + b.Property("Goal") + .HasColumnType("float"); + + b.Property("IsPledgeable") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Fundraisers"); + + b.HasIndex(new[] { "CauseId" }, "IX_CauseId"); + + b.ToTable("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PositionId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", null, t => + { + t.Property("PositionId") + .HasColumnName("PositionId1"); + }); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("SemesterId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SemesterId")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("SemesterId") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.Property("WorkOrderCommentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderCommentId")); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.HasKey("WorkOrderCommentId") + .HasName("PK_dbo.WorkOrderComments"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.ToTable("WorkOrderComments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Property("WorkOrderPriorityId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderPriorityId") + .HasName("PK_dbo.WorkOrderPriorities"); + + b.ToTable("WorkOrderPriorities"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.Property("WorkOrderPriorityChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderPriorityId") + .HasColumnType("int"); + + b.HasKey("WorkOrderPriorityChangeId") + .HasName("PK_dbo.WorkOrderPriorityChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderPriorityId"); + + b.ToTable("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Property("WorkOrderStatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderStatusId") + .HasName("PK_dbo.WorkOrderStatuses"); + + b.ToTable("WorkOrderStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.Property("WorkOrderStatusChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderStatusId") + .HasColumnType("int"); + + b.HasKey("WorkOrderStatusChangeId") + .HasName("PK_dbo.WorkOrderStatusChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderStatusId"); + + b.ToTable("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.HasOne("Dsp.Data.Entities.ChoreType", "Type") + .WithMany("Chores") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Chores_dbo.ChoreTypes_TypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.HasOne("Dsp.Data.Entities.Chore", "Chore") + .WithMany("ChoreAssignments") + .HasForeignKey("ChoreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Chores_ChoreId"); + + b.HasOne("Dsp.Data.Entities.ChoreAssignment", "EnforcementChore") + .WithMany("InverseEnforcementChore") + .HasForeignKey("EnforcementChoreId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreAssignments_EnforcementChoreId"); + + b.HasOne("Dsp.Data.Entities.Member", "Enforcer") + .WithMany("ChoreAssignmentEnforcers") + .HasForeignKey("EnforcerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_EnforcerId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroup", "Group") + .WithMany("ChoreAssignments") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreGroups_GroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "GroupSigner") + .WithMany("ChoreAssignmentGroupSigners") + .HasForeignKey("GroupSignerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_GroupSignerId"); + + b.HasOne("Dsp.Data.Entities.ChorePeriod", "Period") + .WithMany("ChoreAssignments") + .HasForeignKey("PeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChorePeriods_PeriodId"); + + b.Navigation("Chore"); + + b.Navigation("EnforcementChore"); + + b.Navigation("Enforcer"); + + b.Navigation("Group"); + + b.Navigation("GroupSigner"); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ChoreGroups") + .HasForeignKey("SemesterId") + .HasConstraintName("FK_dbo.ChoreGroups_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroupType", "Type") + .WithMany("ChoreGroups") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroups_dbo.ChoreGroupTypes_TypeId"); + + b.Navigation("Semester"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.HasOne("Dsp.Data.Entities.ChoreGroup", "ChoreGroup") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("ChoreGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.ChoreGroups_ChoreGroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.Members_UserId"); + + b.Navigation("ChoreGroup"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTakens") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTakens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.HasOne("Dsp.Data.Entities.Fundraiser", "Fundraiser") + .WithMany("Donations") + .HasForeignKey("FundraiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Donations_dbo.Fundraisers_FundraiserId"); + + b.Navigation("Fundraiser"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.HasOne("Dsp.Data.Entities.Cause", "Cause") + .WithMany("Fundraisers") + .HasForeignKey("CauseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId"); + + b.Navigation("Cause"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("RoomToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderComments") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderComments") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.WorkOrders_WorkOrderId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderPriority", "WorkOrderPriority") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderPriorityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrderPriorities_WorkOrderPriorityId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderPriority"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderStatus", "WorkOrderStatus") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrderStatuses_WorkOrderStatusId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderStatus"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Navigation("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Navigation("InverseEnforcementChore"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Navigation("ChoreAssignments"); + + b.Navigation("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Navigation("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Navigation("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTakens"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Navigation("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ChoreAssignmentEnforcers"); + + b.Navigation("ChoreAssignmentGroupSigners"); + + b.Navigation("ChoreGroupToMembers"); + + b.Navigation("ClassesTakens"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("RoomToMembers"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ChoreGroups"); + + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Navigation("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Navigation("WorkOrderStatusChanges"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922135001_AddIdentity.cs b/src/Dsp.Data/Migrations/20230922135001_AddIdentity.cs new file mode 100644 index 00000000..d12d14c6 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922135001_AddIdentity.cs @@ -0,0 +1,313 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class AddIdentity : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.Leaders_dbo.Positions_LeaderId", + table: "Leaders"); + + migrationBuilder.DropTable( + name: "MemberClaims"); + + migrationBuilder.DropTable( + name: "MemberLogins"); + + migrationBuilder.AddColumn( + name: "ConcurrencyStamp", + table: "Positions", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "NormalizedName", + table: "Positions", + type: "nvarchar(256)", + maxLength: 256, + nullable: true); + + migrationBuilder.AddColumn( + name: "PositionId1", + table: "Positions", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "ConcurrencyStamp", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "LockoutEnd", + table: "Members", + type: "datetimeoffset", + nullable: true); + + migrationBuilder.AddColumn( + name: "NormalizedEmail", + table: "Members", + type: "nvarchar(256)", + maxLength: 256, + nullable: true); + + migrationBuilder.AddColumn( + name: "NormalizedUserName", + table: "Members", + type: "nvarchar(256)", + maxLength: 256, + nullable: true); + + migrationBuilder.CreateTable( + name: "AspNetRoleClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + RoleId = table.Column(type: "int", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetRoleClaims_Positions_RoleId", + column: x => x.RoleId, + principalTable: "Positions", + principalColumn: "PositionId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "int", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUserClaims_Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserLogins", + columns: table => new + { + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + ProviderKey = table.Column(type: "nvarchar(450)", nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(max)", nullable: true), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); + table.ForeignKey( + name: "FK_AspNetUserLogins_Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserTokens", + columns: table => new + { + UserId = table.Column(type: "int", nullable: false), + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(450)", nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AspNetUserTokens_Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "RoleNameIndex", + table: "Positions", + column: "NormalizedName", + unique: true, + filter: "[NormalizedName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "EmailIndex", + table: "Members", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "UserNameIndex", + table: "Members", + column: "NormalizedUserName", + unique: true, + filter: "[NormalizedUserName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetRoleClaims_RoleId", + table: "AspNetRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserClaims_UserId", + table: "AspNetUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserLogins_UserId", + table: "AspNetUserLogins", + column: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Leaders_dbo.Members_RoleId", + table: "Leaders", + column: "LeaderId", + principalTable: "Positions", + principalColumn: "PositionId", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.Leaders_dbo.Members_RoleId", + table: "Leaders"); + + migrationBuilder.DropTable( + name: "AspNetRoleClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserLogins"); + + migrationBuilder.DropTable( + name: "AspNetUserTokens"); + + migrationBuilder.DropIndex( + name: "RoleNameIndex", + table: "Positions"); + + migrationBuilder.DropIndex( + name: "EmailIndex", + table: "Members"); + + migrationBuilder.DropIndex( + name: "UserNameIndex", + table: "Members"); + + migrationBuilder.DropColumn( + name: "ConcurrencyStamp", + table: "Positions"); + + migrationBuilder.DropColumn( + name: "NormalizedName", + table: "Positions"); + + migrationBuilder.DropColumn( + name: "PositionId1", + table: "Positions"); + + migrationBuilder.DropColumn( + name: "ConcurrencyStamp", + table: "Members"); + + migrationBuilder.DropColumn( + name: "LockoutEnd", + table: "Members"); + + migrationBuilder.DropColumn( + name: "NormalizedEmail", + table: "Members"); + + migrationBuilder.DropColumn( + name: "NormalizedUserName", + table: "Members"); + + migrationBuilder.CreateTable( + name: "MemberClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "int", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.MemberClaims", x => x.Id); + table.ForeignKey( + name: "FK_dbo.MemberClaims_dbo.Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "MemberLogins", + columns: table => new + { + LoginProvider = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderKey = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.MemberLogins", x => new { x.LoginProvider, x.ProviderKey, x.UserId }); + table.ForeignKey( + name: "FK_dbo.MemberLogins_dbo.Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_MemberClaims_UserId", + table: "MemberClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_MemberLogins_UserId", + table: "MemberLogins", + column: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Leaders_dbo.Positions_LeaderId", + table: "Leaders", + column: "LeaderId", + principalTable: "Positions", + principalColumn: "PositionId", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922140242_KeyCorrections.Designer.cs b/src/Dsp.Data/Migrations/20230922140242_KeyCorrections.Designer.cs new file mode 100644 index 00000000..6b5b983b --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922140242_KeyCorrections.Designer.cs @@ -0,0 +1,2737 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922140242_KeyCorrections")] + partial class KeyCorrections + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Causes"); + + b.ToTable("Causes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.Property("Url") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id") + .HasName("PK_dbo.Chores"); + + b.HasIndex("TypeId"); + + b.ToTable("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CancelledOnCst") + .HasColumnType("datetime"); + + b.Property("ChoreId") + .HasColumnType("int"); + + b.Property("CreatedOnCst") + .HasColumnType("datetime"); + + b.Property("DueOnCst") + .HasColumnType("datetime"); + + b.Property("EnforcementChoreId") + .HasColumnType("int"); + + b.Property("EnforcerFeedback") + .HasColumnType("nvarchar(max)"); + + b.Property("EnforcerId") + .HasColumnType("int"); + + b.Property("EnforcerVerificationTimeCst") + .HasColumnType("datetime"); + + b.Property("EnforcerVerified") + .HasColumnType("bit"); + + b.Property("GroupCompleted") + .HasColumnType("bit"); + + b.Property("GroupCompletionTimeCst") + .HasColumnType("datetime"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("GroupSignerId") + .HasColumnType("int"); + + b.Property("IsCancelled") + .HasColumnType("bit"); + + b.Property("OpensOnCst") + .HasColumnType("datetime"); + + b.Property("PeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreAssignments"); + + b.HasIndex("ChoreId"); + + b.HasIndex("EnforcementChoreId"); + + b.HasIndex("EnforcerId"); + + b.HasIndex("GroupId"); + + b.HasIndex("GroupSignerId"); + + b.HasIndex("PeriodId"); + + b.ToTable("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroups"); + + b.HasIndex("SemesterId"); + + b.HasIndex("TypeId"); + + b.ToTable("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChoreGroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupToMembers"); + + b.HasIndex("ChoreGroupId"); + + b.HasIndex("UserId"); + + b.ToTable("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupTypes"); + + b.ToTable("ChoreGroupTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOnCst") + .HasColumnType("datetime"); + + b.Property("EndsOnCst") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.ChorePeriods"); + + b.ToTable("ChorePeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreTypes"); + + b.ToTable("ChoreTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FundraiserId") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("ReceivedOn") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Donations"); + + b.HasIndex(new[] { "FundraiserId" }, "IX_FundraiserId"); + + b.ToTable("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOn") + .HasColumnType("datetime"); + + b.Property("CauseId") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("DonationInstructions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("EndsOn") + .HasColumnType("datetime"); + + b.Property("Goal") + .HasColumnType("float"); + + b.Property("IsPledgeable") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Fundraisers"); + + b.HasIndex(new[] { "CauseId" }, "IX_CauseId"); + + b.ToTable("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PositionId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", null, t => + { + t.Property("PositionId") + .HasColumnName("PositionId1"); + }); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.Property("WorkOrderCommentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderCommentId")); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.HasKey("WorkOrderCommentId") + .HasName("PK_dbo.WorkOrderComments"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.ToTable("WorkOrderComments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Property("WorkOrderPriorityId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderPriorityId") + .HasName("PK_dbo.WorkOrderPriorities"); + + b.ToTable("WorkOrderPriorities"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.Property("WorkOrderPriorityChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderPriorityChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderPriorityId") + .HasColumnType("int"); + + b.HasKey("WorkOrderPriorityChangeId") + .HasName("PK_dbo.WorkOrderPriorityChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderPriorityId"); + + b.ToTable("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Property("WorkOrderStatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("WorkOrderStatusId") + .HasName("PK_dbo.WorkOrderStatuses"); + + b.ToTable("WorkOrderStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.Property("WorkOrderStatusChangeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderStatusChangeId")); + + b.Property("ChangedOn") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WorkOrderId") + .HasColumnType("int"); + + b.Property("WorkOrderStatusId") + .HasColumnType("int"); + + b.HasKey("WorkOrderStatusChangeId") + .HasName("PK_dbo.WorkOrderStatusChanges"); + + b.HasIndex("UserId"); + + b.HasIndex("WorkOrderId"); + + b.HasIndex("WorkOrderStatusId"); + + b.ToTable("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.HasOne("Dsp.Data.Entities.ChoreType", "Type") + .WithMany("Chores") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Chores_dbo.ChoreTypes_TypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.HasOne("Dsp.Data.Entities.Chore", "Chore") + .WithMany("ChoreAssignments") + .HasForeignKey("ChoreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Chores_ChoreId"); + + b.HasOne("Dsp.Data.Entities.ChoreAssignment", "EnforcementChore") + .WithMany("InverseEnforcementChore") + .HasForeignKey("EnforcementChoreId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreAssignments_EnforcementChoreId"); + + b.HasOne("Dsp.Data.Entities.Member", "Enforcer") + .WithMany("ChoreAssignmentEnforcers") + .HasForeignKey("EnforcerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_EnforcerId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroup", "Group") + .WithMany("ChoreAssignments") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreGroups_GroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "GroupSigner") + .WithMany("ChoreAssignmentGroupSigners") + .HasForeignKey("GroupSignerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_GroupSignerId"); + + b.HasOne("Dsp.Data.Entities.ChorePeriod", "Period") + .WithMany("ChoreAssignments") + .HasForeignKey("PeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChorePeriods_PeriodId"); + + b.Navigation("Chore"); + + b.Navigation("EnforcementChore"); + + b.Navigation("Enforcer"); + + b.Navigation("Group"); + + b.Navigation("GroupSigner"); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ChoreGroups") + .HasForeignKey("SemesterId") + .HasConstraintName("FK_dbo.ChoreGroups_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroupType", "Type") + .WithMany("ChoreGroups") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroups_dbo.ChoreGroupTypes_TypeId"); + + b.Navigation("Semester"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.HasOne("Dsp.Data.Entities.ChoreGroup", "ChoreGroup") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("ChoreGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.ChoreGroups_ChoreGroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.Members_UserId"); + + b.Navigation("ChoreGroup"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassesTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTakens") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTakens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.HasOne("Dsp.Data.Entities.Fundraiser", "Fundraiser") + .WithMany("Donations") + .HasForeignKey("FundraiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Donations_dbo.Fundraisers_FundraiserId"); + + b.Navigation("Fundraiser"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.HasOne("Dsp.Data.Entities.Cause", "Cause") + .WithMany("Fundraisers") + .HasForeignKey("CauseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId"); + + b.Navigation("Cause"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemsToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("RoomToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderComment", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderComments") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderComments") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderComments_dbo.WorkOrders_WorkOrderId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriorityChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderPriority", "WorkOrderPriority") + .WithMany("WorkOrderPriorityChanges") + .HasForeignKey("WorkOrderPriorityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrderPriorities_WorkOrderPriorityId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderPriority"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatusChange", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.Members_UserId"); + + b.HasOne("Dsp.Data.Entities.WorkOrder", "WorkOrder") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrders_WorkOrderId"); + + b.HasOne("Dsp.Data.Entities.WorkOrderStatus", "WorkOrderStatus") + .WithMany("WorkOrderStatusChanges") + .HasForeignKey("WorkOrderStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrderStatusChanges_dbo.WorkOrderStatuses_WorkOrderStatusId"); + + b.Navigation("User"); + + b.Navigation("WorkOrder"); + + b.Navigation("WorkOrderStatus"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Navigation("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Navigation("InverseEnforcementChore"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Navigation("ChoreAssignments"); + + b.Navigation("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Navigation("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Navigation("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTakens"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Navigation("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ChoreAssignmentEnforcers"); + + b.Navigation("ChoreAssignmentGroupSigners"); + + b.Navigation("ChoreGroupToMembers"); + + b.Navigation("ClassesTakens"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("RoomToMembers"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ChoreGroups"); + + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Navigation("WorkOrderComments"); + + b.Navigation("WorkOrderPriorityChanges"); + + b.Navigation("WorkOrderStatusChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderPriority", b => + { + b.Navigation("WorkOrderPriorityChanges"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrderStatus", b => + { + b.Navigation("WorkOrderStatusChanges"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922140242_KeyCorrections.cs b/src/Dsp.Data/Migrations/20230922140242_KeyCorrections.cs new file mode 100644 index 00000000..bc042df1 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922140242_KeyCorrections.cs @@ -0,0 +1,108 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class KeyCorrections : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceAmendments_dbo.Semesters_SemesterId", + table: "ServiceEventAmendments"); + + migrationBuilder.CreateIndex( + name: "IX_ServiceHourAmendments_SemesterId", + table: "ServiceHourAmendments", + column: "SemesterId"); + + migrationBuilder.CreateIndex( + name: "IX_ServiceHourAmendments_UserId", + table: "ServiceHourAmendments", + column: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId", + table: "ServiceEventAmendments", + column: "SemesterId", + principalTable: "Semesters", + principalColumn: "SemesterId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId", + table: "ServiceHourAmendments", + column: "SemesterId", + principalTable: "Semesters", + principalColumn: "SemesterId", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId", + table: "ServiceEventAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId", + table: "ServiceHourAmendments"); + + migrationBuilder.DropIndex( + name: "IX_ServiceHourAmendments_SemesterId", + table: "ServiceHourAmendments"); + + migrationBuilder.DropIndex( + name: "IX_ServiceHourAmendments_UserId", + table: "ServiceHourAmendments"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceAmendments_dbo.Semesters_SemesterId", + table: "ServiceEventAmendments", + column: "SemesterId", + principalTable: "Semesters", + principalColumn: "SemesterId", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922193909_WorkOrderSimplification.Designer.cs b/src/Dsp.Data/Migrations/20230922193909_WorkOrderSimplification.Designer.cs new file mode 100644 index 00000000..c5558dc0 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922193909_WorkOrderSimplification.Designer.cs @@ -0,0 +1,2511 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922193909_WorkOrderSimplification")] + partial class WorkOrderSimplification + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Causes"); + + b.ToTable("Causes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.Property("Url") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id") + .HasName("PK_dbo.Chores"); + + b.HasIndex("TypeId"); + + b.ToTable("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CancelledOnCst") + .HasColumnType("datetime"); + + b.Property("ChoreId") + .HasColumnType("int"); + + b.Property("CreatedOnCst") + .HasColumnType("datetime"); + + b.Property("DueOnCst") + .HasColumnType("datetime"); + + b.Property("EnforcementChoreId") + .HasColumnType("int"); + + b.Property("EnforcerFeedback") + .HasColumnType("nvarchar(max)"); + + b.Property("EnforcerId") + .HasColumnType("int"); + + b.Property("EnforcerVerificationTimeCst") + .HasColumnType("datetime"); + + b.Property("EnforcerVerified") + .HasColumnType("bit"); + + b.Property("GroupCompleted") + .HasColumnType("bit"); + + b.Property("GroupCompletionTimeCst") + .HasColumnType("datetime"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("GroupSignerId") + .HasColumnType("int"); + + b.Property("IsCancelled") + .HasColumnType("bit"); + + b.Property("OpensOnCst") + .HasColumnType("datetime"); + + b.Property("PeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreAssignments"); + + b.HasIndex("ChoreId"); + + b.HasIndex("EnforcementChoreId"); + + b.HasIndex("EnforcerId"); + + b.HasIndex("GroupId"); + + b.HasIndex("GroupSignerId"); + + b.HasIndex("PeriodId"); + + b.ToTable("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroups"); + + b.HasIndex("SemesterId"); + + b.HasIndex("TypeId"); + + b.ToTable("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChoreGroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupToMembers"); + + b.HasIndex("ChoreGroupId"); + + b.HasIndex("UserId"); + + b.ToTable("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupTypes"); + + b.ToTable("ChoreGroupTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOnCst") + .HasColumnType("datetime"); + + b.Property("EndsOnCst") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.ChorePeriods"); + + b.ToTable("ChorePeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreTypes"); + + b.ToTable("ChoreTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FundraiserId") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("ReceivedOn") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Donations"); + + b.HasIndex(new[] { "FundraiserId" }, "IX_FundraiserId"); + + b.ToTable("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOn") + .HasColumnType("datetime"); + + b.Property("CauseId") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("DonationInstructions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("EndsOn") + .HasColumnType("datetime"); + + b.Property("Goal") + .HasColumnType("float"); + + b.Property("IsPledgeable") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Fundraisers"); + + b.HasIndex(new[] { "CauseId" }, "IX_CauseId"); + + b.ToTable("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PositionId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", null, t => + { + t.Property("PositionId") + .HasColumnName("PositionId1"); + }); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.HasOne("Dsp.Data.Entities.ChoreType", "Type") + .WithMany("Chores") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Chores_dbo.ChoreTypes_TypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.HasOne("Dsp.Data.Entities.Chore", "Chore") + .WithMany("ChoreAssignments") + .HasForeignKey("ChoreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Chores_ChoreId"); + + b.HasOne("Dsp.Data.Entities.ChoreAssignment", "EnforcementChore") + .WithMany("InverseEnforcementChore") + .HasForeignKey("EnforcementChoreId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreAssignments_EnforcementChoreId"); + + b.HasOne("Dsp.Data.Entities.Member", "Enforcer") + .WithMany("ChoreAssignmentEnforcers") + .HasForeignKey("EnforcerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_EnforcerId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroup", "Group") + .WithMany("ChoreAssignments") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreGroups_GroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "GroupSigner") + .WithMany("ChoreAssignmentGroupSigners") + .HasForeignKey("GroupSignerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_GroupSignerId"); + + b.HasOne("Dsp.Data.Entities.ChorePeriod", "Period") + .WithMany("ChoreAssignments") + .HasForeignKey("PeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChorePeriods_PeriodId"); + + b.Navigation("Chore"); + + b.Navigation("EnforcementChore"); + + b.Navigation("Enforcer"); + + b.Navigation("Group"); + + b.Navigation("GroupSigner"); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ChoreGroups") + .HasForeignKey("SemesterId") + .HasConstraintName("FK_dbo.ChoreGroups_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroupType", "Type") + .WithMany("ChoreGroups") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroups_dbo.ChoreGroupTypes_TypeId"); + + b.Navigation("Semester"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.HasOne("Dsp.Data.Entities.ChoreGroup", "ChoreGroup") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("ChoreGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.ChoreGroups_ChoreGroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.Members_UserId"); + + b.Navigation("ChoreGroup"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.HasOne("Dsp.Data.Entities.Fundraiser", "Fundraiser") + .WithMany("Donations") + .HasForeignKey("FundraiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Donations_dbo.Fundraisers_FundraiserId"); + + b.Navigation("Fundraiser"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.HasOne("Dsp.Data.Entities.Cause", "Cause") + .WithMany("Fundraisers") + .HasForeignKey("CauseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId"); + + b.Navigation("Cause"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Navigation("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Navigation("InverseEnforcementChore"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Navigation("ChoreAssignments"); + + b.Navigation("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Navigation("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Navigation("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Navigation("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ChoreAssignmentEnforcers"); + + b.Navigation("ChoreAssignmentGroupSigners"); + + b.Navigation("ChoreGroupToMembers"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ChoreGroups"); + + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922193909_WorkOrderSimplification.cs b/src/Dsp.Data/Migrations/20230922193909_WorkOrderSimplification.cs new file mode 100644 index 00000000..08598067 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922193909_WorkOrderSimplification.cs @@ -0,0 +1,275 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class WorkOrderSimplification : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateIndex("IX_WorkOrders_UserId", "WorkOrders", "UserId"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "WorkOrders", + type: "int", + nullable: false, + defaultValue: 0, + oldClrType: typeof(int), + oldType: "int", + oldNullable: true); + + migrationBuilder.AddColumn( + name: "ClosedOn", + table: "WorkOrders", + type: "datetime", + nullable: true); + + migrationBuilder.AddColumn( + name: "CreatedOn", + table: "WorkOrders", + type: "datetime", + nullable: true); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.Sql(@" + UPDATE W + SET W.CreatedOn = ( + SELECT TOP 1 S.ChangedOn + FROM WorkOrderStatusChanges S + WHERE S.WorkOrderId = W.WorkOrderId + ORDER BY S.ChangedOn + ) + FROM WorkOrders as W"); + + migrationBuilder.Sql(@" + UPDATE W + SET W.ClosedOn = S.ChangedOn + FROM WorkOrders as W + JOIN WorkOrderStatusChanges as S + ON S.WorkOrderId = W.WorkOrderId AND S.WorkOrderStatusId = 5"); + + migrationBuilder.DropTable( + name: "WorkOrderComments"); + + migrationBuilder.DropTable( + name: "WorkOrderPriorityChanges"); + + migrationBuilder.DropTable( + name: "WorkOrderStatusChanges"); + + migrationBuilder.DropTable( + name: "WorkOrderPriorities"); + + migrationBuilder.DropTable( + name: "WorkOrderStatuses"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex("IX_WorkOrders_UserId", "WorkOrders"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders"); + + migrationBuilder.DropColumn( + name: "ClosedOn", + table: "WorkOrders"); + + migrationBuilder.DropColumn( + name: "CreatedOn", + table: "WorkOrders"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "WorkOrders", + type: "int", + nullable: true, + oldClrType: typeof(int), + oldType: "int"); + + migrationBuilder.CreateTable( + name: "WorkOrderComments", + columns: table => new + { + WorkOrderCommentId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "int", nullable: true), + WorkOrderId = table.Column(type: "int", nullable: false), + SubmittedOn = table.Column(type: "datetime", nullable: false), + Text = table.Column(type: "nvarchar(3000)", maxLength: 3000, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.WorkOrderComments", x => x.WorkOrderCommentId); + table.ForeignKey( + name: "FK_dbo.WorkOrderComments_dbo.Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId"); + table.ForeignKey( + name: "FK_dbo.WorkOrderComments_dbo.WorkOrders_WorkOrderId", + column: x => x.WorkOrderId, + principalTable: "WorkOrders", + principalColumn: "WorkOrderId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "WorkOrderPriorities", + columns: table => new + { + WorkOrderPriorityId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.WorkOrderPriorities", x => x.WorkOrderPriorityId); + }); + + migrationBuilder.CreateTable( + name: "WorkOrderStatuses", + columns: table => new + { + WorkOrderStatusId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.WorkOrderStatuses", x => x.WorkOrderStatusId); + }); + + migrationBuilder.CreateTable( + name: "WorkOrderPriorityChanges", + columns: table => new + { + WorkOrderPriorityChangeId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "int", nullable: true), + WorkOrderId = table.Column(type: "int", nullable: false), + WorkOrderPriorityId = table.Column(type: "int", nullable: false), + ChangedOn = table.Column(type: "datetime", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.WorkOrderPriorityChanges", x => x.WorkOrderPriorityChangeId); + table.ForeignKey( + name: "FK_dbo.WorkOrderPriorityChanges_dbo.Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId"); + table.ForeignKey( + name: "FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrderPriorities_WorkOrderPriorityId", + column: x => x.WorkOrderPriorityId, + principalTable: "WorkOrderPriorities", + principalColumn: "WorkOrderPriorityId", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_dbo.WorkOrderPriorityChanges_dbo.WorkOrders_WorkOrderId", + column: x => x.WorkOrderId, + principalTable: "WorkOrders", + principalColumn: "WorkOrderId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "WorkOrderStatusChanges", + columns: table => new + { + WorkOrderStatusChangeId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "int", nullable: true), + WorkOrderId = table.Column(type: "int", nullable: false), + WorkOrderStatusId = table.Column(type: "int", nullable: false), + ChangedOn = table.Column(type: "datetime", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.WorkOrderStatusChanges", x => x.WorkOrderStatusChangeId); + table.ForeignKey( + name: "FK_dbo.WorkOrderStatusChanges_dbo.Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId"); + table.ForeignKey( + name: "FK_dbo.WorkOrderStatusChanges_dbo.WorkOrderStatuses_WorkOrderStatusId", + column: x => x.WorkOrderStatusId, + principalTable: "WorkOrderStatuses", + principalColumn: "WorkOrderStatusId", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_dbo.WorkOrderStatusChanges_dbo.WorkOrders_WorkOrderId", + column: x => x.WorkOrderId, + principalTable: "WorkOrders", + principalColumn: "WorkOrderId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderComments_UserId", + table: "WorkOrderComments", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderComments_WorkOrderId", + table: "WorkOrderComments", + column: "WorkOrderId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderPriorityChanges_UserId", + table: "WorkOrderPriorityChanges", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderPriorityChanges_WorkOrderId", + table: "WorkOrderPriorityChanges", + column: "WorkOrderId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderPriorityChanges_WorkOrderPriorityId", + table: "WorkOrderPriorityChanges", + column: "WorkOrderPriorityId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderStatusChanges_UserId", + table: "WorkOrderStatusChanges", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderStatusChanges_WorkOrderId", + table: "WorkOrderStatusChanges", + column: "WorkOrderId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkOrderStatusChanges_WorkOrderStatusId", + table: "WorkOrderStatusChanges", + column: "WorkOrderStatusId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922194342_WorkOrderNullableChange.Designer.cs b/src/Dsp.Data/Migrations/20230922194342_WorkOrderNullableChange.Designer.cs new file mode 100644 index 00000000..b46d536a --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922194342_WorkOrderNullableChange.Designer.cs @@ -0,0 +1,2511 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922194342_WorkOrderNullableChange")] + partial class WorkOrderNullableChange + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Causes"); + + b.ToTable("Causes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.Property("Url") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id") + .HasName("PK_dbo.Chores"); + + b.HasIndex("TypeId"); + + b.ToTable("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CancelledOnCst") + .HasColumnType("datetime"); + + b.Property("ChoreId") + .HasColumnType("int"); + + b.Property("CreatedOnCst") + .HasColumnType("datetime"); + + b.Property("DueOnCst") + .HasColumnType("datetime"); + + b.Property("EnforcementChoreId") + .HasColumnType("int"); + + b.Property("EnforcerFeedback") + .HasColumnType("nvarchar(max)"); + + b.Property("EnforcerId") + .HasColumnType("int"); + + b.Property("EnforcerVerificationTimeCst") + .HasColumnType("datetime"); + + b.Property("EnforcerVerified") + .HasColumnType("bit"); + + b.Property("GroupCompleted") + .HasColumnType("bit"); + + b.Property("GroupCompletionTimeCst") + .HasColumnType("datetime"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("GroupSignerId") + .HasColumnType("int"); + + b.Property("IsCancelled") + .HasColumnType("bit"); + + b.Property("OpensOnCst") + .HasColumnType("datetime"); + + b.Property("PeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreAssignments"); + + b.HasIndex("ChoreId"); + + b.HasIndex("EnforcementChoreId"); + + b.HasIndex("EnforcerId"); + + b.HasIndex("GroupId"); + + b.HasIndex("GroupSignerId"); + + b.HasIndex("PeriodId"); + + b.ToTable("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroups"); + + b.HasIndex("SemesterId"); + + b.HasIndex("TypeId"); + + b.ToTable("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChoreGroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupToMembers"); + + b.HasIndex("ChoreGroupId"); + + b.HasIndex("UserId"); + + b.ToTable("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreGroupTypes"); + + b.ToTable("ChoreGroupTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOnCst") + .HasColumnType("datetime"); + + b.Property("EndsOnCst") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.ChorePeriods"); + + b.ToTable("ChorePeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id") + .HasName("PK_dbo.ChoreTypes"); + + b.ToTable("ChoreTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FundraiserId") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("ReceivedOn") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Donations"); + + b.HasIndex(new[] { "FundraiserId" }, "IX_FundraiserId"); + + b.ToTable("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOn") + .HasColumnType("datetime"); + + b.Property("CauseId") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("DonationInstructions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("EndsOn") + .HasColumnType("datetime"); + + b.Property("Goal") + .HasColumnType("float"); + + b.Property("IsPledgeable") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Fundraisers"); + + b.HasIndex(new[] { "CauseId" }, "IX_CauseId"); + + b.ToTable("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PositionId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", null, t => + { + t.Property("PositionId") + .HasColumnName("PositionId1"); + }); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.HasOne("Dsp.Data.Entities.ChoreType", "Type") + .WithMany("Chores") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Chores_dbo.ChoreTypes_TypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.HasOne("Dsp.Data.Entities.Chore", "Chore") + .WithMany("ChoreAssignments") + .HasForeignKey("ChoreId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Chores_ChoreId"); + + b.HasOne("Dsp.Data.Entities.ChoreAssignment", "EnforcementChore") + .WithMany("InverseEnforcementChore") + .HasForeignKey("EnforcementChoreId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreAssignments_EnforcementChoreId"); + + b.HasOne("Dsp.Data.Entities.Member", "Enforcer") + .WithMany("ChoreAssignmentEnforcers") + .HasForeignKey("EnforcerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_EnforcerId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroup", "Group") + .WithMany("ChoreAssignments") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChoreGroups_GroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "GroupSigner") + .WithMany("ChoreAssignmentGroupSigners") + .HasForeignKey("GroupSignerId") + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.Members_GroupSignerId"); + + b.HasOne("Dsp.Data.Entities.ChorePeriod", "Period") + .WithMany("ChoreAssignments") + .HasForeignKey("PeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreAssignments_dbo.ChorePeriods_PeriodId"); + + b.Navigation("Chore"); + + b.Navigation("EnforcementChore"); + + b.Navigation("Enforcer"); + + b.Navigation("Group"); + + b.Navigation("GroupSigner"); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ChoreGroups") + .HasForeignKey("SemesterId") + .HasConstraintName("FK_dbo.ChoreGroups_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.ChoreGroupType", "Type") + .WithMany("ChoreGroups") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroups_dbo.ChoreGroupTypes_TypeId"); + + b.Navigation("Semester"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupToMember", b => + { + b.HasOne("Dsp.Data.Entities.ChoreGroup", "ChoreGroup") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("ChoreGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.ChoreGroups_ChoreGroupId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ChoreGroupToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ChoreGroupToMembers_dbo.Members_UserId"); + + b.Navigation("ChoreGroup"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.HasOne("Dsp.Data.Entities.Fundraiser", "Fundraiser") + .WithMany("Donations") + .HasForeignKey("FundraiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Donations_dbo.Fundraisers_FundraiserId"); + + b.Navigation("Fundraiser"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.HasOne("Dsp.Data.Entities.Cause", "Cause") + .WithMany("Fundraisers") + .HasForeignKey("CauseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId"); + + b.Navigation("Cause"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Navigation("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Chore", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreAssignment", b => + { + b.Navigation("InverseEnforcementChore"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroup", b => + { + b.Navigation("ChoreAssignments"); + + b.Navigation("ChoreGroupToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreGroupType", b => + { + b.Navigation("ChoreGroups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChorePeriod", b => + { + b.Navigation("ChoreAssignments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ChoreType", b => + { + b.Navigation("Chores"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Navigation("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ChoreAssignmentEnforcers"); + + b.Navigation("ChoreAssignmentGroupSigners"); + + b.Navigation("ChoreGroupToMembers"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ChoreGroups"); + + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922194342_WorkOrderNullableChange.cs b/src/Dsp.Data/Migrations/20230922194342_WorkOrderNullableChange.cs new file mode 100644 index 00000000..5ea0dbeb --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922194342_WorkOrderNullableChange.cs @@ -0,0 +1,37 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class WorkOrderNullableChange : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "CreatedOn", + table: "WorkOrders", + type: "datetime", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + oldClrType: typeof(DateTime), + oldType: "datetime", + oldNullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "CreatedOn", + table: "WorkOrders", + type: "datetime", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "datetime"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922194539_RemoveChores.Designer.cs b/src/Dsp.Data/Migrations/20230922194539_RemoveChores.Designer.cs new file mode 100644 index 00000000..7e944362 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922194539_RemoveChores.Designer.cs @@ -0,0 +1,2149 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922194539_RemoveChores")] + partial class RemoveChores + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Causes"); + + b.ToTable("Causes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FundraiserId") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("ReceivedOn") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Donations"); + + b.HasIndex(new[] { "FundraiserId" }, "IX_FundraiserId"); + + b.ToTable("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BeginsOn") + .HasColumnType("datetime"); + + b.Property("CauseId") + .HasColumnType("int"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("DonationInstructions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasDefaultValueSql("('')"); + + b.Property("EndsOn") + .HasColumnType("datetime"); + + b.Property("Goal") + .HasColumnType("float"); + + b.Property("IsPledgeable") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id") + .HasName("PK_dbo.Fundraisers"); + + b.HasIndex(new[] { "CauseId" }, "IX_CauseId"); + + b.ToTable("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PositionId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", null, t => + { + t.Property("PositionId") + .HasColumnName("PositionId1"); + }); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Donation", b => + { + b.HasOne("Dsp.Data.Entities.Fundraiser", "Fundraiser") + .WithMany("Donations") + .HasForeignKey("FundraiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Donations_dbo.Fundraisers_FundraiserId"); + + b.Navigation("Fundraiser"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.HasOne("Dsp.Data.Entities.Cause", "Cause") + .WithMany("Fundraisers") + .HasForeignKey("CauseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId"); + + b.Navigation("Cause"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Cause", b => + { + b.Navigation("Fundraisers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Fundraiser", b => + { + b.Navigation("Donations"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922194539_RemoveChores.cs b/src/Dsp.Data/Migrations/20230922194539_RemoveChores.cs new file mode 100644 index 00000000..a7eba2da --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922194539_RemoveChores.cs @@ -0,0 +1,271 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RemoveChores : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ChoreAssignments"); + + migrationBuilder.DropTable( + name: "ChoreGroupToMembers"); + + migrationBuilder.DropTable( + name: "ChorePeriods"); + + migrationBuilder.DropTable( + name: "Chores"); + + migrationBuilder.DropTable( + name: "ChoreGroups"); + + migrationBuilder.DropTable( + name: "ChoreTypes"); + + migrationBuilder.DropTable( + name: "ChoreGroupTypes"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ChoreGroupTypes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.ChoreGroupTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ChorePeriods", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + BeginsOnCst = table.Column(type: "datetime", nullable: false), + EndsOnCst = table.Column(type: "datetime", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.ChorePeriods", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ChoreTypes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.ChoreTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ChoreGroups", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + SemesterId = table.Column(type: "int", nullable: true), + TypeId = table.Column(type: "int", nullable: false), + AvatarPath = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.ChoreGroups", x => x.Id); + table.ForeignKey( + name: "FK_dbo.ChoreGroups_dbo.ChoreGroupTypes_TypeId", + column: x => x.TypeId, + principalTable: "ChoreGroupTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_dbo.ChoreGroups_dbo.Semesters_SemesterId", + column: x => x.SemesterId, + principalTable: "Semesters", + principalColumn: "SemesterId"); + }); + + migrationBuilder.CreateTable( + name: "Chores", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + TypeId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Title = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Url = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.Chores", x => x.Id); + table.ForeignKey( + name: "FK_dbo.Chores_dbo.ChoreTypes_TypeId", + column: x => x.TypeId, + principalTable: "ChoreTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ChoreGroupToMembers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ChoreGroupId = table.Column(type: "int", nullable: false), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.ChoreGroupToMembers", x => x.Id); + table.ForeignKey( + name: "FK_dbo.ChoreGroupToMembers_dbo.ChoreGroups_ChoreGroupId", + column: x => x.ChoreGroupId, + principalTable: "ChoreGroups", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_dbo.ChoreGroupToMembers_dbo.Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ChoreAssignments", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ChoreId = table.Column(type: "int", nullable: false), + EnforcementChoreId = table.Column(type: "int", nullable: true), + EnforcerId = table.Column(type: "int", nullable: true), + GroupId = table.Column(type: "int", nullable: false), + GroupSignerId = table.Column(type: "int", nullable: true), + PeriodId = table.Column(type: "int", nullable: false), + CancelledOnCst = table.Column(type: "datetime", nullable: false), + CreatedOnCst = table.Column(type: "datetime", nullable: false), + DueOnCst = table.Column(type: "datetime", nullable: false), + EnforcerFeedback = table.Column(type: "nvarchar(max)", nullable: true), + EnforcerVerificationTimeCst = table.Column(type: "datetime", nullable: false), + EnforcerVerified = table.Column(type: "bit", nullable: true), + GroupCompleted = table.Column(type: "bit", nullable: false), + GroupCompletionTimeCst = table.Column(type: "datetime", nullable: false), + IsCancelled = table.Column(type: "bit", nullable: false), + OpensOnCst = table.Column(type: "datetime", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.ChoreAssignments", x => x.Id); + table.ForeignKey( + name: "FK_dbo.ChoreAssignments_dbo.ChoreAssignments_EnforcementChoreId", + column: x => x.EnforcementChoreId, + principalTable: "ChoreAssignments", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_dbo.ChoreAssignments_dbo.ChoreGroups_GroupId", + column: x => x.GroupId, + principalTable: "ChoreGroups", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_dbo.ChoreAssignments_dbo.ChorePeriods_PeriodId", + column: x => x.PeriodId, + principalTable: "ChorePeriods", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_dbo.ChoreAssignments_dbo.Chores_ChoreId", + column: x => x.ChoreId, + principalTable: "Chores", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_dbo.ChoreAssignments_dbo.Members_EnforcerId", + column: x => x.EnforcerId, + principalTable: "Members", + principalColumn: "UserId"); + table.ForeignKey( + name: "FK_dbo.ChoreAssignments_dbo.Members_GroupSignerId", + column: x => x.GroupSignerId, + principalTable: "Members", + principalColumn: "UserId"); + }); + + migrationBuilder.CreateIndex( + name: "IX_ChoreAssignments_ChoreId", + table: "ChoreAssignments", + column: "ChoreId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreAssignments_EnforcementChoreId", + table: "ChoreAssignments", + column: "EnforcementChoreId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreAssignments_EnforcerId", + table: "ChoreAssignments", + column: "EnforcerId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreAssignments_GroupId", + table: "ChoreAssignments", + column: "GroupId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreAssignments_GroupSignerId", + table: "ChoreAssignments", + column: "GroupSignerId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreAssignments_PeriodId", + table: "ChoreAssignments", + column: "PeriodId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreGroups_SemesterId", + table: "ChoreGroups", + column: "SemesterId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreGroups_TypeId", + table: "ChoreGroups", + column: "TypeId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreGroupToMembers_ChoreGroupId", + table: "ChoreGroupToMembers", + column: "ChoreGroupId"); + + migrationBuilder.CreateIndex( + name: "IX_ChoreGroupToMembers_UserId", + table: "ChoreGroupToMembers", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_Chores_TypeId", + table: "Chores", + column: "TypeId"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922194821_RemoveCausesAndFundraisers.Designer.cs b/src/Dsp.Data/Migrations/20230922194821_RemoveCausesAndFundraisers.Designer.cs new file mode 100644 index 00000000..7b450bc4 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922194821_RemoveCausesAndFundraisers.Designer.cs @@ -0,0 +1,1995 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922194821_RemoveCausesAndFundraisers")] + partial class RemoveCausesAndFundraisers + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEndDateUtc") + .HasColumnType("datetime"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("Pin") + .HasColumnType("int"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("ShirtSize") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PositionId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", null, t => + { + t.Property("PositionId") + .HasColumnName("PositionId1"); + }); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922194821_RemoveCausesAndFundraisers.cs b/src/Dsp.Data/Migrations/20230922194821_RemoveCausesAndFundraisers.cs new file mode 100644 index 00000000..0cb6200b --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922194821_RemoveCausesAndFundraisers.cs @@ -0,0 +1,105 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RemoveCausesAndFundraisers : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Donations"); + + migrationBuilder.DropTable( + name: "Fundraisers"); + + migrationBuilder.DropTable( + name: "Causes"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Causes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Description = table.Column(type: "nvarchar(max)", nullable: false), + Name = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.Causes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Fundraisers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + CauseId = table.Column(type: "int", nullable: false), + BeginsOn = table.Column(type: "datetime", nullable: false), + Description = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false, defaultValueSql: "('')"), + DonationInstructions = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false, defaultValueSql: "('')"), + EndsOn = table.Column(type: "datetime", nullable: true), + Goal = table.Column(type: "float", nullable: false), + IsPledgeable = table.Column(type: "bit", nullable: false), + IsPublic = table.Column(type: "bit", nullable: false), + Name = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.Fundraisers", x => x.Id); + table.ForeignKey( + name: "FK_dbo.Fundraisers_dbo.Philanthropies_PhilanthropyId", + column: x => x.CauseId, + principalTable: "Causes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Donations", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FundraiserId = table.Column(type: "int", nullable: false), + Amount = table.Column(type: "float", nullable: false), + CreatedOn = table.Column(type: "datetime", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: true), + FirstName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + LastName = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: true), + ReceivedOn = table.Column(type: "datetime", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.Donations", x => x.Id); + table.ForeignKey( + name: "FK_dbo.Donations_dbo.Fundraisers_FundraiserId", + column: x => x.FundraiserId, + principalTable: "Fundraisers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_FundraiserId", + table: "Donations", + column: "FundraiserId"); + + migrationBuilder.CreateIndex( + name: "IX_CauseId", + table: "Fundraisers", + column: "CauseId"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922195125_RemoveUnusedMemberProperties.Designer.cs b/src/Dsp.Data/Migrations/20230922195125_RemoveUnusedMemberProperties.Designer.cs new file mode 100644 index 00000000..dad48c2b --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922195125_RemoveUnusedMemberProperties.Designer.cs @@ -0,0 +1,1986 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922195125_RemoveUnusedMemberProperties")] + partial class RemoveUnusedMemberProperties + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber1") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PositionId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", null, t => + { + t.Property("PositionId") + .HasColumnName("PositionId1"); + }); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("PhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("PhoneNumbers"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922195125_RemoveUnusedMemberProperties.cs b/src/Dsp.Data/Migrations/20230922195125_RemoveUnusedMemberProperties.cs new file mode 100644 index 00000000..071d371e --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922195125_RemoveUnusedMemberProperties.cs @@ -0,0 +1,49 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RemoveUnusedMemberProperties : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LockoutEndDateUtc", + table: "Members"); + + migrationBuilder.DropColumn( + name: "Pin", + table: "Members"); + + migrationBuilder.DropColumn( + name: "ShirtSize", + table: "Members"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "LockoutEndDateUtc", + table: "Members", + type: "datetime", + nullable: true); + + migrationBuilder.AddColumn( + name: "Pin", + table: "Members", + type: "int", + nullable: true); + + migrationBuilder.AddColumn( + name: "ShirtSize", + table: "Members", + type: "nvarchar(max)", + nullable: true); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922201701_RemovePositionId1.Designer.cs b/src/Dsp.Data/Migrations/20230922201701_RemovePositionId1.Designer.cs new file mode 100644 index 00000000..828a0bc6 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922201701_RemovePositionId1.Designer.cs @@ -0,0 +1,1979 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230922201701_RemovePositionId1")] + partial class RemovePositionId1 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ExtraPhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ReportedBy") + .HasColumnType("int"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("ReportedBy"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTakens") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ExtraPhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ExtraPhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "ReportedByNavigation") + .WithMany("IncidentReports") + .HasForeignKey("ReportedBy") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("ReportedByNavigation"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MajorToMembers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("MealItemsToPeriods") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("MealItemVotes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("InverseBigBro") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("Members") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Members") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("RoomToMembers") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "ScholarshipSubmission") + .WithMany("ScholarshipAnswers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("ScholarshipQuestion"); + + b.Navigation("ScholarshipSubmission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "ScholarshipType") + .WithMany("ScholarshipApps") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("ScholarshipType"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "ScholarshipQuestion") + .WithMany("ScholarshipAppQuestions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("ScholarshipApp"); + + b.Navigation("ScholarshipQuestion"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "ScholarshipApp") + .WithMany("ScholarshipSubmissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("ScholarshipApp"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("SoberSignups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("MealItemVotes"); + + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("MealItemsToPeriods"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("ExtraPhoneNumbers"); + + b.Navigation("IncidentReports"); + + b.Navigation("InverseBigBro"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("MajorToMembers"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("RoomToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("ScholarshipAppQuestions"); + + b.Navigation("ScholarshipSubmissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("ScholarshipAnswers"); + + b.Navigation("ScholarshipAppQuestions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("ScholarshipAnswers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("ScholarshipApps"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTakens"); + + b.Navigation("Leaders"); + + b.Navigation("Members"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("SoberSignups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230922201701_RemovePositionId1.cs b/src/Dsp.Data/Migrations/20230922201701_RemovePositionId1.cs new file mode 100644 index 00000000..efb88f35 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230922201701_RemovePositionId1.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RemovePositionId1 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "PositionId1", + table: "Positions"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "PositionId1", + table: "Positions", + type: "int", + nullable: false, + defaultValue: 0); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230923151442_RenameIncidentReportColumn.Designer.cs b/src/Dsp.Data/Migrations/20230923151442_RenameIncidentReportColumn.Designer.cs new file mode 100644 index 00000000..b4b699fa --- /dev/null +++ b/src/Dsp.Data/Migrations/20230923151442_RenameIncidentReportColumn.Designer.cs @@ -0,0 +1,1979 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230923151442_RenameIncidentReportColumn")] + partial class RenameIncidentReportColumn + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ExtraPhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ExtraPhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ExtraPhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("ExtraPhoneNumbers"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230923151442_RenameIncidentReportColumn.cs b/src/Dsp.Data/Migrations/20230923151442_RenameIncidentReportColumn.cs new file mode 100644 index 00000000..3d9d071a --- /dev/null +++ b/src/Dsp.Data/Migrations/20230923151442_RenameIncidentReportColumn.cs @@ -0,0 +1,37 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RenameIncidentReportColumn : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "ReportedBy", + table: "IncidentReports", + newName: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_IncidentReports_UserId", + table: "IncidentReports", + column: "UserId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_IncidentReports_UserId", + table: "IncidentReports"); + + migrationBuilder.RenameColumn( + name: "UserId", + table: "IncidentReports", + newName: "ReportedBy"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230923212819_MigrateUsernamesAndEmails.Designer.cs b/src/Dsp.Data/Migrations/20230923212819_MigrateUsernamesAndEmails.Designer.cs new file mode 100644 index 00000000..7bbe1214 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230923212819_MigrateUsernamesAndEmails.Designer.cs @@ -0,0 +1,1979 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230923212819_MigrateUsernamesAndEmails")] + partial class MigrateUsernamesAndEmails + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ExtraPhoneNumber", b => + { + b.Property("PhoneNumberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PhoneNumberId")); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)") + .HasColumnName("PhoneNumber"); + + b.Property("Type") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("PhoneNumberId") + .HasName("PK_dbo.PhoneNumbers"); + + b.HasIndex("UserId"); + + b.ToTable("PhoneNumbers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ExtraPhoneNumber", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ExtraPhoneNumbers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PhoneNumbers_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("ExtraPhoneNumbers"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230923212819_MigrateUsernamesAndEmails.cs b/src/Dsp.Data/Migrations/20230923212819_MigrateUsernamesAndEmails.cs new file mode 100644 index 00000000..5e75f51f --- /dev/null +++ b/src/Dsp.Data/Migrations/20230923212819_MigrateUsernamesAndEmails.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class MigrateUsernamesAndEmails : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql(@" + UPDATE Members + SET NormalizedEmail = UPPER(Email)"); + + migrationBuilder.Sql(@" + UPDATE Members + SET NormalizedUserName = UPPER(UserName)"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql(@" + UPDATE Members + SET NormalizedEmail = NULL"); + + migrationBuilder.Sql(@" + UPDATE Members + SET NormalizedUserName = NULL"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230923215851_MigratePhoneNumbers.Designer.cs b/src/Dsp.Data/Migrations/20230923215851_MigratePhoneNumbers.Designer.cs new file mode 100644 index 00000000..853c27cb --- /dev/null +++ b/src/Dsp.Data/Migrations/20230923215851_MigratePhoneNumbers.Designer.cs @@ -0,0 +1,1949 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230923215851_MigratePhoneNumbers")] + partial class MigratePhoneNumbers + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("Leaders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("MemberStatuses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Leader", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Position") + .WithMany("Leaders") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Leaders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Position"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.MemberStatus", "Status") + .WithMany("Members") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Position", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.Member", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("Leaders"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberStatus", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Leaders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230923215851_MigratePhoneNumbers.cs b/src/Dsp.Data/Migrations/20230923215851_MigratePhoneNumbers.cs new file mode 100644 index 00000000..5e302c0b --- /dev/null +++ b/src/Dsp.Data/Migrations/20230923215851_MigratePhoneNumbers.cs @@ -0,0 +1,97 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class MigratePhoneNumbers : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "EmergencyContact", + table: "Members", + type: "nvarchar(50)", + maxLength: 50, + nullable: true); + + migrationBuilder.AddColumn( + name: "EmergencyPhoneNumber", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "EmergencyRelation", + table: "Members", + type: "nvarchar(50)", + maxLength: 50, + nullable: true); + + migrationBuilder.Sql(@" + UPDATE M + SET M.PhoneNumber = ( + SELECT TOP 1 P.PhoneNumber + FROM PhoneNumbers as P + WHERE P.UserId = M.UserId AND P.Type = 'Mobile' + ) + FROM Members as M"); + + migrationBuilder.Sql(@" + UPDATE M + SET M.EmergencyPhoneNumber = ( + SELECT TOP 1 P.PhoneNumber + FROM PhoneNumbers as P + WHERE P.UserId = M.UserId AND P.Type = 'Emergency' + ) + FROM Members as M"); + + migrationBuilder.DropTable( + name: "PhoneNumbers"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "EmergencyContact", + table: "Members"); + + migrationBuilder.DropColumn( + name: "EmergencyPhoneNumber", + table: "Members"); + + migrationBuilder.DropColumn( + name: "EmergencyRelation", + table: "Members"); + + migrationBuilder.CreateTable( + name: "PhoneNumbers", + columns: table => new + { + PhoneNumberId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "int", nullable: false), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.PhoneNumbers", x => x.PhoneNumberId); + table.ForeignKey( + name: "FK_dbo.PhoneNumbers_dbo.Members_UserId", + column: x => x.UserId, + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_PhoneNumbers_UserId", + table: "PhoneNumbers", + column: "UserId"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20230924031734_RenameUserAndRoleTables.Designer.cs b/src/Dsp.Data/Migrations/20230924031734_RenameUserAndRoleTables.Designer.cs new file mode 100644 index 00000000..2c65ec9e --- /dev/null +++ b/src/Dsp.Data/Migrations/20230924031734_RenameUserAndRoleTables.Designer.cs @@ -0,0 +1,1949 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20230924031734_RenameUserAndRoleTables")] + partial class RenameUserAndRoleTables + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("Roles", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Users", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("UserRoles", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("UserTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.User", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.UserType", "Status") + .WithMany("Users") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserRole", b => + { + b.HasOne("Dsp.Data.Entities.Role", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Dsp.Data.Entities.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Role", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20230924031734_RenameUserAndRoleTables.cs b/src/Dsp.Data/Migrations/20230924031734_RenameUserAndRoleTables.cs new file mode 100644 index 00000000..944a7375 --- /dev/null +++ b/src/Dsp.Data/Migrations/20230924031734_RenameUserAndRoleTables.cs @@ -0,0 +1,539 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RenameUserAndRoleTables : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetRoleClaims_Positions_RoleId", + table: "AspNetRoleClaims"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetUserClaims_Members_UserId", + table: "AspNetUserClaims"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetUserLogins_Members_UserId", + table: "AspNetUserLogins"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetUserTokens_Members_UserId", + table: "AspNetUserTokens"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders"); + + migrationBuilder.RenameTable( + name: "Leaders", + newName: "UserRoles"); + + migrationBuilder.RenameTable( + name: "Positions", + newName: "Roles"); + + migrationBuilder.RenameTable( + name: "Members", + newName: "Users"); + + migrationBuilder.RenameTable( + name: "MemberStatuses", + newName: "UserTypes"); + + migrationBuilder.CreateIndex( + name: "IX_UserRoles_LeaderId", + table: "UserRoles", + column: "LeaderId"); + + migrationBuilder.CreateIndex( + name: "IX_UserRoles_SemesterId", + table: "UserRoles", + column: "SemesterId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_BigBroId", + table: "Users", + column: "BigBroId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_ExpectedGraduationId", + table: "Users", + column: "ExpectedGraduationId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_PledgeClassId", + table: "Users", + column: "PledgeClassId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_StatusId", + table: "Users", + column: "StatusId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetRoleClaims_Roles_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "Roles", + principalColumn: "PositionId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetUserClaims_Users_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetUserLogins_Users_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetUserTokens_Users_UserId", + table: "AspNetUserTokens", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents", + column: "SubmitterId", + principalTable: "Users", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetRoleClaims_Roles_RoleId", + table: "AspNetRoleClaims"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetUserClaims_Users_UserId", + table: "AspNetUserClaims"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetUserLogins_Users_UserId", + table: "AspNetUserLogins"); + + migrationBuilder.DropForeignKey( + name: "FK_AspNetUserTokens_Users_UserId", + table: "AspNetUserTokens"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders"); + + migrationBuilder.RenameTable( + name: "UserRoles", + newName: "Leaders"); + + migrationBuilder.RenameTable( + name: "Roles", + newName: "Positions"); + + migrationBuilder.RenameTable( + name: "Users", + newName: "Members"); + + migrationBuilder.RenameTable( + name: "UserTypes", + newName: "MemberStatuses"); + + migrationBuilder.CreateIndex( + name: "IX_Leaders_LeaderId", + table: "Leaders", + column: "LeaderId"); + + migrationBuilder.CreateIndex( + name: "IX_Leaders_SemesterId", + table: "Leaders", + column: "SemesterId"); + + migrationBuilder.CreateIndex( + name: "IX_Members_BigBroId", + table: "Members", + column: "BigBroId"); + + migrationBuilder.CreateIndex( + name: "IX_Members_ExpectedGraduationId", + table: "Members", + column: "ExpectedGraduationId"); + + migrationBuilder.CreateIndex( + name: "IX_Members_PledgeClassId", + table: "Members", + column: "PledgeClassId"); + + migrationBuilder.CreateIndex( + name: "IX_Members_StatusId", + table: "Members", + column: "StatusId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetRoleClaims_Positions_RoleId", + table: "AspNetRoleClaims", + column: "RoleId", + principalTable: "Positions", + principalColumn: "PositionId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetUserClaims_Members_UserId", + table: "AspNetUserClaims", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetUserLogins_Members_UserId", + table: "AspNetUserLogins", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetUserTokens_Members_UserId", + table: "AspNetUserTokens", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents", + column: "SubmitterId", + principalTable: "Members", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029193939_TemporarilyRemoveIdentityInheritance.Designer.cs b/src/Dsp.Data/Migrations/20231029193939_TemporarilyRemoveIdentityInheritance.Designer.cs new file mode 100644 index 00000000..51fab72e --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029193939_TemporarilyRemoveIdentityInheritance.Designer.cs @@ -0,0 +1,1807 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20231029193939_TemporarilyRemoveIdentityInheritance")] + partial class TemporarilyRemoveIdentityInheritance + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Roles", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedUserName") + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Users", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("UserRoles", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("UserTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.User", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.UserType", "Status") + .WithMany("Users") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserRole", b => + { + b.HasOne("Dsp.Data.Entities.Role", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.User", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Role", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029193939_TemporarilyRemoveIdentityInheritance.cs b/src/Dsp.Data/Migrations/20231029193939_TemporarilyRemoveIdentityInheritance.cs new file mode 100644 index 00000000..5d2045c9 --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029193939_TemporarilyRemoveIdentityInheritance.cs @@ -0,0 +1,218 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class TemporarilyRemoveIdentityInheritance : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AspNetRoleClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserLogins"); + + migrationBuilder.DropTable( + name: "AspNetUserTokens"); + + migrationBuilder.DropIndex( + name: "EmailIndex", + table: "Users"); + + migrationBuilder.DropIndex( + name: "UserNameIndex", + table: "Users"); + + migrationBuilder.DropIndex( + name: "RoleNameIndex", + table: "Roles"); + + migrationBuilder.AlterColumn( + name: "NormalizedUserName", + table: "Users", + type: "nvarchar(max)", + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(256)", + oldMaxLength: 256, + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "NormalizedEmail", + table: "Users", + type: "nvarchar(max)", + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(256)", + oldMaxLength: 256, + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "NormalizedName", + table: "Roles", + type: "nvarchar(max)", + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(256)", + oldMaxLength: 256, + oldNullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "NormalizedUserName", + table: "Users", + type: "nvarchar(256)", + maxLength: 256, + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(max)", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "NormalizedEmail", + table: "Users", + type: "nvarchar(256)", + maxLength: 256, + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(max)", + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "NormalizedName", + table: "Roles", + type: "nvarchar(256)", + maxLength: 256, + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(max)", + oldNullable: true); + + migrationBuilder.CreateTable( + name: "AspNetRoleClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true), + RoleId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetRoleClaims_Roles_RoleId", + column: x => x.RoleId, + principalTable: "Roles", + principalColumn: "PositionId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUserClaims_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserLogins", + columns: table => new + { + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + ProviderKey = table.Column(type: "nvarchar(450)", nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(max)", nullable: true), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); + table.ForeignKey( + name: "FK_AspNetUserLogins_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserTokens", + columns: table => new + { + UserId = table.Column(type: "int", nullable: false), + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(450)", nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AspNetUserTokens_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "EmailIndex", + table: "Users", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "UserNameIndex", + table: "Users", + column: "NormalizedUserName", + unique: true, + filter: "[NormalizedUserName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "RoleNameIndex", + table: "Roles", + column: "NormalizedName", + unique: true, + filter: "[NormalizedName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetRoleClaims_RoleId", + table: "AspNetRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserClaims_UserId", + table: "AspNetUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserLogins_UserId", + table: "AspNetUserLogins", + column: "UserId"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029195008_RenameMembersTables.Designer.cs b/src/Dsp.Data/Migrations/20231029195008_RenameMembersTables.Designer.cs new file mode 100644 index 00000000..efac709f --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029195008_RenameMembersTables.Designer.cs @@ -0,0 +1,1807 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20231029195008_RenameMembersTables")] + partial class RenameMembersTables + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedUserName") + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("UserTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.UserType", "Status") + .WithMany("Users") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029195008_RenameMembersTables.cs b/src/Dsp.Data/Migrations/20231029195008_RenameMembersTables.cs new file mode 100644 index 00000000..22d9abf1 --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029195008_RenameMembersTables.cs @@ -0,0 +1,434 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class RenameMembersTables : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders"); + + migrationBuilder.RenameTable( + name: "UserRoles", + newName: "MembersPositions"); + + migrationBuilder.RenameTable( + name: "Roles", + newName: "Positions"); + + migrationBuilder.RenameTable( + name: "Users", + newName: "Members"); + + migrationBuilder.CreateIndex( + name: "IX_Members_BigBroId", + table: "Members", + column: "BigBroId"); + + migrationBuilder.CreateIndex( + name: "IX_Members_ExpectedGraduationId", + table: "Members", + column: "ExpectedGraduationId"); + + migrationBuilder.CreateIndex( + name: "IX_Members_PledgeClassId", + table: "Members", + column: "PledgeClassId"); + + migrationBuilder.CreateIndex( + name: "IX_Members_StatusId", + table: "Members", + column: "StatusId"); + + migrationBuilder.CreateIndex( + name: "IX_MembersPositions_LeaderId", + table: "MembersPositions", + column: "LeaderId"); + + migrationBuilder.CreateIndex( + name: "IX_MembersPositions_SemesterId", + table: "MembersPositions", + column: "SemesterId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents", + column: "SubmitterId", + principalTable: "Members", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders", + column: "UserId", + principalTable: "Members", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups"); + + migrationBuilder.DropForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders"); + + migrationBuilder.RenameTable( + name: "MembersPositions", + newName: "UserRoles"); + + migrationBuilder.RenameTable( + name: "Positions", + newName: "Roles"); + + migrationBuilder.RenameTable( + name: "Members", + newName: "Users"); + + migrationBuilder.CreateIndex( + name: "IX_UserRoles_LeaderId", + table: "UserRoles", + column: "LeaderId"); + + migrationBuilder.CreateIndex( + name: "IX_UserRoles_SemesterId", + table: "UserRoles", + column: "SemesterId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_BigBroId", + table: "Users", + column: "BigBroId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_ExpectedGraduationId", + table: "Users", + column: "ExpectedGraduationId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_PledgeClassId", + table: "Users", + column: "PledgeClassId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_StatusId", + table: "Users", + column: "StatusId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Addresses_dbo.Members_UserId", + table: "Addresses", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ClassesTaken_dbo.Members_UserId", + table: "ClassesTaken", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.IncidentReports_dbo.Members_ReportedBy", + table: "IncidentReports", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.LaundrySignups_dbo.Members_UserId", + table: "LaundrySignups", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MajorToMembers_dbo.Members_UserId", + table: "MajorToMembers", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealVotes_dbo.Members_UserId", + table: "MealItemVotes", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.MealLatePlates_dbo.Members_UserId", + table: "MealPlates", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.RoomToMembers_dbo.Members_UserId", + table: "RoomToMembers", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceEventAmendments_dbo.Members_UserId", + table: "ServiceEventAmendments", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Events_dbo.Members_SubmitterId", + table: "ServiceEvents", + column: "SubmitterId", + principalTable: "Users", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHourAmendments_dbo.Members_UserId", + table: "ServiceHourAmendments", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.ServiceHours_dbo.Members_UserId", + table: "ServiceHours", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.SoberSignups_dbo.Members_UserId", + table: "SoberSignups", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.WorkOrders_dbo.Members_UserId", + table: "WorkOrders", + column: "UserId", + principalTable: "Users", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029201821_AddIdentityTablesBack.Designer.cs b/src/Dsp.Data/Migrations/20231029201821_AddIdentityTablesBack.Designer.cs new file mode 100644 index 00000000..bac4e465 --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029201821_AddIdentityTablesBack.Designer.cs @@ -0,0 +1,2103 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20231029201821_AddIdentityTablesBack")] + partial class AddIdentityTablesBack + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("UserId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedUserName") + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("MemberId") + .IsUnique() + .HasFilter("[MemberId] IS NOT NULL"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("UserTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.UserType", "Status") + .WithMany("Users") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.Member", "MemberInfo") + .WithOne("UserInfo") + .HasForeignKey("Dsp.Data.Entities.User", "MemberId"); + + b.Navigation("MemberInfo"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("UserInfo"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029201821_AddIdentityTablesBack.cs b/src/Dsp.Data/Migrations/20231029201821_AddIdentityTablesBack.cs new file mode 100644 index 00000000..b27c5e20 --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029201821_AddIdentityTablesBack.cs @@ -0,0 +1,245 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class AddIdentityTablesBack : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AspNetRoles", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetUsers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FirstName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + LastName = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + MemberId = table.Column(type: "int", nullable: true), + CreatedOn = table.Column(type: "datetime", nullable: true), + EmergencyContact = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + EmergencyRelation = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + EmergencyPhoneNumber = table.Column(type: "nvarchar(max)", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + EmailConfirmed = table.Column(type: "bit", nullable: false), + PasswordHash = table.Column(type: "nvarchar(max)", nullable: true), + SecurityStamp = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: true), + PhoneNumberConfirmed = table.Column(type: "bit", nullable: false), + TwoFactorEnabled = table.Column(type: "bit", nullable: false), + LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), + LockoutEnabled = table.Column(type: "bit", nullable: false), + AccessFailedCount = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUsers", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUsers_Members_MemberId", + column: x => x.MemberId, + principalTable: "Members", + principalColumn: "UserId"); + }); + + migrationBuilder.CreateTable( + name: "AspNetRoleClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + RoleId = table.Column(type: "int", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "int", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUserClaims_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserLogins", + columns: table => new + { + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + ProviderKey = table.Column(type: "nvarchar(450)", nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(max)", nullable: true), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); + table.ForeignKey( + name: "FK_AspNetUserLogins_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserRoles", + columns: table => new + { + UserId = table.Column(type: "int", nullable: false), + RoleId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserTokens", + columns: table => new + { + UserId = table.Column(type: "int", nullable: false), + LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(450)", nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AspNetUserTokens_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_AspNetRoleClaims_RoleId", + table: "AspNetRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "RoleNameIndex", + table: "AspNetRoles", + column: "NormalizedName", + unique: true, + filter: "[NormalizedName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserClaims_UserId", + table: "AspNetUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserLogins_UserId", + table: "AspNetUserLogins", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserRoles_RoleId", + table: "AspNetUserRoles", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "EmailIndex", + table: "AspNetUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUsers_MemberId", + table: "AspNetUsers", + column: "MemberId", + unique: true, + filter: "[MemberId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "UserNameIndex", + table: "AspNetUsers", + column: "NormalizedUserName", + unique: true, + filter: "[NormalizedUserName] IS NOT NULL"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AspNetRoleClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserLogins"); + + migrationBuilder.DropTable( + name: "AspNetUserRoles"); + + migrationBuilder.DropTable( + name: "AspNetUserTokens"); + + migrationBuilder.DropTable( + name: "AspNetRoles"); + + migrationBuilder.DropTable( + name: "AspNetUsers"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029202440_ChangeMemberPK.Designer.cs b/src/Dsp.Data/Migrations/20231029202440_ChangeMemberPK.Designer.cs new file mode 100644 index 00000000..650d847a --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029202440_ChangeMemberPK.Designer.cs @@ -0,0 +1,2103 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20231029202440_ChangeMemberPK")] + partial class ChangeMemberPK + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("Id"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedUserName") + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("MemberId") + .IsUnique() + .HasFilter("[MemberId] IS NOT NULL"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("UserTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.UserType", "Status") + .WithMany("Users") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.Member", "MemberInfo") + .WithOne("UserInfo") + .HasForeignKey("Dsp.Data.Entities.User", "MemberId"); + + b.Navigation("MemberInfo"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("UserInfo"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029202440_ChangeMemberPK.cs b/src/Dsp.Data/Migrations/20231029202440_ChangeMemberPK.cs new file mode 100644 index 00000000..ca2bae24 --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029202440_ChangeMemberPK.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class ChangeMemberPK : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "UserId", + table: "Members", + newName: "Id"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Id", + table: "Members", + newName: "UserId"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029203057_MigrateIdentityData.Designer.cs b/src/Dsp.Data/Migrations/20231029203057_MigrateIdentityData.Designer.cs new file mode 100644 index 00000000..5572da4d --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029203057_MigrateIdentityData.Designer.cs @@ -0,0 +1,2103 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20231029203057_MigrateIdentityData")] + partial class MigrateIdentityData + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("Id"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedUserName") + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("MemberId") + .IsUnique() + .HasFilter("[MemberId] IS NOT NULL"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("UserTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.UserType", "Status") + .WithMany("Users") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.Member", "MemberInfo") + .WithOne("UserInfo") + .HasForeignKey("Dsp.Data.Entities.User", "MemberId"); + + b.Navigation("MemberInfo"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("UserInfo"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20231029203057_MigrateIdentityData.cs b/src/Dsp.Data/Migrations/20231029203057_MigrateIdentityData.cs new file mode 100644 index 00000000..e12639d1 --- /dev/null +++ b/src/Dsp.Data/Migrations/20231029203057_MigrateIdentityData.cs @@ -0,0 +1,65 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class MigrateIdentityData : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql(@" + INSERT INTO AspNetUsers ([MemberId] + ,[FirstName] + ,[LastName] + ,[Email] + ,[EmailConfirmed] + ,[PasswordHash] + ,[SecurityStamp] + ,[PhoneNumber] + ,[PhoneNumberConfirmed] + ,[TwoFactorEnabled] + ,[LockoutEnabled] + ,[AccessFailedCount] + ,[UserName] + ,[CreatedOn] + ,[ConcurrencyStamp] + ,[LockoutEnd] + ,[NormalizedEmail] + ,[NormalizedUserName] + ,[EmergencyContact] + ,[EmergencyPhoneNumber] + ,[EmergencyRelation]) + SELECT [Id] + ,[FirstName] + ,[LastName] + ,[Email] + ,[EmailConfirmed] + ,[PasswordHash] + ,[SecurityStamp] + ,[PhoneNumber] + ,[PhoneNumberConfirmed] + ,[TwoFactorEnabled] + ,[LockoutEnabled] + ,[AccessFailedCount] + ,[UserName] + ,[CreatedOn] + ,[ConcurrencyStamp] + ,[LockoutEnd] + ,[NormalizedEmail] + ,[NormalizedUserName] + ,[EmergencyContact] + ,[EmergencyPhoneNumber] + ,[EmergencyRelation] + FROM [dspdb].[dbo].[Members]"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql(@"DELETE FROM AspNetUsers"); + } + } +} diff --git a/src/Dsp.Data/Migrations/20231112180746_MigrateMemberStatus.Designer.cs b/src/Dsp.Data/Migrations/20231112180746_MigrateMemberStatus.Designer.cs new file mode 100644 index 00000000..612807de --- /dev/null +++ b/src/Dsp.Data/Migrations/20231112180746_MigrateMemberStatus.Designer.cs @@ -0,0 +1,2103 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20231112180746_MigrateMemberStatus")] + partial class MigrateMemberStatus + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("Id"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedUserName") + .HasColumnType("nvarchar(max)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.HasIndex("StatusId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("MemberId") + .IsUnique() + .HasFilter("[MemberId] IS NOT NULL"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Property("StatusId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("StatusId")); + + b.Property("StatusName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("StatusId") + .HasName("PK_dbo.MemberStatuses"); + + b.ToTable("UserTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.HasOne("Dsp.Data.Entities.UserType", "Status") + .WithMany("Users") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Members_dbo.MemberStatuses_StatusId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.Member", "MemberInfo") + .WithOne("UserInfo") + .HasForeignKey("Dsp.Data.Entities.User", "MemberId"); + + b.Navigation("MemberInfo"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("UserInfo"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.UserType", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20231112180746_MigrateMemberStatus.cs b/src/Dsp.Data/Migrations/20231112180746_MigrateMemberStatus.cs new file mode 100644 index 00000000..cee6d311 --- /dev/null +++ b/src/Dsp.Data/Migrations/20231112180746_MigrateMemberStatus.cs @@ -0,0 +1,43 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class MigrateMemberStatus : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql(@" + UPDATE Members + SET StatusId = 4 + WHERE LastName = 'Swearengin'; + "); + + migrationBuilder.Sql(@" + UPDATE M1 + SET BigBroId = NULL + FROM Members AS M1 + INNER JOIN Members AS M2 ON M1.BigBroId = M2.Id + WHERE M2.StatusId = 5 OR M2.StatusId = 7; + + UPDATE AspNetUsers + SET MemberId = NULL + FROM AspNetUsers AS U + INNER JOIN Members AS M ON M.Id = U.MemberId + WHERE M.StatusId = 5 OR M.StatusId = 7; + + DELETE FROM Members + WHERE StatusId = 5 OR StatusId = 7; + "); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/src/Dsp.Data/Migrations/20240212025134_AddReleasedColumns.Designer.cs b/src/Dsp.Data/Migrations/20240212025134_AddReleasedColumns.Designer.cs new file mode 100644 index 00000000..36b064d8 --- /dev/null +++ b/src/Dsp.Data/Migrations/20240212025134_AddReleasedColumns.Designer.cs @@ -0,0 +1,2022 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20240212025134_AddReleasedColumns")] + partial class AddReleasedColumns + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("Id"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsReleased") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("ReleasedOn") + .HasColumnType("datetime2"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("MemberId") + .IsUnique() + .HasFilter("[MemberId] IS NOT NULL"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.Member", "MemberInfo") + .WithOne("UserInfo") + .HasForeignKey("Dsp.Data.Entities.User", "MemberId"); + + b.Navigation("MemberInfo"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("UserInfo"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20240212025134_AddReleasedColumns.cs b/src/Dsp.Data/Migrations/20240212025134_AddReleasedColumns.cs new file mode 100644 index 00000000..255f0837 --- /dev/null +++ b/src/Dsp.Data/Migrations/20240212025134_AddReleasedColumns.cs @@ -0,0 +1,235 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class AddReleasedColumns : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_dbo.Members_dbo.MemberStatuses_StatusId", + table: "Members"); + + migrationBuilder.DropTable( + name: "UserTypes"); + + migrationBuilder.DropIndex( + name: "IX_Members_StatusId", + table: "Members"); + + migrationBuilder.DropColumn( + name: "AccessFailedCount", + table: "Members"); + + migrationBuilder.DropColumn( + name: "ConcurrencyStamp", + table: "Members"); + + migrationBuilder.DropColumn( + name: "EmailConfirmed", + table: "Members"); + + migrationBuilder.DropColumn( + name: "EmergencyContact", + table: "Members"); + + migrationBuilder.DropColumn( + name: "EmergencyPhoneNumber", + table: "Members"); + + migrationBuilder.DropColumn( + name: "EmergencyRelation", + table: "Members"); + + migrationBuilder.DropColumn( + name: "LockoutEnabled", + table: "Members"); + + migrationBuilder.DropColumn( + name: "LockoutEnd", + table: "Members"); + + migrationBuilder.DropColumn( + name: "NormalizedEmail", + table: "Members"); + + migrationBuilder.DropColumn( + name: "NormalizedUserName", + table: "Members"); + + migrationBuilder.DropColumn( + name: "PasswordHash", + table: "Members"); + + migrationBuilder.DropColumn( + name: "PhoneNumber", + table: "Members"); + + migrationBuilder.DropColumn( + name: "PhoneNumberConfirmed", + table: "Members"); + + migrationBuilder.DropColumn( + name: "SecurityStamp", + table: "Members"); + + migrationBuilder.DropColumn( + name: "UserName", + table: "Members"); + + migrationBuilder.DropColumn( + name: "TwoFactorEnabled", + table: "Members"); + + migrationBuilder.AddColumn( + name: "ReleasedOn", + table: "Members", + type: "datetime2", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ReleasedOn", + table: "Members"); + + migrationBuilder.AddColumn( + name: "TwoFactorEnabled", + table: "Members", + type: "bit", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "AccessFailedCount", + table: "Members", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "ConcurrencyStamp", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "EmailConfirmed", + table: "Members", + type: "bit", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "EmergencyContact", + table: "Members", + type: "nvarchar(50)", + maxLength: 50, + nullable: true); + + migrationBuilder.AddColumn( + name: "EmergencyPhoneNumber", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "EmergencyRelation", + table: "Members", + type: "nvarchar(50)", + maxLength: 50, + nullable: true); + + migrationBuilder.AddColumn( + name: "LockoutEnabled", + table: "Members", + type: "bit", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "LockoutEnd", + table: "Members", + type: "datetimeoffset", + nullable: true); + + migrationBuilder.AddColumn( + name: "NormalizedEmail", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "NormalizedUserName", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "PasswordHash", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "PhoneNumber", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "PhoneNumberConfirmed", + table: "Members", + type: "bit", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "SecurityStamp", + table: "Members", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "UserName", + table: "Members", + type: "nvarchar(256)", + maxLength: 256, + nullable: false, + defaultValue: ""); + + migrationBuilder.CreateTable( + name: "UserTypes", + columns: table => new + { + StatusId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + StatusName = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_dbo.MemberStatuses", x => x.StatusId); + }); + + migrationBuilder.CreateIndex( + name: "IX_Members_StatusId", + table: "Members", + column: "StatusId"); + + migrationBuilder.AddForeignKey( + name: "FK_dbo.Members_dbo.MemberStatuses_StatusId", + table: "Members", + column: "StatusId", + principalTable: "UserTypes", + principalColumn: "StatusId", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/Dsp.Data/Migrations/20240212030139_AddReleasedColumns2.Designer.cs b/src/Dsp.Data/Migrations/20240212030139_AddReleasedColumns2.Designer.cs new file mode 100644 index 00000000..40c28246 --- /dev/null +++ b/src/Dsp.Data/Migrations/20240212030139_AddReleasedColumns2.Designer.cs @@ -0,0 +1,2022 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + [Migration("20240212030139_AddReleasedColumns2")] + partial class AddReleasedColumns2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("Id"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsReleased") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("ReleasedOn") + .HasColumnType("datetime2"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("MemberId") + .IsUnique() + .HasFilter("[MemberId] IS NOT NULL"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.Member", "MemberInfo") + .WithOne("UserInfo") + .HasForeignKey("Dsp.Data.Entities.User", "MemberId"); + + b.Navigation("MemberInfo"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("UserInfo"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Migrations/20240212030139_AddReleasedColumns2.cs b/src/Dsp.Data/Migrations/20240212030139_AddReleasedColumns2.cs new file mode 100644 index 00000000..70d857f7 --- /dev/null +++ b/src/Dsp.Data/Migrations/20240212030139_AddReleasedColumns2.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + /// + public partial class AddReleasedColumns2 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "IsReleased", + table: "Members", + type: "bit", + nullable: false, + defaultValue: false); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "IsReleased", + table: "Members"); + } + } +} diff --git a/src/Dsp.Data/Migrations/Configuration.cs b/src/Dsp.Data/Migrations/Configuration.cs deleted file mode 100644 index 05403211..00000000 --- a/src/Dsp.Data/Migrations/Configuration.cs +++ /dev/null @@ -1,227 +0,0 @@ -namespace Dsp.Data.Migrations -{ - using Dsp.Data; - using System.Data.Entity.Migrations; - - internal sealed class Configuration : DbMigrationsConfiguration - { - public Configuration() - { - AutomaticMigrationsEnabled = true; - AutomaticMigrationDataLossAllowed = false; - } - - protected override void Seed(SphinxDbContext context) - { - /* - #region Member Statuses - context.MemberStatus.AddOrUpdate(m => m.StatusName, - new MemberStatus { StatusName = "New" }, - new MemberStatus { StatusName = "Neophyte" }, - new MemberStatus { StatusName = "Active" }, - new MemberStatus { StatusName = "Alumnus" }, - new MemberStatus { StatusName = "Affiliate" }, - new MemberStatus { StatusName = "Released" } - ); - context.SaveChanges(); - - #endregion - - #region Work Order Statuses - - context.WorkOrderStatuses.AddOrUpdate(m => m.Name, - new WorkOrderStatus { Name = "Unread" }, - new WorkOrderStatus { Name = "Under Review" }, - new WorkOrderStatus { Name = "In Progress" }, - new WorkOrderStatus { Name = "On Hold" }, - new WorkOrderStatus { Name = "Closed" } - ); - context.SaveChanges(); - - #endregion - - #region Work Order Priorities - - context.WorkOrderPriorities.AddOrUpdate(m => m.Name, - new WorkOrderPriority { Name = "Low" }, - new WorkOrderPriority { Name = "Moderate" }, - new WorkOrderPriority { Name = "High" } - ); - context.SaveChanges(); - - #endregion - - #region Semesters - - const int startYear = 2006; - const int endYear = 2020; - const int springStartMonth = 1; - const int springEndMonth = 5; - const int fallStartMonth = 8; - const int fallEndMonth = 12; - const int startDay = 20; - const int endDay = 15; - - var semesters = new List(); - for (var y = startYear; y <= endYear; y++) - { - semesters.Add(new Semester - { - DateStart = new DateTime(y, springStartMonth, startDay), - DateEnd = new DateTime(y, springEndMonth, endDay), - TransitionDate = new DateTime(y, springEndMonth, endDay) - }); - semesters.Add(new Semester - { - DateStart = new DateTime(y, fallStartMonth, startDay), - DateEnd = new DateTime(y, fallEndMonth, endDay), - TransitionDate = new DateTime(y, fallEndMonth, endDay) - }); - } - context.Semesters.AddOrUpdate(s => s.DateStart, semesters.OrderBy(s => s.DateStart).ToArray()); - context.SaveChanges(); - - #endregion - - #region Pledge Classes - - var pledgeClassNames = new List - { - // 10 per row - "Alpha 1", "Alpha 2", "Alpha 3", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", - "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", - "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega", "Alpha Alpha", "Alpha Beta", "Alpha Gamma", "Alpha Delta", - "Alpha Epsilon", "Alpha Zeta" - }; - - var pledgeClasses = new List - { - new PledgeClass - { - SemesterId = semesters.Single(s => s.DateStart == new DateTime(2006, springStartMonth, startDay)).SemesterId, - PledgeClassName = pledgeClassNames[0], - PinningDate = new DateTime(2006, 2, 19) - }, - new PledgeClass - { - SemesterId = semesters.Single(s => s.DateStart == new DateTime(2006, springStartMonth, startDay)).SemesterId, - PledgeClassName = pledgeClassNames[1], - PinningDate = new DateTime(2006, 3, 19) - }, - new PledgeClass - { - SemesterId = semesters.Single(s => s.DateStart == new DateTime(2006, springStartMonth, startDay)).SemesterId, - PledgeClassName = pledgeClassNames[2], - PinningDate = new DateTime(2006, 4, 19) - }, - new PledgeClass - { - SemesterId = semesters.Single(s => s.DateStart == new DateTime(2006, fallStartMonth, startDay)).SemesterId, - PledgeClassName = pledgeClassNames[3], - PinningDate = (new DateTime(2006, fallStartMonth, startDay)).AddDays(28), - InitiationDate = (new DateTime(2006, fallStartMonth, startDay)).AddDays(91) - } - }; - var i = 4; - for (var y = startYear + 1; y <= endYear; y++) - { - pledgeClasses.Add(new PledgeClass - { - SemesterId = semesters.Single(s => s.DateStart == new DateTime(y, springStartMonth, startDay)).SemesterId, - PledgeClassName = pledgeClassNames[i], - PinningDate = (new DateTime(y, springStartMonth, startDay)).AddDays(28), - InitiationDate = (new DateTime(y, springStartMonth, startDay)).AddDays(91) - }); - i++; - pledgeClasses.Add(new PledgeClass - { - SemesterId = semesters.Single(s => s.DateStart == new DateTime(y, fallStartMonth, startDay)).SemesterId, - PledgeClassName = pledgeClassNames[i], - PinningDate = (new DateTime(y, fallStartMonth, startDay)).AddDays(28), - InitiationDate = (new DateTime(y, fallStartMonth, startDay)).AddDays(91) - }); - i++; - } - - context.PledgeClasses.AddOrUpdate(s => s.PledgeClassName, pledgeClasses.OrderBy(s => s.PinningDate).ToArray()); - context.SaveChanges(); - - #endregion - - #region Positions - - context.Roles.AddOrUpdate(m => m.Name, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Administrator" }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "President" }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Vice President External" }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Vice President Internal" }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Treasurer", }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Secretary" }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Sergeant-at-Arms" }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Executive Board Representative 1" }, - new Position { IsElected = true, IsExecutive = true, Type = Position.PositionType.Active, Name = "Executive Board Representative 2" }, - new Position { IsElected = false, IsExecutive = true, Type = Position.PositionType.Active, Name = "Academics" }, - new Position { IsElected = false, IsExecutive = true, Type = Position.PositionType.Active, Name = "Brotherhood" }, - new Position { IsElected = false, IsExecutive = true, Type = Position.PositionType.Active, Name = "Director of Recruitment" }, - new Position { IsElected = false, IsExecutive = true, Type = Position.PositionType.Active, Name = "House Manager" }, - new Position { IsElected = false, IsExecutive = true, Type = Position.PositionType.Active, Name = "New Member Education" }, - new Position { IsElected = false, IsExecutive = true, Type = Position.PositionType.Active, Name = "Social" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Alumni Relations" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Service" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Greek Week" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "House Steward" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Philanthropy" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Public Relations" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "St. Pat's" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "IFC" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "StuCo Representative I" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Recruitment Coordinator I" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Recruitment Coordinator II" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Recruitment Coordinator III" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Recruitment Coordinator IV" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Recruitment Coordinator V" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Recruitment Coordinator VI" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Alumni, Name = "Chapter Advisor" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Vice President Growth" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Vice President Operations" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "Vice President Programming" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Alumni, Name = "Growth Advisor" }, - new Position { IsElected = false, IsExecutive = false, Type = Position.PositionType.Active, Name = "StuCo Representative II" } - ); - context.SaveChanges(); - - #endregion - - #region Admin Account - - var userStore = new SphinxUserStore(context); - var userManager = new ApplicationUserManager(userStore); - if (!(context.Users.Any(u => u.UserName == "admin"))) - { - var userToInsert = new Member - { - UserName = "admin", - Email = "admin@mst.edu", - FirstName = "Admin", - LastName = "User", - StatusId = 4, - PledgeClassId = 12, - ExpectedGraduationId = 19 - ShirtSize = "M", - }; - userManager.Create(userToInsert, "password"); - } - - var user = userManager.FindByName("admin"); - - if (!userManager.GetRoles(user.Id).Contains("Administrator")) - { - var adminPosition = context.Roles.Single(r => r.Name == "Administrator"); - ((DspRoleProvider)Roles.Provider).AddUserToRole(user.Id, adminPosition.Id, 1); - } - - #endregion - */ - } - } -} diff --git a/src/Dsp.Data/Migrations/DspDbContextModelSnapshot.cs b/src/Dsp.Data/Migrations/DspDbContextModelSnapshot.cs new file mode 100644 index 00000000..cfeb9e82 --- /dev/null +++ b/src/Dsp.Data/Migrations/DspDbContextModelSnapshot.cs @@ -0,0 +1,2019 @@ +// +using System; +using Dsp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Dsp.Data.Migrations +{ + [DbContext(typeof(DspDbContext))] + partial class DspDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.Property("AddressId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("AddressId")); + + b.Property("Address1") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Country") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("AddressId") + .HasName("PK_dbo.Addresses"); + + b.HasIndex("UserId"); + + b.ToTable("Addresses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Property("ClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassId")); + + b.Property("CourseName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CourseShorthand") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreditHours") + .HasColumnType("int"); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.HasKey("ClassId") + .HasName("PK_dbo.Classes"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Classes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.Property("ClassTakenId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ClassTakenId")); + + b.Property("ClassId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("IsSummerClass") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("ClassTakenId") + .HasName("PK_dbo.ClassesTaken"); + + b.HasIndex("ClassId"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ClassesTaken", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Property("DepartmentId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DepartmentId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("DepartmentId") + .HasName("PK_dbo.Departments"); + + b.ToTable("Departments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateTimeOfIncident") + .HasColumnType("datetime"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("InvestigationNotes") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasDefaultValueSql("('')"); + + b.Property("OfficialReport") + .HasMaxLength(1500) + .HasColumnType("nvarchar(1500)"); + + b.Property("PolicyBroken") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ShareIdentity") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.IncidentReports"); + + b.HasIndex("UserId"); + + b.ToTable("IncidentReports", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.Property("DateTimeShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("DateTimeShift") + .HasName("PK_dbo.LaundrySignups"); + + b.HasIndex("UserId"); + + b.ToTable("LaundrySignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Property("MajorId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorId")); + + b.Property("DepartmentId") + .HasColumnType("int"); + + b.Property("MajorName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("MajorId") + .HasName("PK_dbo.Majors"); + + b.HasIndex("DepartmentId"); + + b.ToTable("Majors", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.Property("MajorToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("MajorToMemberId")); + + b.Property("DegreeLevel") + .HasColumnType("int"); + + b.Property("MajorId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("MajorToMemberId") + .HasName("PK_dbo.MajorToMembers"); + + b.HasIndex("MajorId"); + + b.HasIndex("UserId"); + + b.ToTable("MajorToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Downvotes") + .HasColumnType("int"); + + b.Property("IsGlutenFree") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Upvotes") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItems"); + + b.ToTable("MealItems", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("MealPeriodId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemsToPeriods"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "MealPeriodId", "MealItemId", "Date" }, "IX_MealPeriod_MealItem_Date") + .IsUnique(); + + b.ToTable("MealItemsToPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsUpvote") + .HasColumnType("bit"); + + b.Property("MealItemId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealItemVotes"); + + b.HasIndex("MealItemId"); + + b.HasIndex(new[] { "UserId", "MealItemId" }, "IX_User_MealItem") + .IsUnique(); + + b.ToTable("MealItemVotes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EndTime") + .HasColumnType("datetime"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StartTime") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.MealPeriods"); + + b.ToTable("MealPeriods", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlateDateTime") + .HasColumnType("datetime"); + + b.Property("SignedUpOn") + .HasColumnType("datetime"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.MealLatePlates"); + + b.HasIndex("UserId"); + + b.ToTable("MealPlates", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("Id"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvatarPath") + .HasColumnType("nvarchar(max)"); + + b.Property("BigBroId") + .HasColumnType("int"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DietaryInstructions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExpectedGraduationId") + .HasColumnType("int"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsReleased") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastUpdatedOn") + .HasColumnType("datetime"); + + b.Property("PledgeClassId") + .HasColumnType("int"); + + b.Property("ReleasedOn") + .HasColumnType("datetime2"); + + b.Property("StatusId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Members"); + + b.HasIndex("BigBroId"); + + b.HasIndex("ExpectedGraduationId"); + + b.HasIndex("PledgeClassId"); + + b.ToTable("Members", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("LeaderId"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("AppointedOn") + .HasColumnType("datetime"); + + b.HasKey("UserId", "RoleId", "SemesterId") + .HasName("PK_dbo.Leaders"); + + b.HasIndex("RoleId"); + + b.HasIndex("SemesterId"); + + b.ToTable("MembersPositions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Property("PledgeClassId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("PledgeClassId")); + + b.Property("InitiationDate") + .HasColumnType("datetime"); + + b.Property("PinningDate") + .HasColumnType("datetime"); + + b.Property("PledgeClassName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("PledgeClassId") + .HasName("PK_dbo.PledgeClasses"); + + b.HasIndex("SemesterId"); + + b.ToTable("PledgeClasses", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("PositionId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanBeRemoved") + .HasColumnType("bit"); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DisplayOrder") + .HasColumnType("int"); + + b.Property("Inquiries") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsDisabled") + .HasColumnType("bit"); + + b.Property("IsElected") + .HasColumnType("bit"); + + b.Property("IsExecutive") + .HasColumnType("bit"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.Positions"); + + b.ToTable("Positions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Property("RoomId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomId")); + + b.Property("MaxCapacity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.HasKey("RoomId") + .HasName("PK_dbo.Rooms"); + + b.HasIndex("SemesterId"); + + b.ToTable("Rooms", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.Property("RoomToMemberId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("RoomToMemberId")); + + b.Property("MovedIn") + .HasColumnType("datetime"); + + b.Property("MovedOut") + .HasColumnType("datetime"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("RoomToMemberId") + .HasName("PK_dbo.RoomToMembers"); + + b.HasIndex("RoomId"); + + b.HasIndex("UserId"); + + b.ToTable("RoomToMembers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.Property("ScholarshipAnswerId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAnswerId")); + + b.Property("AnswerText") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.Property("ScholarshipSubmissionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("ScholarshipAnswerId") + .HasName("PK_dbo.ScholarshipAnswers"); + + b.HasIndex("ScholarshipQuestionId"); + + b.HasIndex("ScholarshipSubmissionId"); + + b.ToTable("ScholarshipAnswers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Property("ScholarshipAppId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppId")); + + b.Property("AdditionalText") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("ClosesOn") + .HasColumnType("datetime"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("OpensOn") + .HasColumnType("datetime"); + + b.Property("ScholarshipTypeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipAppId") + .HasName("PK_dbo.ScholarshipApps"); + + b.HasIndex("ScholarshipTypeId"); + + b.ToTable("ScholarshipApps", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.Property("ScholarshipAppQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipAppQuestionId")); + + b.Property("FormOrder") + .HasColumnType("int"); + + b.Property("IsOptional") + .HasColumnType("bit"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("ScholarshipQuestionId") + .HasColumnType("int"); + + b.HasKey("ScholarshipAppQuestionId") + .HasName("PK_dbo.ScholarshipAppQuestions"); + + b.HasIndex("ScholarshipAppId"); + + b.HasIndex("ScholarshipQuestionId"); + + b.ToTable("ScholarshipAppQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Property("ScholarshipQuestionId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipQuestionId")); + + b.Property("AnswerMaximumLength") + .HasColumnType("int"); + + b.Property("AnswerMinimumLength") + .HasColumnType("int"); + + b.Property("Prompt") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("ScholarshipQuestionId") + .HasName("PK_dbo.ScholarshipQuestions"); + + b.ToTable("ScholarshipQuestions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Property("ScholarshipSubmissionId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier") + .HasDefaultValueSql("(newsequentialid())"); + + b.Property("ActSatScore") + .HasColumnType("int"); + + b.Property("Address1") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Address2") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("City") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CommitteeRespondedOn") + .HasColumnType("datetime"); + + b.Property("CommitteeResponse") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gpa") + .HasColumnType("float"); + + b.Property("HearAboutScholarship") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("HighSchool") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsWinner") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("PostalCode") + .HasColumnType("int"); + + b.Property("ScholarshipAppId") + .HasColumnType("int"); + + b.Property("State") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StudentNumber") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SubmittedOn") + .HasColumnType("datetime"); + + b.HasKey("ScholarshipSubmissionId") + .HasName("PK_dbo.ScholarshipSubmissions"); + + b.HasIndex("ScholarshipAppId"); + + b.ToTable("ScholarshipSubmissions", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Property("ScholarshipTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ScholarshipTypeId")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("ScholarshipTypeId") + .HasName("PK_dbo.ScholarshipTypes"); + + b.ToTable("ScholarshipTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("SemesterId"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("datetime"); + + b.Property("DateStart") + .HasColumnType("datetime"); + + b.Property("MinimumServiceEvents") + .HasColumnType("int"); + + b.Property("MinimumServiceHours") + .HasColumnType("int"); + + b.Property("RecruitmentBookUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("TransitionDate") + .HasColumnType("datetime"); + + b.HasKey("Id") + .HasName("PK_dbo.Semesters"); + + b.ToTable("Semesters", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("EventId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateTimeOccurred") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.Property("EventName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsApproved") + .HasColumnType("bit"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("SubmitterId") + .HasColumnType("int"); + + b.HasKey("EventId") + .HasName("PK_dbo.ServiceEvents"); + + b.HasIndex("SubmitterId"); + + b.HasIndex(new[] { "SemesterId" }, "IX_SemesterId"); + + b.ToTable("ServiceEvents", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NumberEvents") + .HasColumnType("int"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceEventAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceEventAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("EventId") + .HasColumnType("int"); + + b.Property("DateTimeSubmitted") + .HasColumnType("datetime"); + + b.Property("DurationHours") + .HasColumnType("float"); + + b.HasKey("UserId", "EventId") + .HasName("PK_dbo.ServiceHours"); + + b.HasIndex("EventId"); + + b.ToTable("ServiceHours", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AmountHours") + .HasColumnType("float"); + + b.Property("Reason") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SemesterId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id") + .HasName("PK_dbo.ServiceHourAmendments"); + + b.HasIndex("SemesterId"); + + b.HasIndex("UserId"); + + b.ToTable("ServiceHourAmendments", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.Property("SignupId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SignupId")); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("DateOfShift") + .HasColumnType("datetime"); + + b.Property("DateTimeSignedUp") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SoberTypeId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("SignupId") + .HasName("PK_dbo.SoberSignups"); + + b.HasIndex("SoberTypeId"); + + b.HasIndex("UserId"); + + b.ToTable("SoberSignups", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Property("SoberTypeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("SoberTypeId")); + + b.Property("Description") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("SoberTypeId") + .HasName("PK_dbo.SoberTypes"); + + b.ToTable("SoberTypes", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("EmergencyContact") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmergencyPhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("EmergencyRelation") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("MemberId") + .IsUnique() + .HasFilter("[MemberId] IS NOT NULL"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.Property("WorkOrderId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("WorkOrderId")); + + b.Property("ClosedOn") + .HasColumnType("datetime"); + + b.Property("CreatedOn") + .HasColumnType("datetime"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Result") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("WorkOrderId") + .HasName("PK_dbo.WorkOrders"); + + b.HasIndex("UserId"); + + b.ToTable("WorkOrders", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Address", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Addresses_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Classes") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Classes_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ClassTaken", b => + { + b.HasOne("Dsp.Data.Entities.Class", "Class") + .WithMany("ClassesTaken") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Classes_ClassId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ClassesTaken") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ClassesTaken") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ClassesTaken_dbo.Members_UserId"); + + b.Navigation("Class"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.IncidentReport", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("IncidentReports") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.IncidentReports_dbo.Members_ReportedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.LaundrySignup", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("LaundrySignups") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.LaundrySignups_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.HasOne("Dsp.Data.Entities.Department", "Department") + .WithMany("Majors") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Majors_dbo.Departments_DepartmentId"); + + b.Navigation("Department"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MajorToMember", b => + { + b.HasOne("Dsp.Data.Entities.Major", "Major") + .WithMany("MajorToMembers") + .HasForeignKey("MajorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Majors_MajorId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Majors") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MajorToMembers_dbo.Members_UserId"); + + b.Navigation("Major"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemToPeriod", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Periods") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.MealPeriod", "MealPeriod") + .WithMany("Items") + .HasForeignKey("MealPeriodId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealItemsToPeriods_dbo.MealPeriods_MealPeriodId"); + + b.Navigation("MealItem"); + + b.Navigation("MealPeriod"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItemVote", b => + { + b.HasOne("Dsp.Data.Entities.MealItem", "MealItem") + .WithMany("Votes") + .HasForeignKey("MealItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.MealItems_MealItemId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealItemVotes") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealVotes_dbo.Members_UserId"); + + b.Navigation("MealItem"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPlate", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("MealPlates") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.MealLatePlates_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.HasOne("Dsp.Data.Entities.Member", "BigBro") + .WithMany("LittleBros") + .HasForeignKey("BigBroId") + .HasConstraintName("FK_dbo.Members_dbo.Members_BigBroId"); + + b.HasOne("Dsp.Data.Entities.Semester", "ExpectedGraduation") + .WithMany("GraduatingMembers") + .HasForeignKey("ExpectedGraduationId") + .HasConstraintName("FK_dbo.Members_dbo.Semesters_ExpectedGraduationId"); + + b.HasOne("Dsp.Data.Entities.PledgeClass", "PledgeClass") + .WithMany("Users") + .HasForeignKey("PledgeClassId") + .HasConstraintName("FK_dbo.Members_dbo.PledgeClasses_PledgeClassId"); + + b.Navigation("BigBro"); + + b.Navigation("ExpectedGraduation"); + + b.Navigation("PledgeClass"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MemberPosition", b => + { + b.HasOne("Dsp.Data.Entities.Position", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_RoleId"); + + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Leaders") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Leaders_dbo.Members_UserId"); + + b.Navigation("Role"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("PledgeClasses") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.PledgeClasses_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("Rooms") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.Rooms_dbo.Semesters_SemesterId"); + + b.Navigation("Semester"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.RoomToMember", b => + { + b.HasOne("Dsp.Data.Entities.Room", "Room") + .WithMany("Members") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Rooms_RoomId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("Rooms") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.RoomToMembers_dbo.Members_UserId"); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAnswer", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Answers") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipSubmission", "Submission") + .WithMany("Answers") + .HasForeignKey("ScholarshipSubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAnswers_dbo.ScholarshipSubmissions_ScholarshipSubmissionId"); + + b.Navigation("Question"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipType", "Type") + .WithMany("Applications") + .HasForeignKey("ScholarshipTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipApps_dbo.ScholarshipTypes_ScholarshipTypeId"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipAppQuestion", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Questions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.HasOne("Dsp.Data.Entities.ScholarshipQuestion", "Question") + .WithMany("Questions") + .HasForeignKey("ScholarshipQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipAppQuestions_dbo.ScholarshipQuestions_ScholarshipQuestionId"); + + b.Navigation("Application"); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.HasOne("Dsp.Data.Entities.ScholarshipApp", "Application") + .WithMany("Submissions") + .HasForeignKey("ScholarshipAppId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ScholarshipSubmissions_dbo.ScholarshipApps_ScholarshipAppId"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEvents") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEvents_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "Submitter") + .WithMany("ServiceEvents") + .HasForeignKey("SubmitterId") + .HasConstraintName("FK_dbo.Events_dbo.Members_SubmitterId"); + + b.Navigation("Semester"); + + b.Navigation("Submitter"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEventAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceEventAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceEventAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceEventAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHour", b => + { + b.HasOne("Dsp.Data.Entities.ServiceEvent", "Event") + .WithMany("ServiceHours") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Events_EventId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHours") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHours_dbo.Members_UserId"); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceHourAmendment", b => + { + b.HasOne("Dsp.Data.Entities.Semester", "Semester") + .WithMany("ServiceHourAmendments") + .HasForeignKey("SemesterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Semesters_SemesterId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("ServiceHourAmendments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.ServiceHourAmendments_dbo.Members_UserId"); + + b.Navigation("Semester"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberSignup", b => + { + b.HasOne("Dsp.Data.Entities.SoberType", "SoberType") + .WithMany("Signups") + .HasForeignKey("SoberTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.SoberSignups_dbo.SoberTypes_SoberTypeId"); + + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("SoberSignups") + .HasForeignKey("UserId") + .HasConstraintName("FK_dbo.SoberSignups_dbo.Members_UserId"); + + b.Navigation("SoberType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.User", b => + { + b.HasOne("Dsp.Data.Entities.Member", "MemberInfo") + .WithOne("UserInfo") + .HasForeignKey("Dsp.Data.Entities.User", "MemberId"); + + b.Navigation("MemberInfo"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.WorkOrder", b => + { + b.HasOne("Dsp.Data.Entities.Member", "User") + .WithMany("WorkOrders") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_dbo.WorkOrders_dbo.Members_UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Dsp.Data.Entities.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Class", b => + { + b.Navigation("ClassesTaken"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Department", b => + { + b.Navigation("Classes"); + + b.Navigation("Majors"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Major", b => + { + b.Navigation("MajorToMembers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealItem", b => + { + b.Navigation("Periods"); + + b.Navigation("Votes"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.MealPeriod", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Member", b => + { + b.Navigation("Addresses"); + + b.Navigation("ClassesTaken"); + + b.Navigation("IncidentReports"); + + b.Navigation("LaundrySignups"); + + b.Navigation("LittleBros"); + + b.Navigation("Majors"); + + b.Navigation("MealItemVotes"); + + b.Navigation("MealPlates"); + + b.Navigation("Roles"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + + b.Navigation("ServiceHours"); + + b.Navigation("SoberSignups"); + + b.Navigation("UserInfo"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.PledgeClass", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Position", b => + { + b.Navigation("Users"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Room", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipApp", b => + { + b.Navigation("Questions"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipQuestion", b => + { + b.Navigation("Answers"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipSubmission", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ScholarshipType", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.Semester", b => + { + b.Navigation("ClassesTaken"); + + b.Navigation("GraduatingMembers"); + + b.Navigation("Leaders"); + + b.Navigation("PledgeClasses"); + + b.Navigation("Rooms"); + + b.Navigation("ServiceEventAmendments"); + + b.Navigation("ServiceEvents"); + + b.Navigation("ServiceHourAmendments"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.ServiceEvent", b => + { + b.Navigation("ServiceHours"); + }); + + modelBuilder.Entity("Dsp.Data.Entities.SoberType", b => + { + b.Navigation("Signups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Dsp.Data/Properties/AssemblyInfo.cs b/src/Dsp.Data/Properties/AssemblyInfo.cs index d06b27cb..3b1fc14b 100644 --- a/src/Dsp.Data/Properties/AssemblyInfo.cs +++ b/src/Dsp.Data/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dsp.Data")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dsp.Data")] -[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("9ce07462-20a3-4ee6-8797-7ea69e05acb8")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Dsp.Data/SphinxDbContext.cs b/src/Dsp.Data/SphinxDbContext.cs deleted file mode 100644 index 17244822..00000000 --- a/src/Dsp.Data/SphinxDbContext.cs +++ /dev/null @@ -1,91 +0,0 @@ -namespace Dsp.Data -{ - using Entities; - using Microsoft.AspNet.Identity.EntityFramework; - using System.Data.Entity; - using System.Diagnostics; - - public class SphinxDbContext : IdentityDbContext - - { - public SphinxDbContext() : base("DefaultConnection") - { -#if DEBUG - Database.Log = s => Debug.Write(s); -#endif - } - - public virtual DbSet
Addresses { get; set; } - public virtual DbSet Classes { get; set; } - public virtual DbSet ClassesTaken { get; set; } - public virtual DbSet Departments { get; set; } - public virtual DbSet Donations { get; set; } - public virtual DbSet Emails { get; set; } - public virtual DbSet EmailTypes { get; set; } - public virtual DbSet Errors { get; set; } - public virtual DbSet Fundraisers { get; set; } - public virtual DbSet IncidentReports { get; set; } - public virtual DbSet LaundrySignups { get; set; } - public virtual DbSet Leaders { get; set; } - public virtual DbSet Majors { get; set; } - public virtual DbSet MajorsToMembers { get; set; } - public virtual DbSet MealItems { get; set; } - public virtual DbSet MealPlates { get; set; } - public virtual DbSet MealPeriods { get; set; } - public virtual DbSet MealItemsToPeriods { get; set; } - public virtual DbSet MealVotes { get; set; } - public virtual DbSet MemberStatuses { get; set; } - public virtual DbSet Philanthropies { get; set; } - public virtual DbSet PhoneNumbers { get; set; } - public virtual DbSet PledgeClasses { get; set; } - public virtual DbSet Rooms { get; set; } - public virtual DbSet RoomsToMembers { get; set; } - public virtual DbSet ScholarshipAnswers { get; set; } - public virtual DbSet ScholarshipApps { get; set; } - public virtual DbSet ScholarshipTypes { get; set; } - public virtual DbSet ScholarshipQuestions { get; set; } - public virtual DbSet ScholarshipSubmissions { get; set; } - public virtual DbSet Semesters { get; set; } - public virtual DbSet ServiceHourAmendments { get; set; } - public virtual DbSet ServiceEventAmendments { get; set; } - public virtual DbSet ServiceEvents { get; set; } - public virtual DbSet ServiceHours { get; set; } - public virtual DbSet SoberSignups { get; set; } - public virtual DbSet SoberTypes { get; set; } - public virtual DbSet WorkOrders { get; set; } - public virtual DbSet WorkOrderComments { get; set; } - public virtual DbSet WorkOrderPriorities { get; set; } - public virtual DbSet WorkOrderPriorityChanges { get; set; } - public virtual DbSet WorkOrderStatuses { get; set; } - public virtual DbSet WorkOrderStatusChanges { get; set; } - - protected override void OnModelCreating(DbModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - modelBuilder.Entity().ToTable("Members", "dbo").Property(p => p.Id).HasColumnName("UserId"); - modelBuilder.Entity().ToTable("Positions", "dbo").Property(p => p.Id).HasColumnName("PositionId"); - modelBuilder.Entity().ToTable("Leaders", "dbo").Property(p => p.RoleId).HasColumnName("LeaderId"); - modelBuilder.Entity().HasKey(u => new { u.UserId, u.RoleId, u.SemesterId }); - modelBuilder.Entity().ToTable("MemberLogins", "dbo"); - modelBuilder.Entity().ToTable("MemberClaims", "dbo"); - modelBuilder.Entity().ToTable("ELMAH_Error"); - - modelBuilder - .Entity() - .HasIndex(c => new { c.UserId, c.MealItemId }) - .IsUnique() - .HasName("IX_User_MealItem"); - modelBuilder - .Entity() - .HasIndex(c => new { c.MealPeriodId, c.MealItemId, c.Date }) - .IsUnique() - .HasName("IX_MealPeriod_MealItem_Date"); - } - - public static SphinxDbContext Create() - { - return new SphinxDbContext(); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Data/SphinxRoleStore.cs b/src/Dsp.Data/SphinxRoleStore.cs deleted file mode 100644 index 0c13687f..00000000 --- a/src/Dsp.Data/SphinxRoleStore.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dsp.Data -{ - using Entities; - using Microsoft.AspNet.Identity.EntityFramework; - using System.Data.Entity; - - public class SphinxRoleStore : RoleStore - { - public SphinxRoleStore(DbContext context) : base(context) { } - } -} \ No newline at end of file diff --git a/src/Dsp.Data/SphinxUserClaim.cs b/src/Dsp.Data/SphinxUserClaim.cs deleted file mode 100644 index e872e65a..00000000 --- a/src/Dsp.Data/SphinxUserClaim.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Dsp.Data -{ - using Microsoft.AspNet.Identity.EntityFramework; - - public class SphinxUserClaim : IdentityUserClaim { } -} \ No newline at end of file diff --git a/src/Dsp.Data/SphinxUserLogin.cs b/src/Dsp.Data/SphinxUserLogin.cs deleted file mode 100644 index cc4ea7ba..00000000 --- a/src/Dsp.Data/SphinxUserLogin.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Dsp.Data -{ - using Microsoft.AspNet.Identity.EntityFramework; - - public class SphinxUserLogin : IdentityUserLogin { } -} \ No newline at end of file diff --git a/src/Dsp.Data/SphinxUserStore.cs b/src/Dsp.Data/SphinxUserStore.cs deleted file mode 100644 index 42591216..00000000 --- a/src/Dsp.Data/SphinxUserStore.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dsp.Data -{ - using Entities; - using Microsoft.AspNet.Identity.EntityFramework; - using System.Data.Entity; - - public class SphinxUserStore : UserStore - { - public SphinxUserStore(DbContext context) : base(context) { } - } -} \ No newline at end of file diff --git a/src/Dsp.Data/packages.config b/src/Dsp.Data/packages.config deleted file mode 100644 index 7771b263..00000000 --- a/src/Dsp.Data/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/Dsp.Repositories/App.config b/src/Dsp.Repositories/App.config deleted file mode 100644 index 2dd636aa..00000000 --- a/src/Dsp.Repositories/App.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - -
- - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Repositories/Dsp.Repositories.csproj b/src/Dsp.Repositories/Dsp.Repositories.csproj deleted file mode 100644 index 0567cf4a..00000000 --- a/src/Dsp.Repositories/Dsp.Repositories.csproj +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Debug - AnyCPU - {00CF890E-D0B7-45D9-AA1C-73D57CEBCCFF} - Library - Properties - Dsp.Repositories - Dsp.Repositories - v4.5.2 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll - - - ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll - - - ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll - - - - - - - - - - - - - - - - - - - - - {9ce07462-20a3-4ee6-8797-7ea69e05acb8} - Dsp.Data - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Repositories/Interfaces/IReadOnlyRepository.cs b/src/Dsp.Repositories/Interfaces/IReadOnlyRepository.cs deleted file mode 100644 index 934e1bd1..00000000 --- a/src/Dsp.Repositories/Interfaces/IReadOnlyRepository.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Threading.Tasks; - -namespace Dsp.Repositories.Interfaces -{ - public interface IReadOnlyRepository - { - IEnumerable GetAll( - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class; - - Task> GetAllAsync( - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class; - - IEnumerable Get( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class; - - Task> GetAsync( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class; - - TEntity GetOne( - Expression> filter = null, - string includeProperties = null) - where TEntity : class; - - Task GetOneAsync( - Expression> filter = null, - string includeProperties = null) - where TEntity : class; - - TEntity GetFirst( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null) - where TEntity : class; - - Task GetFirstAsync( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null) - where TEntity : class; - - TEntity GetById(object id) - where TEntity : class; - - Task GetByIdAsync(object id) - where TEntity : class; - - int GetCount(Expression> filter = null) - where TEntity : class; - - Task GetCountAsync(Expression> filter = null) - where TEntity : class; - - bool GetExists(Expression> filter = null) - where TEntity : class; - - Task GetExistsAsync(Expression> filter = null) - where TEntity : class; - } -} diff --git a/src/Dsp.Repositories/Interfaces/IRepository.cs b/src/Dsp.Repositories/Interfaces/IRepository.cs deleted file mode 100644 index 7d624401..00000000 --- a/src/Dsp.Repositories/Interfaces/IRepository.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Threading.Tasks; - -namespace Dsp.Repositories.Interfaces -{ - public interface IRepository : IReadOnlyRepository - { - void Create(TEntity entity, string createdBy = null) - where TEntity : class; - - void Update(TEntity entity, string modifiedBy = null) - where TEntity : class; - - void Delete(object id) - where TEntity : class; - - void Delete(TEntity entity) - where TEntity : class; - - void Save(); - - Task SaveAsync(); - } -} diff --git a/src/Dsp.Repositories/Properties/AssemblyInfo.cs b/src/Dsp.Repositories/Properties/AssemblyInfo.cs deleted file mode 100644 index c35e1f1a..00000000 --- a/src/Dsp.Repositories/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dsp.Repositories")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dsp.Repositories")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("00cf890e-d0b7-45d9-aa1c-73d57cebccff")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Dsp.Repositories/Repositories/ReadOnlyRepository.cs b/src/Dsp.Repositories/Repositories/ReadOnlyRepository.cs deleted file mode 100644 index 6d10230a..00000000 --- a/src/Dsp.Repositories/Repositories/ReadOnlyRepository.cs +++ /dev/null @@ -1,173 +0,0 @@ -using Dsp.Data; -using Dsp.Repositories.Interfaces; -using System; -using System.Collections.Generic; -using System.Data.Entity; -using System.Linq; -using System.Linq.Expressions; -using System.Threading.Tasks; - -namespace Dsp.Repositories -{ - public class ReadOnlyRepository : IReadOnlyRepository where TContext : SphinxDbContext - { - protected readonly TContext context; - - public ReadOnlyRepository(TContext context) - { - this.context = context; - } - - protected virtual IQueryable GetQueryable( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class - { - includeProperties = includeProperties ?? string.Empty; - IQueryable query = context.Set(); - - if (filter != null) - { - query = query.Where(filter); - } - - foreach (var includeProperty in includeProperties.Split - (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) - { - query = query.Include(includeProperty); - } - - if (orderBy != null) - { - query = orderBy(query); - } - - if (skip.HasValue) - { - query = query.Skip(skip.Value); - } - - if (take.HasValue) - { - query = query.Take(take.Value); - } - - return query; - } - - public virtual IEnumerable GetAll( - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class - { - return GetQueryable(null, orderBy, includeProperties, skip, take).ToList(); - } - - public virtual async Task> GetAllAsync( - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class - { - return await GetQueryable(null, orderBy, includeProperties, skip, take).ToListAsync(); - } - - public virtual IEnumerable Get( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class - { - return GetQueryable(filter, orderBy, includeProperties, skip, take).ToList(); - } - - public virtual async Task> GetAsync( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null, - int? skip = null, - int? take = null) - where TEntity : class - { - return await GetQueryable(filter, orderBy, includeProperties, skip, take).ToListAsync(); - } - - public virtual TEntity GetOne( - Expression> filter = null, - string includeProperties = "") - where TEntity : class - { - return GetQueryable(filter, null, includeProperties).SingleOrDefault(); - } - - public virtual async Task GetOneAsync( - Expression> filter = null, - string includeProperties = null) - where TEntity : class - { - return await GetQueryable(filter, null, includeProperties).SingleOrDefaultAsync(); - } - - public virtual TEntity GetFirst( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = "") - where TEntity : class - { - return GetQueryable(filter, orderBy, includeProperties).FirstOrDefault(); - } - - public virtual async Task GetFirstAsync( - Expression> filter = null, - Func, IOrderedQueryable> orderBy = null, - string includeProperties = null) - where TEntity : class - { - return await GetQueryable(filter, orderBy, includeProperties).FirstOrDefaultAsync(); - } - - public virtual TEntity GetById(object id) - where TEntity : class - { - return context.Set().Find(id); - } - - public virtual Task GetByIdAsync(object id) - where TEntity : class - { - return context.Set().FindAsync(id); - } - - public virtual int GetCount(Expression> filter = null) - where TEntity : class - { - return GetQueryable(filter).Count(); - } - - public virtual Task GetCountAsync(Expression> filter = null) - where TEntity : class - { - return GetQueryable(filter).CountAsync(); - } - - public virtual bool GetExists(Expression> filter = null) - where TEntity : class - { - return GetQueryable(filter).Any(); - } - - public virtual Task GetExistsAsync(Expression> filter = null) - where TEntity : class - { - return GetQueryable(filter).AnyAsync(); - } - } -} diff --git a/src/Dsp.Repositories/Repositories/Repository.cs b/src/Dsp.Repositories/Repositories/Repository.cs deleted file mode 100644 index 4054cb2c..00000000 --- a/src/Dsp.Repositories/Repositories/Repository.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Dsp.Data; -using Dsp.Repositories.Interfaces; -using System.Data.Entity; -using System.Data.Entity.Validation; -using System.Linq; -using System.Threading.Tasks; - -namespace Dsp.Repositories -{ - public class Repository : ReadOnlyRepository, IRepository - where TContext : SphinxDbContext - { - public Repository(TContext context) - : base(context) - { - } - - public virtual void Create(TEntity entity, string createdBy = null) - where TEntity : class - { - context.Set().Add(entity); - } - - public virtual void Update(TEntity entity, string modifiedBy = null) - where TEntity : class - { - context.Set().Attach(entity); - context.Entry(entity).State = EntityState.Modified; - } - - public virtual void Delete(object id) - where TEntity : class - { - TEntity entity = context.Set().Find(id); - Delete(entity); - } - - public virtual void Delete(TEntity entity) - where TEntity : class - { - var dbSet = context.Set(); - if (context.Entry(entity).State == EntityState.Detached) - { - dbSet.Attach(entity); - } - dbSet.Remove(entity); - } - - public virtual void Save() - { - try - { - context.SaveChanges(); - } - catch (DbEntityValidationException e) - { - ThrowEnhancedValidationException(e); - } - } - - public virtual Task SaveAsync() - { - try - { - return context.SaveChangesAsync(); - } - catch (DbEntityValidationException e) - { - ThrowEnhancedValidationException(e); - } - - return Task.FromResult(0); - } - - protected virtual void ThrowEnhancedValidationException(DbEntityValidationException e) - { - var errorMessages = e.EntityValidationErrors - .SelectMany(x => x.ValidationErrors) - .Select(x => x.ErrorMessage); - - var fullErrorMessage = string.Join("; ", errorMessages); - var exceptionMessage = string.Concat(e.Message, " The validation errors are: ", fullErrorMessage); - throw new DbEntityValidationException(exceptionMessage, e.EntityValidationErrors); - } - } -} diff --git a/src/Dsp.Repositories/packages.config b/src/Dsp.Repositories/packages.config deleted file mode 100644 index 7771b263..00000000 --- a/src/Dsp.Repositories/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/Dsp.Services/Dsp.Services.csproj b/src/Dsp.Services/Dsp.Services.csproj index 94437ce2..a92277fa 100644 --- a/src/Dsp.Services/Dsp.Services.csproj +++ b/src/Dsp.Services/Dsp.Services.csproj @@ -1,112 +1,21 @@ - - - + - Debug - AnyCPU - {D999933E-F1D3-4E84-9219-B54B7E8E2DC8} + net7.0 Library - Properties - Dsp.Services - Dsp.Services - v4.5.2 - 512 + false + Dsp.Services + Dsp.Services + Copyright © 2016 + 1.0.0.0 + 1.0.0.0 - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll - - - ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll - True - - - ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {9ce07462-20a3-4ee6-8797-7ea69e05acb8} - Dsp.Data - - - {00cf890e-d0b7-45d9-aa1c-73d57cebccff} - Dsp.Repositories - + - - + + + + - - \ No newline at end of file diff --git a/src/Dsp.Services/Exceptions/LaundryExceptions.cs b/src/Dsp.Services/Exceptions/LaundryExceptions.cs index 21d0eb6f..502aa4f8 100644 --- a/src/Dsp.Services/Exceptions/LaundryExceptions.cs +++ b/src/Dsp.Services/Exceptions/LaundryExceptions.cs @@ -1,36 +1,35 @@ using System; -namespace Dsp.Services.Exceptions +namespace Dsp.Services.Exceptions; + +public class LaundrySignupsExceededException : Exception { - public class LaundrySignupsExceededException : Exception + public LaundrySignupsExceededException(string message) : base(message) { - public LaundrySignupsExceededException(string message) : base(message) - { - } } +} - public class LaundrySignupAlreadyExistsException : Exception +public class LaundrySignupAlreadyExistsException : Exception +{ + public LaundrySignupAlreadyExistsException(string message) : base(message) { - public LaundrySignupAlreadyExistsException(string message) : base(message) - { - } } +} - public class LaundrySignupNotFoundException : Exception +public class LaundrySignupNotFoundException : Exception +{ + public LaundrySignupNotFoundException(string message) : base(message) { - public LaundrySignupNotFoundException(string message) : base(message) - { - } } +} - public class LaundrySignupPermissionException : Exception +public class LaundrySignupPermissionException : Exception +{ + public LaundrySignupPermissionException(string message) : base(message) { - public LaundrySignupPermissionException(string message) : base(message) - { - } } } diff --git a/src/Dsp.Services/Exceptions/MealExceptions.cs b/src/Dsp.Services/Exceptions/MealExceptions.cs index 0459e9e0..d301b98f 100644 --- a/src/Dsp.Services/Exceptions/MealExceptions.cs +++ b/src/Dsp.Services/Exceptions/MealExceptions.cs @@ -1,20 +1,19 @@ using System; -namespace Dsp.Services.Exceptions +namespace Dsp.Services.Exceptions; + +public class MealItemAlreadyExistsException : Exception { - public class MealItemAlreadyExistsException : Exception + public MealItemAlreadyExistsException(string message) : base(message) { - public MealItemAlreadyExistsException(string message) : base(message) - { - } } +} - public class MealItemAlreadyAssignedException : Exception +public class MealItemAlreadyAssignedException : Exception +{ + public MealItemAlreadyAssignedException(string message) : base(message) { - public MealItemAlreadyAssignedException(string message) : base(message) - { - } } } diff --git a/src/Dsp.Services/Interfaces/IIncidentService.cs b/src/Dsp.Services/Interfaces/IIncidentService.cs index 1e24197f..846ee300 100644 --- a/src/Dsp.Services/Interfaces/IIncidentService.cs +++ b/src/Dsp.Services/Interfaces/IIncidentService.cs @@ -1,24 +1,23 @@ -namespace Dsp.Services.Interfaces -{ - using Data.Entities; - using System; - using System.Collections.Generic; - using System.Threading.Tasks; +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; - public interface IIncidentService : IService - { - Task, int, int, int>> GetIncidentReportsAsync( - int page = 1, - int pageSize = 10, - bool includeResolved = true, - bool includeUnresolved = false, - string sort = "newest", - string searchTerm = ""); +public interface IIncidentService : IService +{ + Task, int, int, int>> GetIncidentReportsAsync( + int page = 1, + int pageSize = 10, + bool includeResolved = true, + bool includeUnresolved = false, + string sort = "newest", + string searchTerm = ""); - Task GetIncidentReportByIdAsync(int id); + Task GetIncidentReportByIdAsync(int id); - Task CreateIncidentReportAsync(IncidentReport incidentReport); + Task CreateIncidentReportAsync(IncidentReport incidentReport); - Task UpdateIncidentReportAsync(IncidentReport incidentReport); - } -} \ No newline at end of file + Task UpdateIncidentReportAsync(IncidentReport incidentReport); +} diff --git a/src/Dsp.Services/Interfaces/ILaundryService.cs b/src/Dsp.Services/Interfaces/ILaundryService.cs index fd14f20a..7eb82d58 100644 --- a/src/Dsp.Services/Interfaces/ILaundryService.cs +++ b/src/Dsp.Services/Interfaces/ILaundryService.cs @@ -1,16 +1,15 @@ -namespace Dsp.Services.Interfaces -{ - using Data.Entities; - using System; - using System.Collections.Generic; - using System.Threading.Tasks; +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; - public interface ILaundryService : IService - { - Task> GetSignups(DateTime beginningOn); +public interface ILaundryService : IService +{ + Task> GetSignups(DateTime beginningOn); - Task Reserve(LaundrySignup entity, int maxSignupsAllowed = 2); + Task Reserve(LaundrySignup entity, int maxSignupsAllowed = 2); - Task Cancel(LaundrySignup entity); - } -} \ No newline at end of file + Task Cancel(LaundrySignup entity); +} diff --git a/src/Dsp.Services/Interfaces/IMealService.cs b/src/Dsp.Services/Interfaces/IMealService.cs index b7c8c3ce..29bb996c 100644 --- a/src/Dsp.Services/Interfaces/IMealService.cs +++ b/src/Dsp.Services/Interfaces/IMealService.cs @@ -1,34 +1,33 @@ -namespace Dsp.Services.Interfaces -{ - using Data.Entities; - using System; - using System.Collections.Generic; - using System.Threading.Tasks; +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; - public interface IMealService : IService - { - Task> GetAllPeriodsAsync(); - Task> GetAllItemsAsync(); - Task> GetAllVotesByUserIdAsync(int userId); - Task> GetMealItemToPeriodsAsync(DateTime start, DateTime end); - Task> GetMealPlatesAsync(DateTime start, DateTime end); - Task GetItemByIdAsync(int id); - Task GetPeriodByIdAsync(int id); - Task GetPlateByIdAsync(int id); +public interface IMealService : IService +{ + Task> GetAllPeriodsAsync(); + Task> GetAllItemsAsync(); + Task> GetAllVotesByUserIdAsync(int userId); + Task> GetMealItemToPeriodsAsync(DateTime start, DateTime end); + Task> GetMealPlatesAsync(DateTime start, DateTime end); + Task GetItemByIdAsync(int id); + Task GetPeriodByIdAsync(int id); + Task GetPlateByIdAsync(int id); - Task CreateItem(MealItem entity); - Task CreatePeriod(MealPeriod entity); - Task CreatePlate(MealPlate entity); - Task CreateItemToPeriod(MealItemToPeriod entity); + Task CreateItem(MealItem entity); + Task CreatePeriod(MealPeriod entity); + Task CreatePlate(MealPlate entity); + Task CreateItemToPeriod(MealItemToPeriod entity); - Task UpdateItem(MealItem entity); - Task UpdatePeriod(MealPeriod entity); + Task UpdateItem(MealItem entity); + Task UpdatePeriod(MealPeriod entity); - Task DeleteItem(int id); - Task DeletePeriod(int id); - Task DeletePlate(int id); - Task DeleteItemFromPeriod(int id); + Task DeleteItem(int id); + Task DeletePeriod(int id); + Task DeletePlate(int id); + Task DeleteItemFromPeriod(int id); - Task ProcessVote(MealItemVote entity); - } + Task ProcessVote(MealItemVote entity); } \ No newline at end of file diff --git a/src/Dsp.Services/Interfaces/IMemberService.cs b/src/Dsp.Services/Interfaces/IMemberService.cs index 35acf141..695dde63 100644 --- a/src/Dsp.Services/Interfaces/IMemberService.cs +++ b/src/Dsp.Services/Interfaces/IMemberService.cs @@ -1,23 +1,27 @@ -namespace Dsp.Services.Interfaces -{ - using Data.Entities; - using System.Collections.Generic; - using System.Threading.Tasks; +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System.Collections.Generic; +using System.Threading.Tasks; - public interface IMemberService : IService - { - Task GetMemberByIdAsync(int id); - Task GetMemberByUserNameAsync(string userName); - Task> GetActivesAsync(); - Task> GetActivesAsync(int semesterId); - Task> GetActivesAsync(Semester semester); - Task> GetNewMembersAsync(); - Task> GetNewMembersAsync(int semesterId); - Task> GetNewMembersAsync(Semester semester); - Task> GetAlumniAsync(); - Task> GetAlumniAsync(int semesterId); - Task> GetAlumniAsync(Semester semester); - Task> GetRosterForSemesterAsync(int semesterId); - Task> GetRosterForSemesterAsync(Semester semester); - } +public interface IMemberService : IService +{ + Task GetMemberByIdAsync(int id); + Task GetMemberByUserNameAsync(string userName); + Task> GetAllMembersAsync(); + Task> GetActivesAsync(); + Task> GetActivesAsync(int semesterId); + Task> GetActivesAsync(Semester semester); + Task> GetNewMembersAsync(); + Task> GetNewMembersAsync(int semesterId); + Task> GetNewMembersAsync(Semester semester); + Task> GetAlumniAsync(); + Task> GetAlumniAsync(int semesterId); + Task> GetAlumniAsync(Semester semester); + Task> GetCurrentRosterAsync(); + Task> GetRosterForSemesterAsync(int semesterId); + Task> GetRosterForSemesterAsync(Semester semester); + Task GetRemainingServiceHoursForUserAsync(int userId); + Task> GetAllCompletedEventsForUserAsync(int userId); + Task> GetSoberSignupsForUserAsync(int userId, Semester semester); } \ No newline at end of file diff --git a/src/Dsp.Services/Interfaces/IPositionService.cs b/src/Dsp.Services/Interfaces/IPositionService.cs index d297df0c..5318fef6 100644 --- a/src/Dsp.Services/Interfaces/IPositionService.cs +++ b/src/Dsp.Services/Interfaces/IPositionService.cs @@ -1,36 +1,35 @@ -namespace Dsp.Services.Interfaces -{ - using Data.Entities; - using System.Collections.Generic; - using System.Threading.Tasks; +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System.Collections.Generic; +using System.Threading.Tasks; - public interface IPositionService : IService - { - Task> GetAllPositionsAsync(); - Task GetPositionByIdAsync(int id); - Task GetPositionByNameAsync(string name); - Task GetUserInPositionAsync(string positionName, int sid); - Task> GetAppointmentsAsync(int sid); - Task> GetEboardPositionsAsync(); - Task> GetCurrentPositionsByUserAsync(int userId); - Task> GetCurrentPositionsByUserAsync(string userName); - Task GetAdminPositionAsync(); - Task GetAdminAppoinmentForUserAsync(int userId); +public interface IPositionService : IService +{ + Task> GetAllPositionsAsync(); + Task GetPositionByIdAsync(int id); + Task GetPositionByNameAsync(string name); + Task GetUserInPositionAsync(string positionName, int sid); + Task> GetAppointmentsAsync(int sid); + Task> GetEboardPositionsAsync(); + Task> GetCurrentPositionsByUserAsync(int userId); + Task> GetCurrentPositionsByUserAsync(string userName); + Task GetAdminPositionAsync(); + Task GetAdminAppoinmentForUserAsync(int userId); - Task UserIsAdminAsync(int userId); - Task UserIsAdminAsync(string userName); - Task UserHasPositionPowerAsync(int userId, int positionId); - Task UserHasPositionPowerAsync(int userId, string positionName); - Task UserHasPositionPowerAsync(string userName, string positionName); - Task UserHasAtLeastOnePositionPowerAsync(int userId, string[] positionNames); + Task UserIsAdminAsync(int userId); + Task UserIsAdminAsync(string userName); + Task UserHasPositionPowerAsync(int userId, int positionId); + Task UserHasPositionPowerAsync(int userId, string positionName); + Task UserHasPositionPowerAsync(string userName, string positionName); + Task UserHasAtLeastOnePositionPowerAsync(int userId, string[] positionNames); - Task CreatePositionAsync(Position entity); - Task AppointMemberToPositionAsync(int mid, int pid, int sid); + Task CreatePositionAsync(Position entity); + Task AppointMemberToPositionAsync(int mid, int pid, int sid); - Task UpdatePositionAsync(Position entity); + Task UpdatePositionAsync(Position entity); - Task RemovePositionAsync(Position entity); - Task RemovePositionByIdAsync(int id); - Task RemoveMemberFromPositionAsync(int mid, int pid, int sid); - } + Task RemovePositionAsync(Position entity); + Task RemovePositionByIdAsync(int id); + Task RemoveMemberFromPositionAsync(int mid, int pid, int sid); } \ No newline at end of file diff --git a/src/Dsp.Services/Interfaces/IRoleService.cs b/src/Dsp.Services/Interfaces/IRoleService.cs new file mode 100644 index 00000000..8a5a9908 --- /dev/null +++ b/src/Dsp.Services/Interfaces/IRoleService.cs @@ -0,0 +1,35 @@ +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System.Collections.Generic; +using System.Threading.Tasks; + +public interface IRoleService : IService +{ + Task> GetAllRolesAsync(); + Task GetRoleByIdAsync(int id); + Task GetRoleByNameAsync(string roleName); + Task GetUserInRoleAsync(string roleName, int semesterId); + Task> GetAppointmentsAsync(int semesterId); + Task> GetEboardRolesAsync(); + Task> GetCurrentRolesByUserIdAsync(int userId); + Task> GetCurrentRolesByUserNameAsync(string userName); + Task GetAdminRoleAsync(); + Task GetAdminUserRoleForUserAsync(int userId); + + Task UserIsAdminAsync(int userId); + Task UserIsAdminAsync(string userName); + Task UserIsCurrentlyInRoleAsync(int userId, int roleId); + Task UserIsCurrentlyInRoleAsync(int userId, string roleName); + Task UserIsCurrentlyInRoleAsync(string userName, string roleName); + Task UserIsCurrentlyInAtLeastOneRoleAsync(int userId, string[] roleNames); + + Task CreateRoleAsync(Position role); + Task AssignUserToSemesterRoleAsync(int userId, int roleId, int semesterId); + + Task UpdateRoleAsync(Position role); + + Task RemoveRoleAsync(Position role); + Task RemoveRoleByIdAsync(int id); + Task RemoveUserFromSemesterRoleAsync(int userId, int roleId, int semesterId); +} diff --git a/src/Dsp.Services/Interfaces/ISemesterService.cs b/src/Dsp.Services/Interfaces/ISemesterService.cs index 440fca3d..0212428c 100644 --- a/src/Dsp.Services/Interfaces/ISemesterService.cs +++ b/src/Dsp.Services/Interfaces/ISemesterService.cs @@ -1,33 +1,33 @@ -namespace Dsp.Services.Interfaces -{ - using Data.Entities; - using System; - using System.Collections.Generic; - using System.Threading.Tasks; +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; - public interface ISemesterService : IService - { - IList Alphabet { get; } +public interface ISemesterService : IService +{ + IList GreekAlphabet { get; } - Task> GetAllSemestersAsync(); - Task> GetCurrentAndNextSemesterAsync(DateTime? now = null); - Task GetCurrentSemesterAsync(DateTime? now = null); - Task GetSemesterByIdAsync(int id); - Task GetSemesterByUtcDateTimeAsync(DateTime datetime); - Task GetFutureMostSemesterAsync(); - Task> GetPriorSemestersAsync(Semester currentSemester); - Task GetPriorSemesterAsync(Semester currentSemester); - Semester GetEstimatedNextSemester(Semester currentSemester); - PledgeClass GetEstimatedNextPledgeClass(Semester currentSemester); - string GetNextPledgeClassName(string currentPledgeClassName); + Task> GetAllSemestersAsync(); + Task> GetCurrentAndNextSemesterAsync(DateTime? now = null); + Task> GetAllPledgeClassesAsync(); + Task GetCurrentSemesterAsync(DateTime? now = null); + Task GetSemesterByIdAsync(int id); + Task GetSemesterByUtcDateTimeAsync(DateTime datetime); + Task GetFutureMostSemesterAsync(); + Task> GetPriorSemestersAsync(Semester currentSemester); + Task GetPriorSemesterAsync(Semester currentSemester); + Semester GetEstimatedNextSemester(Semester currentSemester); + PledgeClass GetEstimatedNextPledgeClass(Semester currentSemester); + string GetNextPledgeClassName(string currentPledgeClassName); - Task CreateSemesterAsync(Semester semester); - Task CreatePledgeClassAsync(PledgeClass pledgeClass); + Task CreateSemesterAsync(Semester semester); + Task CreatePledgeClassAsync(PledgeClass pledgeClass); - Task UpdateSemesterAsync(Semester semester); - Task UpdatePledgeClassAsync(PledgeClass pledgeClass); + Task UpdateSemesterAsync(Semester semester); + Task UpdatePledgeClassAsync(PledgeClass pledgeClass); - Task DeleteSemesterAsync(int id); - Task DeletePledgeClassAsync(int id); - } + Task DeleteSemesterAsync(int id); + Task DeletePledgeClassAsync(int id); } \ No newline at end of file diff --git a/src/Dsp.Services/Interfaces/IService.cs b/src/Dsp.Services/Interfaces/IService.cs index c44b8767..054d1dec 100644 --- a/src/Dsp.Services/Interfaces/IService.cs +++ b/src/Dsp.Services/Interfaces/IService.cs @@ -1,10 +1,9 @@ using System; -namespace Dsp.Services.Interfaces +namespace Dsp.Services.Interfaces; + +public interface IService { - public interface IService - { - DateTime ConvertUtcToCst(DateTime utc); - DateTime ConvertCstToUtc(DateTime cst); - } + DateTime ConvertUtcToCst(DateTime utc); + DateTime ConvertCstToUtc(DateTime cst); } diff --git a/src/Dsp.Services/Interfaces/IServiceService.cs b/src/Dsp.Services/Interfaces/IServiceService.cs index 58f894b4..dad7c672 100644 --- a/src/Dsp.Services/Interfaces/IServiceService.cs +++ b/src/Dsp.Services/Interfaces/IServiceService.cs @@ -1,37 +1,36 @@ -using Dsp.Data.Entities; +namespace Dsp.Services.Interfaces; + +using Dsp.Data.Entities; using Dsp.Services.Models; using System.Collections.Generic; using System.Threading.Tasks; -namespace Dsp.Services.Interfaces +public interface IServiceService : IService { - public interface IServiceService : IService - { - Task> GetEventsForSemesterAsync(Semester semester); - Task> GetSemestersWithEventsAsync(Semester currentSemester, bool includeCurrent = true); - Task GetEventByIdAsync(int id); - Task GetHoursAsync(int eventId, int userId); - Task> GetEventAmendmentsBySemesterIdAsync(int semesterId); - Task> GetHoursAmendmentsBySemesterIdAsync(int semesterId); - Task GetEventAmendmentByIdAsync(int id); - Task GetHoursAmendmentByIdAsync(int id); + Task> GetEventsForSemesterAsync(Semester semester); + Task> GetSemestersWithEventsAsync(Semester currentSemester, bool includeCurrent = true); + Task GetEventByIdAsync(int id); + Task GetHoursAsync(int eventId, int userId); + Task> GetEventAmendmentsBySemesterIdAsync(int semesterId); + Task> GetHoursAmendmentsBySemesterIdAsync(int semesterId); + Task GetEventAmendmentByIdAsync(int id); + Task GetHoursAmendmentByIdAsync(int id); - Task CreateEventAsync(ServiceEvent serviceEvent); - Task CreateHoursAsync(ServiceHour serviceHours); - Task CreateEventAmendmentAsync(ServiceEventAmendment eventAmendment); - Task CreateHoursAmendmentAsync(ServiceHourAmendment hoursAmendment); + Task CreateEventAsync(ServiceEvent serviceEvent); + Task CreateHoursAsync(ServiceHour serviceHours); + Task CreateEventAmendmentAsync(ServiceEventAmendment eventAmendment); + Task CreateHoursAmendmentAsync(ServiceHourAmendment hoursAmendment); - Task UpdateEventAsync(ServiceEvent serviceEvent); - Task UpdateHoursAsync(ServiceHour serviceHours); + Task UpdateEventAsync(ServiceEvent serviceEvent); + Task UpdateHoursAsync(ServiceHour serviceHours); - Task DeleteEventByIdAsync(int id); - Task DeleteHoursAsync(ServiceHour serviceHours); - Task DeleteEventAmendmentByIdAsync(int id); - Task DeleteHoursAmendmentByIdAsync(int id); + Task DeleteEventByIdAsync(int id); + Task DeleteHoursAsync(ServiceHour serviceHours); + Task DeleteEventAmendmentByIdAsync(int id); + Task DeleteHoursAmendmentByIdAsync(int id); - Task> GetGeneralHistoricalStatsAsync(); - Task> GetRosterProgressBySemesterIdAsync(int sid); - Task GetMemberStatsBySemesterIdAsync(int sid); - Task GetHourStatsBySemesterIdAsync(int sid); - } + Task> GetGeneralHistoricalStatsAsync(); + Task> GetRosterProgressBySemesterIdAsync(int sid); + Task GetMemberStatsBySemesterIdAsync(int sid); + Task GetHourStatsBySemesterIdAsync(int sid); } diff --git a/src/Dsp.Services/Interfaces/ISoberService.cs b/src/Dsp.Services/Interfaces/ISoberService.cs index cad5151a..e8173e28 100644 --- a/src/Dsp.Services/Interfaces/ISoberService.cs +++ b/src/Dsp.Services/Interfaces/ISoberService.cs @@ -1,27 +1,26 @@ -namespace Dsp.Services.Interfaces -{ - using Dsp.Data.Entities; - using System; - using System.Collections.Generic; - using System.Threading.Tasks; +namespace Dsp.Services.Interfaces; + +using Dsp.Data.Entities; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; - public interface ISoberService : IService - { - Task> GetUpcomingSignupsAsync(); - Task> GetUpcomingSignupsAsync(DateTime date); - Task> GetAllFutureSignupsAsync(); - Task> GetAllFutureSignupsAsync(DateTime start); - Task> GetFutureVacantSignups(); - Task> GetTypesAsync(); +public interface ISoberService : IService +{ + Task> GetUpcomingSignupsAsync(); + Task> GetUpcomingSignupsAsync(DateTime date); + Task> GetAllFutureSignupsAsync(); + Task> GetAllFutureSignupsAsync(DateTime start); + Task> GetFutureVacantSignups(); + Task> GetTypesAsync(); - Task CreateSignupAsync(SoberSignup signup); - Task CreateSignupsAsync(IEnumerable signups); - Task CreateTypeAsync(SoberType type); + Task CreateSignupAsync(SoberSignup signup); + Task CreateSignupsAsync(IEnumerable signups); + Task CreateTypeAsync(SoberType type); - Task UpdateSignupAsync(SoberSignup signup); - Task UpdateTypeAsync(SoberType type); + Task UpdateSignupAsync(SoberSignup signup); + Task UpdateTypeAsync(SoberType type); - Task DeleteSignupAsync(int id); - Task DeleteTypeAsync(int id); - } + Task DeleteSignupAsync(int id); + Task DeleteTypeAsync(int id); } \ No newline at end of file diff --git a/src/Dsp.Services/Interfaces/IStatusService.cs b/src/Dsp.Services/Interfaces/IStatusService.cs deleted file mode 100644 index 13e89dbf..00000000 --- a/src/Dsp.Services/Interfaces/IStatusService.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Dsp.Services.Interfaces -{ - using Data.Entities; - using System.Collections.Generic; - using System.Threading.Tasks; - - public interface IStatusService : IService - { - Task> GetAllStatusesAsync(); - Task GetStatusByIdAsync(int id); - Task CreateStatus(MemberStatus status); - Task UpdateStatus(MemberStatus status); - Task DeleteStatus(int id); - } -} \ No newline at end of file diff --git a/src/Dsp.Services/Interfaces/ITreasuryService.cs b/src/Dsp.Services/Interfaces/ITreasuryService.cs deleted file mode 100644 index bb73b51a..00000000 --- a/src/Dsp.Services/Interfaces/ITreasuryService.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Dsp.Services.Interfaces -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Threading.Tasks; - - public interface ITreasuryService : IService - { - Task GetCauseByIdAsync(int id); - Task> GetAllCausesAsync(); - Task GetFundraiserByIdAsync(int id); - Task> GetAllFundraisersAsync(); - Task> GetActiveFundraisersAsync(); - Task> GetActivePledgeableFundraisersAsync(); - Task GetDonationByIdAsync(int id); - - Task CreateCauseAsync(Cause signup); - Task CreateFundraiserAsync(Fundraiser signups); - Task CreateDonationAsync(Donation type); - - Task UpdateCauseAsync(Cause signup); - Task UpdateFundraiserAsync(Fundraiser type); - Task UpdateDonationAsync(Donation type); - - Task DeleteCauseAsync(int id); - Task DeleteFundraiserAsync(int id); - Task DeleteDonationAsync(int id); - } -} \ No newline at end of file diff --git a/src/Dsp.Services/Interfaces/IUserService.cs b/src/Dsp.Services/Interfaces/IUserService.cs new file mode 100644 index 00000000..20a6b526 --- /dev/null +++ b/src/Dsp.Services/Interfaces/IUserService.cs @@ -0,0 +1,10 @@ +namespace Dsp.Services.Interfaces; + +using Data.Entities; +using System.Threading.Tasks; + +public interface IUserService : IService +{ + Task GetUserByIdAsync(int id); + Task GetUserByUserNameAsync(string userName); +} \ No newline at end of file diff --git a/src/Dsp.Services/Models/ServiceGeneralHistoricalStats.cs b/src/Dsp.Services/Models/ServiceGeneralHistoricalStats.cs index 6b0ae449..a8406730 100644 --- a/src/Dsp.Services/Models/ServiceGeneralHistoricalStats.cs +++ b/src/Dsp.Services/Models/ServiceGeneralHistoricalStats.cs @@ -1,48 +1,47 @@ -using Dsp.Data.Entities; +namespace Dsp.Services.Models; + +using Dsp.Data.Entities; using System; using System.Collections.Generic; using System.Linq; -namespace Dsp.Services.Models +public class ServiceGeneralHistoricalStats { - public class ServiceGeneralHistoricalStats + public int SemesterId { get; } + public string SemesterName { get; } + public int NumberOfEvents { get; } + public double TotalHours { get; } + public double AverageHours { get; } + public int BiggestEventId { get; } + public string BiggestEventName { get; } + public DateTime CalculatedOn { get; } + + public ServiceGeneralHistoricalStats( + Semester semester, + IEnumerable nonExemptMembers, + DateTime calculatedOn) { - public int SemesterId { get; } - public string SemesterName { get; } - public int NumberOfEvents { get; } - public double TotalHours { get; } - public double AverageHours { get; } - public int BiggestEventId { get; } - public string BiggestEventName { get; } - public DateTime CalculatedOn { get; } + SemesterId = semester.Id; + SemesterName = semester.ToString(); - public ServiceGeneralHistoricalStats( - Semester semester, - IEnumerable nonExemptMembers, - DateTime calculatedOn) + var approvedServiceEvents = semester.ServiceEvents + .Where(x => x.IsApproved); + NumberOfEvents = approvedServiceEvents.Count(); + TotalHours = approvedServiceEvents + .SelectMany(x => x.ServiceHours) + .Where(x => nonExemptMembers.Contains(x.User)) + .Sum(x => x.DurationHours); + AverageHours = TotalHours / nonExemptMembers.Count(); + AverageHours = Math.Round(AverageHours, 2); + var biggestEvent = approvedServiceEvents + .OrderByDescending(x => x.ServiceHours.Sum(h => h.DurationHours)) + .FirstOrDefault(); + if (biggestEvent != null) { - SemesterId = semester.Id; - SemesterName = semester.ToString(); - - var approvedServiceEvents = semester.ServiceEvents - .Where(x => x.IsApproved); - NumberOfEvents = approvedServiceEvents.Count(); - TotalHours = approvedServiceEvents - .SelectMany(x => x.ServiceHours) - .Where(x => nonExemptMembers.Contains(x.Member)) - .Sum(x => x.DurationHours); - AverageHours = TotalHours / nonExemptMembers.Count(); - AverageHours = Math.Round(AverageHours, 2); - var biggestEvent = approvedServiceEvents - .OrderByDescending(x => x.ServiceHours.Sum(h => h.DurationHours)) - .FirstOrDefault(); - if (biggestEvent != null) - { - BiggestEventId = biggestEvent.EventId; - BiggestEventName = biggestEvent.EventName; - } - - CalculatedOn = calculatedOn; + BiggestEventId = biggestEvent.EventId; + BiggestEventName = biggestEvent.EventName; } + + CalculatedOn = calculatedOn; } } diff --git a/src/Dsp.Services/Models/ServiceHourStats.cs b/src/Dsp.Services/Models/ServiceHourStats.cs index 6764363f..2876c02e 100644 --- a/src/Dsp.Services/Models/ServiceHourStats.cs +++ b/src/Dsp.Services/Models/ServiceHourStats.cs @@ -1,44 +1,43 @@ -using System; +namespace Dsp.Services.Models; + +using System; using System.Collections.Generic; using System.Linq; -namespace Dsp.Services.Models +public class ServiceHourStats { - public class ServiceHourStats - { - public int UnadjustedMemberCount { get; private set; } - public int AdjustedMemberCount { get; private set; } - public float TargetPercentage { get; private set; } - public IEnumerable Months { get; private set; } - public IEnumerable TargetMemberCount { get; private set; } - public IEnumerable MoreThanZeroHours { get; private set; } - public IEnumerable FiveOrMoreHours { get; private set; } - public IEnumerable TenOrMoreHours { get; private set; } - public IEnumerable FifteenOrMoreHours { get; private set; } - public DateTime CalculatedOn { get; } + public int UnadjustedMemberCount { get; private set; } + public int AdjustedMemberCount { get; private set; } + public float TargetPercentage { get; private set; } + public IEnumerable Months { get; private set; } + public IEnumerable TargetMemberCount { get; private set; } + public IEnumerable MoreThanZeroHours { get; private set; } + public IEnumerable FiveOrMoreHours { get; private set; } + public IEnumerable TenOrMoreHours { get; private set; } + public IEnumerable FifteenOrMoreHours { get; private set; } + public DateTime CalculatedOn { get; } - public ServiceHourStats( - int unadjustedMemberCount, - int adjustedMemberCount, - IEnumerable months, - IEnumerable moreThanZeroHours, - IEnumerable fiveOrMoreHours, - IEnumerable tenOrMoreHours, - IEnumerable fifteenOrMoreHours, - DateTime calculatedOn, - float targetPercentage = 0.8f) - { - UnadjustedMemberCount = unadjustedMemberCount; - AdjustedMemberCount = adjustedMemberCount; - TargetPercentage = targetPercentage; - var target = (int)Math.Ceiling(adjustedMemberCount * targetPercentage); - TargetMemberCount = Enumerable.Repeat(target, moreThanZeroHours.Count()); - Months = months; - MoreThanZeroHours = moreThanZeroHours; - FiveOrMoreHours = fiveOrMoreHours; - TenOrMoreHours = tenOrMoreHours; - FifteenOrMoreHours = fifteenOrMoreHours; - CalculatedOn = calculatedOn; - } + public ServiceHourStats( + int unadjustedMemberCount, + int adjustedMemberCount, + IEnumerable months, + IEnumerable moreThanZeroHours, + IEnumerable fiveOrMoreHours, + IEnumerable tenOrMoreHours, + IEnumerable fifteenOrMoreHours, + DateTime calculatedOn, + float targetPercentage = 0.8f) + { + UnadjustedMemberCount = unadjustedMemberCount; + AdjustedMemberCount = adjustedMemberCount; + TargetPercentage = targetPercentage; + var target = (int)Math.Ceiling(adjustedMemberCount * targetPercentage); + TargetMemberCount = Enumerable.Repeat(target, moreThanZeroHours.Count()); + Months = months; + MoreThanZeroHours = moreThanZeroHours; + FiveOrMoreHours = fiveOrMoreHours; + TenOrMoreHours = tenOrMoreHours; + FifteenOrMoreHours = fifteenOrMoreHours; + CalculatedOn = calculatedOn; } } diff --git a/src/Dsp.Services/Models/ServiceMemberProgress.cs b/src/Dsp.Services/Models/ServiceMemberProgress.cs index 983c463a..65017365 100644 --- a/src/Dsp.Services/Models/ServiceMemberProgress.cs +++ b/src/Dsp.Services/Models/ServiceMemberProgress.cs @@ -1,105 +1,104 @@ -using Dsp.Data.Entities; +namespace Dsp.Services.Models; + +using Dsp.Data.Entities; using System; using System.Collections.Generic; using System.Linq; -namespace Dsp.Services.Models +public class ServiceMemberProgress { - public class ServiceMemberProgress - { - public int MemberId { get; } - public string Name { get { return $"{LastName}, {FirstName}"; } } - public string FirstName { get; } - public string LastName { get; } - public int NewMemberClassSemesterId { get; } - public double Hours { get; set; } - public double HoursGoal { get; } - public int EventsGoal { get; } - public double Percentage { get; } - public IEnumerable Submissions { get; set; } - public int ServiceHoursCount { get; } - public string HourAmendmentsDisplay { get; } - public int HourAmendmentsCount { get; } - public double HourAmendmentsTotal { get; } - public string EventAmendmentsDisplay { get; } - public int EventAmendmentsCount { get; } - public int EventAmendmentsTotal { get; } - public DateTime CalculatedOn { get; } = DateTime.UtcNow; + public int MemberId { get; } + public string Name { get { return $"{LastName}, {FirstName}"; } } + public string FirstName { get; } + public string LastName { get; } + public int NewMemberClassSemesterId { get; } + public double Hours { get; set; } + public double HoursGoal { get; } + public int EventsGoal { get; } + public double Percentage { get; } + public IEnumerable Submissions { get; set; } + public int ServiceHoursCount { get; } + public string HourAmendmentsDisplay { get; } + public int HourAmendmentsCount { get; } + public double HourAmendmentsTotal { get; } + public string EventAmendmentsDisplay { get; } + public int EventAmendmentsCount { get; } + public int EventAmendmentsTotal { get; } + public DateTime CalculatedOn { get; } = DateTime.UtcNow; - public ServiceMemberProgress( - Semester selectedSemester, - Member member, - DateTime calculatedOn) - { - MemberId = member.Id; - FirstName = member.FirstName; - LastName = member.LastName; - NewMemberClassSemesterId = member.PledgeClass.SemesterId; + public ServiceMemberProgress( + Semester selectedSemester, + Member member, + DateTime calculatedOn) + { + MemberId = member.Id; + FirstName = member.FirstName; + LastName = member.LastName; + NewMemberClassSemesterId = member.PledgeClass.SemesterId; - var serviceHours = member.ServiceHours - .Where(e => - e.Event.IsApproved && - e.Event.SemesterId == selectedSemester.Id).ToList(); - ServiceHoursCount = serviceHours.Count(); - Hours = serviceHours.Sum(h => h.DurationHours); - Submissions = serviceHours.Select(x => new ServiceEventProgress(x)); + var serviceHours = member.ServiceHours + .Where(e => + e.Event.IsApproved && + e.Event.SemesterId == selectedSemester.Id).ToList(); + ServiceHoursCount = serviceHours.Count(); + Hours = serviceHours.Sum(h => h.DurationHours); + Submissions = serviceHours.Select(x => new ServiceEventProgress(x)); - var hourAmendments = selectedSemester.ServiceHourAmendments.Where(a => a.UserId == member.Id).ToList(); - HourAmendmentsCount = hourAmendments.Count(); - HourAmendmentsTotal = hourAmendments.Sum(a => a.AmountHours); - var eventAmendments = selectedSemester.ServiceEventAmendments.Where(a => a.UserId == member.Id).ToList(); - EventAmendmentsCount = eventAmendments.Count(); - EventAmendmentsTotal = eventAmendments.Sum(a => a.NumberEvents); - HoursGoal = selectedSemester.MinimumServiceHours + HourAmendmentsTotal; - EventsGoal = selectedSemester.MinimumServiceEvents + EventAmendmentsTotal; - Percentage = Hours * 100.0; - if (HoursGoal > 0) - { - Percentage /= HoursGoal; - } - Percentage = Math.Round(Percentage, 2); + var hourAmendments = selectedSemester.ServiceHourAmendments.Where(a => a.UserId == member.Id).ToList(); + HourAmendmentsCount = hourAmendments.Count(); + HourAmendmentsTotal = hourAmendments.Sum(a => a.AmountHours); + var eventAmendments = selectedSemester.ServiceEventAmendments.Where(a => a.UserId == member.Id).ToList(); + EventAmendmentsCount = eventAmendments.Count(); + EventAmendmentsTotal = eventAmendments.Sum(a => a.NumberEvents); + HoursGoal = selectedSemester.MinimumServiceHours + HourAmendmentsTotal; + EventsGoal = selectedSemester.MinimumServiceEvents + EventAmendmentsTotal; + Percentage = Hours * 100.0; + if (HoursGoal > 0) + { + Percentage /= HoursGoal; + } + Percentage = Math.Round(Percentage, 2); - HourAmendmentsDisplay = string.Empty; - for (var i = 0; i < HourAmendmentsCount; i++) + HourAmendmentsDisplay = string.Empty; + for (var i = 0; i < HourAmendmentsCount; i++) + { + var amd = hourAmendments.ElementAt(i); + HourAmendmentsDisplay = $"{amd.Reason} ({amd.AmountHours} hr{(!amd.AmountHours.Equals(1) ? "s" : "")})"; + if (i < HourAmendmentsCount - 1) { - var amd = hourAmendments.ElementAt(i); - HourAmendmentsDisplay = $"{amd.Reason} ({amd.AmountHours} hr{(!amd.AmountHours.Equals(1) ? "s" : "")})"; - if (i < HourAmendmentsCount - 1) - { - HourAmendmentsDisplay += ","; - } + HourAmendmentsDisplay += ","; } + } - EventAmendmentsDisplay = string.Empty; - for (var i = 0; i < EventAmendmentsCount; i++) + EventAmendmentsDisplay = string.Empty; + for (var i = 0; i < EventAmendmentsCount; i++) + { + var amd = eventAmendments.ElementAt(i); + EventAmendmentsDisplay = $"{amd.Reason} ({amd.NumberEvents} event{(!amd.NumberEvents.Equals(1) ? "s" : "")})"; + if (i < EventAmendmentsCount - 1) { - var amd = eventAmendments.ElementAt(i); - EventAmendmentsDisplay = $"{amd.Reason} ({amd.NumberEvents} event{(!amd.NumberEvents.Equals(1) ? "s" : "")})"; - if (i < EventAmendmentsCount - 1) - { - EventAmendmentsDisplay += ","; - } + EventAmendmentsDisplay += ","; } - - CalculatedOn = calculatedOn; } + + CalculatedOn = calculatedOn; } +} - public class ServiceEventProgress - { - public int EventId { get; } - public string EventName { get; } - public double EventDuration { get; } - public double HoursServed { get; } - public int PercentageOfEvent { get; } +public class ServiceEventProgress +{ + public int EventId { get; } + public string EventName { get; } + public double EventDuration { get; } + public double HoursServed { get; } + public int PercentageOfEvent { get; } - public ServiceEventProgress(ServiceHour serviceHour) - { - EventId = serviceHour.EventId; - EventName = serviceHour.Event.EventName; - EventDuration = serviceHour.Event.DurationHours; - HoursServed = serviceHour.DurationHours; - PercentageOfEvent = (int)(serviceHour.DurationHours / serviceHour.Event.DurationHours * 100.0); - } + public ServiceEventProgress(ServiceHour serviceHour) + { + EventId = serviceHour.EventId; + EventName = serviceHour.Event.EventName; + EventDuration = serviceHour.Event.DurationHours; + HoursServed = serviceHour.DurationHours; + PercentageOfEvent = (int)(serviceHour.DurationHours / serviceHour.Event.DurationHours * 100.0); } } diff --git a/src/Dsp.Services/Models/ServiceMemberStats.cs b/src/Dsp.Services/Models/ServiceMemberStats.cs index 82135466..dd1b5257 100644 --- a/src/Dsp.Services/Models/ServiceMemberStats.cs +++ b/src/Dsp.Services/Models/ServiceMemberStats.cs @@ -1,120 +1,119 @@ -using System; +namespace Dsp.Services.Models; -namespace Dsp.Services.Models +using System; + +public class ServiceMemberStats { - public class ServiceMemberStats - { - public int NonExemptMemberCount { get; } - public int ExemptMemberCount { get; } - public int NonExemptActiveMemberCount { get; } - public int NonExemptNewMemberCount { get; } - public double TotalMemberHours { get; } - public double TotalActiveHours { get; } - public double TotalNewMemberHours { get; } - public int AllMembersServed { get; } - public int AllMembersServedPercentage { get; } - public int ActiveMembersServed { get; } - public int ActiveMembersServedPercentage { get; } - public int NewMembersServed { get; } - public int NewMembersServedPercentage { get; } - public int AllMembersServedTen { get; } - public int AllMembersServedTenPercentage { get; } - public int ActiveMembersServedTen { get; } - public int ActiveMembersServedTenPercentage { get; } - public int NewMembersServedTen { get; } - public int NewMembersServedTenPercentage { get; } - public int AllMembersServedFifteen { get; } - public int AllMembersServedFifteenPercentage { get; } - public int ActiveMembersServedFifteen { get; } - public int ActiveMembersServedFifteenPercentage { get; } - public int NewMembersServedFifteen { get; } - public int NewMembersServedFifteenPercentage { get; } - public string AverageAllMemberHours { get; } - public string AverageActiveMemberHours { get; } - public string AverageNewMemberHours { get; } - public int AverageAllMemberAttendance { get; } - public int AverageAllMemberAttendancePercentage { get; } - public int AverageActiveMemberAttendance { get; } - public int AverageActiveMemberAttendancePercentage { get; } - public int AverageNewMemberAttendance { get; } - public int AverageNewMemberAttendancePercentage { get; } - public string ExemptMembersDisplay { get; } - public DateTime CalculatedOn { get; } + public int NonExemptMemberCount { get; } + public int ExemptMemberCount { get; } + public int NonExemptActiveMemberCount { get; } + public int NonExemptNewMemberCount { get; } + public double TotalMemberHours { get; } + public double TotalActiveHours { get; } + public double TotalNewMemberHours { get; } + public int AllMembersServed { get; } + public int AllMembersServedPercentage { get; } + public int ActiveMembersServed { get; } + public int ActiveMembersServedPercentage { get; } + public int NewMembersServed { get; } + public int NewMembersServedPercentage { get; } + public int AllMembersServedTen { get; } + public int AllMembersServedTenPercentage { get; } + public int ActiveMembersServedTen { get; } + public int ActiveMembersServedTenPercentage { get; } + public int NewMembersServedTen { get; } + public int NewMembersServedTenPercentage { get; } + public int AllMembersServedFifteen { get; } + public int AllMembersServedFifteenPercentage { get; } + public int ActiveMembersServedFifteen { get; } + public int ActiveMembersServedFifteenPercentage { get; } + public int NewMembersServedFifteen { get; } + public int NewMembersServedFifteenPercentage { get; } + public string AverageAllMemberHours { get; } + public string AverageActiveMemberHours { get; } + public string AverageNewMemberHours { get; } + public int AverageAllMemberAttendance { get; } + public int AverageAllMemberAttendancePercentage { get; } + public int AverageActiveMemberAttendance { get; } + public int AverageActiveMemberAttendancePercentage { get; } + public int AverageNewMemberAttendance { get; } + public int AverageNewMemberAttendancePercentage { get; } + public string ExemptMembersDisplay { get; } + public DateTime CalculatedOn { get; } - public ServiceMemberStats( - int nonExemptMemberCount, - int exemptMemberCount, - int nonExemptActiveMemberCount, - int nonExemptNewMemberCount, - double totalAllMemberHours, - double totalActiveMemberHours, - double totalNewMemberHours, - int allMembersServed, - int allMembersServedPercentage, - int activeMembersServed, - int activeMembersServedPercentage, - int newMembersServed, - int newMembersServedPercentage, - int allMembersServedTen, - int allMembersServedTenPercentage, - int activeMembersServedTen, - int activeMembersServedTenPercentage, - int newMembersServedTen, - int newMembersServedTenPercentage, - int allMembersServedFifteen, - int allMembersServedFifteenPercentage, - int activeMembersServedFifteen, - int activeMembersServedFifteenPercentage, - int newMembersServedFifteen, - int newMembersServedFifteenPercentage, - string averageAllMemberHours, - string averageActiveMemberHours, - string averageNewMemberHours, - int averageAllMemberAttendance, - int averageAllMemberAttendancePercentage, - int averageActiveMemberAttendance, - int averageActiveMemberAttendancePercentage, - int averageNewMemberAttendance, - int averageNewMemberAttendancePercentage, - string exemptMembersDisplay, - DateTime calculatedOn) - { - NonExemptMemberCount = nonExemptMemberCount; - ExemptMemberCount = exemptMemberCount; - NonExemptActiveMemberCount = nonExemptActiveMemberCount; - NonExemptNewMemberCount = nonExemptNewMemberCount; - TotalMemberHours = totalAllMemberHours; - TotalActiveHours = totalActiveMemberHours; - TotalNewMemberHours = totalNewMemberHours; - AllMembersServed = allMembersServed; - AllMembersServedPercentage = allMembersServedPercentage; - ActiveMembersServed = activeMembersServed; - ActiveMembersServedPercentage = activeMembersServedPercentage; - NewMembersServed = newMembersServed; - NewMembersServedPercentage = newMembersServedPercentage; - AllMembersServedTen = allMembersServedTen; - AllMembersServedTenPercentage = allMembersServedTenPercentage; - ActiveMembersServedTen = activeMembersServedTen; - ActiveMembersServedTenPercentage = activeMembersServedTenPercentage; - NewMembersServedTen = newMembersServedTen; - NewMembersServedTenPercentage = newMembersServedTenPercentage; - AllMembersServedFifteen = allMembersServedFifteen; - AllMembersServedFifteenPercentage = allMembersServedFifteenPercentage; - ActiveMembersServedFifteen = activeMembersServedFifteen; - ActiveMembersServedFifteenPercentage = activeMembersServedFifteenPercentage; - NewMembersServedFifteen = newMembersServedFifteen; - NewMembersServedFifteenPercentage = newMembersServedFifteenPercentage; - AverageAllMemberHours = averageAllMemberHours; - AverageActiveMemberHours = averageActiveMemberHours; - AverageNewMemberHours = averageNewMemberHours; - AverageAllMemberAttendance = averageAllMemberAttendance; - AverageAllMemberAttendancePercentage = averageAllMemberAttendancePercentage; - AverageActiveMemberAttendance = averageActiveMemberAttendance; - AverageActiveMemberAttendancePercentage = averageActiveMemberAttendancePercentage; - AverageNewMemberAttendance = averageNewMemberAttendance; - AverageNewMemberAttendancePercentage = averageNewMemberAttendancePercentage; - ExemptMembersDisplay = exemptMembersDisplay; - CalculatedOn = calculatedOn; - } + public ServiceMemberStats( + int nonExemptMemberCount, + int exemptMemberCount, + int nonExemptActiveMemberCount, + int nonExemptNewMemberCount, + double totalAllMemberHours, + double totalActiveMemberHours, + double totalNewMemberHours, + int allMembersServed, + int allMembersServedPercentage, + int activeMembersServed, + int activeMembersServedPercentage, + int newMembersServed, + int newMembersServedPercentage, + int allMembersServedTen, + int allMembersServedTenPercentage, + int activeMembersServedTen, + int activeMembersServedTenPercentage, + int newMembersServedTen, + int newMembersServedTenPercentage, + int allMembersServedFifteen, + int allMembersServedFifteenPercentage, + int activeMembersServedFifteen, + int activeMembersServedFifteenPercentage, + int newMembersServedFifteen, + int newMembersServedFifteenPercentage, + string averageAllMemberHours, + string averageActiveMemberHours, + string averageNewMemberHours, + int averageAllMemberAttendance, + int averageAllMemberAttendancePercentage, + int averageActiveMemberAttendance, + int averageActiveMemberAttendancePercentage, + int averageNewMemberAttendance, + int averageNewMemberAttendancePercentage, + string exemptMembersDisplay, + DateTime calculatedOn) + { + NonExemptMemberCount = nonExemptMemberCount; + ExemptMemberCount = exemptMemberCount; + NonExemptActiveMemberCount = nonExemptActiveMemberCount; + NonExemptNewMemberCount = nonExemptNewMemberCount; + TotalMemberHours = totalAllMemberHours; + TotalActiveHours = totalActiveMemberHours; + TotalNewMemberHours = totalNewMemberHours; + AllMembersServed = allMembersServed; + AllMembersServedPercentage = allMembersServedPercentage; + ActiveMembersServed = activeMembersServed; + ActiveMembersServedPercentage = activeMembersServedPercentage; + NewMembersServed = newMembersServed; + NewMembersServedPercentage = newMembersServedPercentage; + AllMembersServedTen = allMembersServedTen; + AllMembersServedTenPercentage = allMembersServedTenPercentage; + ActiveMembersServedTen = activeMembersServedTen; + ActiveMembersServedTenPercentage = activeMembersServedTenPercentage; + NewMembersServedTen = newMembersServedTen; + NewMembersServedTenPercentage = newMembersServedTenPercentage; + AllMembersServedFifteen = allMembersServedFifteen; + AllMembersServedFifteenPercentage = allMembersServedFifteenPercentage; + ActiveMembersServedFifteen = activeMembersServedFifteen; + ActiveMembersServedFifteenPercentage = activeMembersServedFifteenPercentage; + NewMembersServedFifteen = newMembersServedFifteen; + NewMembersServedFifteenPercentage = newMembersServedFifteenPercentage; + AverageAllMemberHours = averageAllMemberHours; + AverageActiveMemberHours = averageActiveMemberHours; + AverageNewMemberHours = averageNewMemberHours; + AverageAllMemberAttendance = averageAllMemberAttendance; + AverageAllMemberAttendancePercentage = averageAllMemberAttendancePercentage; + AverageActiveMemberAttendance = averageActiveMemberAttendance; + AverageActiveMemberAttendancePercentage = averageActiveMemberAttendancePercentage; + AverageNewMemberAttendance = averageNewMemberAttendance; + AverageNewMemberAttendancePercentage = averageNewMemberAttendancePercentage; + ExemptMembersDisplay = exemptMembersDisplay; + CalculatedOn = calculatedOn; } } diff --git a/src/Dsp.Services/Properties/AssemblyInfo.cs b/src/Dsp.Services/Properties/AssemblyInfo.cs index a0f772cf..cb1503a7 100644 --- a/src/Dsp.Services/Properties/AssemblyInfo.cs +++ b/src/Dsp.Services/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dsp.Services")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dsp.Services")] -[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("d999933e-f1d3-4e84-9219-b54b7e8e2dc8")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Dsp.Services/Services/BaseService.cs b/src/Dsp.Services/Services/BaseService.cs index 241f7351..04e4a1b9 100644 --- a/src/Dsp.Services/Services/BaseService.cs +++ b/src/Dsp.Services/Services/BaseService.cs @@ -1,55 +1,54 @@ -using Dsp.Services.Interfaces; +namespace Dsp.Services; + +using Dsp.Services.Interfaces; using System; using System.Globalization; -namespace Dsp.Services +public abstract class BaseService : IService { - public abstract class BaseService : IService + public BaseService() { - public BaseService() - { - } + } - public virtual DateTime ConvertUtcToCst(DateTime utc) - { - var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - return TimeZoneInfo.ConvertTimeFromUtc(utc, cstZone); - } + public virtual DateTime ConvertUtcToCst(DateTime utc) + { + var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); + return TimeZoneInfo.ConvertTimeFromUtc(utc, cstZone); + } - public virtual DateTime ConvertCstToUtc(DateTime cst) - { - var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - return TimeZoneInfo.ConvertTimeToUtc(cst, cstZone); - } + public virtual DateTime ConvertCstToUtc(DateTime cst) + { + var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); + return TimeZoneInfo.ConvertTimeToUtc(cst, cstZone); + } - protected virtual string ToTitleCaseString(string original) - { - var formattedText = string.Empty; + protected virtual string ToTitleCaseString(string original) + { + var formattedText = string.Empty; - var words = original.Split(' '); - for (var i = 0; i < words.Length; i++) + var words = original.Split(' '); + for (var i = 0; i < words.Length; i++) + { + if (!IsAllUpper(words[i]) && !Char.IsNumber(words[i][0])) { - if (!IsAllUpper(words[i]) && !Char.IsNumber(words[i][0])) - { - words[i] = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(words[i].ToLowerInvariant()); - } - formattedText += words[i]; - if (i < words.Length - 1) - formattedText += " "; + words[i] = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(words[i].ToLowerInvariant()); } - - return formattedText; + formattedText += words[i]; + if (i < words.Length - 1) + formattedText += " "; } - private bool IsAllUpper(string input) + return formattedText; + } + + private bool IsAllUpper(string input) + { + for (var i = 0; i < input.Length; i++) { - for (var i = 0; i < input.Length; i++) - { - if (Char.IsLetter(input[i]) && !Char.IsUpper(input[i])) - return false; - } - return true; + if (Char.IsLetter(input[i]) && !Char.IsUpper(input[i])) + return false; } + return true; } } diff --git a/src/Dsp.Services/Services/IncidentService.cs b/src/Dsp.Services/Services/IncidentService.cs index 8352b1e8..fc48b8bb 100644 --- a/src/Dsp.Services/Services/IncidentService.cs +++ b/src/Dsp.Services/Services/IncidentService.cs @@ -1,104 +1,92 @@ -namespace Dsp.Services +namespace Dsp.Services; + +using Data; +using Dsp.Data.Entities; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +public class IncidentService : BaseService, IIncidentService { - using Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Interfaces; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; + private readonly DspDbContext _context; - public class IncidentService : BaseService, IIncidentService + public IncidentService(DspDbContext context) { - private readonly IRepository _repository; - - public IncidentService() : this(new Repository(new SphinxDbContext())) - { - - } - - public IncidentService(SphinxDbContext db) : this(new Repository(db)) - { - - } + _context = context; + } - public IncidentService(IRepository repository) + public async Task, int, int, int>> GetIncidentReportsAsync( + int page = 1, + int pageSize = 10, + bool includeResolved = true, + bool includeUnresolved = false, + string sort = "oldest", + string searchTerm = "") + { + page--; + if (page < 0) page = 0; + var lowerSearchTerm = searchTerm?.ToLower() ?? string.Empty; + + var query = _context.IncidentReports + .Where(x => + (x.PolicyBroken.ToLower().Contains(lowerSearchTerm) || + x.OfficialReport.ToLower().Contains(lowerSearchTerm) || + x.Description.ToLower().Contains(lowerSearchTerm) || + x.InvestigationNotes.ToLower().Contains(lowerSearchTerm)) && + (string.IsNullOrEmpty(x.OfficialReport) && includeUnresolved || + !string.IsNullOrEmpty(x.OfficialReport) && includeResolved) + ); + if (sort == "oldest") + query = query.OrderBy(b => b.DateTimeSubmitted); + else + query = query.OrderByDescending(b => b.DateTimeSubmitted); + + var filteredEntities = await query.Skip(pageSize * page).Take(pageSize).ToListAsync(); + foreach (var b in filteredEntities) { - _repository = repository; + b.DateTimeOfIncident = ConvertUtcToCst(b.DateTimeOfIncident); + b.DateTimeSubmitted = ConvertUtcToCst(b.DateTimeSubmitted); } - public async Task, int, int, int>> GetIncidentReportsAsync( - int page = 1, - int pageSize = 10, - bool includeResolved = true, - bool includeUnresolved = false, - string sort = "oldest", - string searchTerm = "") - { - page--; - if (page < 0) page = 0; - var lowerSearchTerm = searchTerm?.ToLower() ?? string.Empty; - - var entities = await _repository - .GetAsync( - filter: x => - (x.PolicyBroken.ToLower().Contains(lowerSearchTerm) || - x.OfficialReport.ToLower().Contains(lowerSearchTerm) || - x.Description.ToLower().Contains(lowerSearchTerm) || - x.InvestigationNotes.ToLower().Contains(lowerSearchTerm)) && - (string.IsNullOrEmpty(x.OfficialReport) && includeUnresolved || - !string.IsNullOrEmpty(x.OfficialReport) && includeResolved), - orderBy: x => sort == "oldest" - ? x.OrderBy(b => b.DateTimeSubmitted) - : x.OrderByDescending(b => b.DateTimeSubmitted) - ); - var filteredEntities = entities.Skip(pageSize * page).Take(pageSize); - foreach (var b in filteredEntities) - { - b.DateTimeOfIncident = ConvertUtcToCst(b.DateTimeOfIncident); - b.DateTimeSubmitted = ConvertUtcToCst(b.DateTimeSubmitted); - } - - var totalResults = entities.Count(); - var totalPages = (int)Math.Ceiling((double)totalResults / pageSize); - var totalUnresolved = 0; - var totalResolved = 0; - if (includeUnresolved) totalUnresolved = entities.Count(x => string.IsNullOrEmpty(x.OfficialReport)); - if (includeResolved) totalResolved = entities.Count(x => !string.IsNullOrEmpty(x.OfficialReport)); + var totalResults = await query.CountAsync(); + var totalPages = (int)Math.Ceiling((double)totalResults / pageSize); + var totalUnresolved = 0; + var totalResolved = 0; + if (includeUnresolved) totalUnresolved = await query.CountAsync(x => string.IsNullOrEmpty(x.OfficialReport)); + if (includeResolved) totalResolved = await query.CountAsync(x => !string.IsNullOrEmpty(x.OfficialReport)); - var result = new Tuple, int, int, int>(filteredEntities, totalPages, totalUnresolved, totalResolved); - return result; - } + var result = new Tuple, int, int, int>(filteredEntities, totalPages, totalUnresolved, totalResolved); + return result; + } - public async Task GetIncidentReportByIdAsync(int id) - { - var entity = await _repository.GetByIdAsync(id); - if (entity == null) throw new ArgumentException("Could not find the incident report with the given ID."); + public async Task GetIncidentReportByIdAsync(int id) + { + var entity = await _context.FindAsync(id); + if (entity == null) throw new ArgumentException("Could not find the incident report with the given ID."); - entity.DateTimeOfIncident = ConvertUtcToCst(entity.DateTimeOfIncident); - entity.DateTimeSubmitted = ConvertUtcToCst(entity.DateTimeSubmitted); + entity.DateTimeOfIncident = ConvertUtcToCst(entity.DateTimeOfIncident); + entity.DateTimeSubmitted = ConvertUtcToCst(entity.DateTimeSubmitted); - return entity; - } + return entity; + } - public async Task CreateIncidentReportAsync(IncidentReport incidentReport) - { - _repository.Create(incidentReport); - await _repository.SaveAsync(); - } + public async Task CreateIncidentReportAsync(IncidentReport incidentReport) + { + _context.Add(incidentReport); + await _context.SaveChangesAsync(); + } - public async Task UpdateIncidentReportAsync(IncidentReport incidentReport) - { - var existingReport = await GetIncidentReportByIdAsync(incidentReport.Id); + public async Task UpdateIncidentReportAsync(IncidentReport incidentReport) + { + var existingReport = await GetIncidentReportByIdAsync(incidentReport.Id); - existingReport.PolicyBroken = incidentReport.PolicyBroken; - existingReport.InvestigationNotes = incidentReport.InvestigationNotes; - existingReport.OfficialReport = incidentReport.OfficialReport; + existingReport.PolicyBroken = incidentReport.PolicyBroken; + existingReport.InvestigationNotes = incidentReport.InvestigationNotes; + existingReport.OfficialReport = incidentReport.OfficialReport; - _repository.Update(existingReport); - await _repository.SaveAsync(); - } + await _context.SaveChangesAsync(); } } diff --git a/src/Dsp.Services/Services/LaundryService.cs b/src/Dsp.Services/Services/LaundryService.cs index 1fe22151..66b5c99e 100644 --- a/src/Dsp.Services/Services/LaundryService.cs +++ b/src/Dsp.Services/Services/LaundryService.cs @@ -1,85 +1,75 @@ -namespace Dsp.Services -{ - using Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Dsp.Services.Exceptions; - using Interfaces; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; +namespace Dsp.Services; - public class LaundryService : BaseService, ILaundryService - { - private readonly IRepository _repository; +using Data; +using Dsp.Data.Entities; +using Dsp.Services.Exceptions; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; - public LaundryService() : this(new Repository(new SphinxDbContext())) - { +public class LaundryService : BaseService, ILaundryService +{ + private readonly DspDbContext _context; - } + public LaundryService(DspDbContext context) + { + _context = context; + } - public LaundryService(SphinxDbContext db) : this(new Repository(db)) - { + public async Task> GetSignups(DateTime beginningOn) + { + var existingSignups = await _context.LaundrySignups + .Where(l => l.DateTimeShift >= beginningOn.Date) + .ToListAsync(); + return existingSignups; + } - } + public async Task Reserve(LaundrySignup entity, int maxSignupsAllowed = 2) + { + var nowCst = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, "Central Standard Time"); - public LaundryService(IRepository repository) + // Check if they've already signed up too many times within the current window. + var existingSignups = await _context.LaundrySignups + .Where(l => l.DateTimeShift >= nowCst.Date && l.UserId == entity.UserId) + .ToListAsync(); + if (existingSignups.Count >= maxSignupsAllowed) { - _repository = repository; + var message = "You have signed up too many times within the current window. " + + "Your maximum allowed is: " + maxSignupsAllowed; + throw new LaundrySignupsExceededException(message); } - public async Task> GetSignups(DateTime beginningOn) + // Check if a signup already exists + var shift = await _context.FindAsync(entity.DateTimeShift); + if (shift != null) { - var existingSignups = await _repository - .GetAsync(l => l.DateTimeShift >= beginningOn.Date); - return existingSignups; + var message = "Sorry, " + shift.User + " signed up for that slot after you loaded page " + + "but before you tried to sign up. You will have to pick a new slot."; + throw new LaundrySignupAlreadyExistsException(message); } - public async Task Reserve(LaundrySignup entity, int maxSignupsAllowed = 2) - { - var nowCst = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, "Central Standard Time"); - - // Check if they've already signed up too many times within the current window. - var existingSignups = await _repository - .GetAsync(l => l.DateTimeShift >= nowCst.Date && l.UserId == entity.UserId); - if (existingSignups.Count() >= maxSignupsAllowed) - { - var message = "You have signed up too many times within the current window. " + - "Your maximum allowed is: " + maxSignupsAllowed; - throw new LaundrySignupsExceededException(message); - } - - // Check if a signup already exists - var shift = await _repository.GetByIdAsync(entity.DateTimeShift); - if (shift != null) - { - var message = "Sorry, " + shift.Member + " signed up for that slot after you loaded page " + - "but before you tried to sign up. You will have to pick a new slot."; - throw new LaundrySignupAlreadyExistsException(message); - } + // All good, add their reservation. + entity.DateTimeSignedUp = nowCst; - // All good, add their reservation. - entity.DateTimeSignedUp = nowCst; + _context.Add(entity); + await _context.SaveChangesAsync(); + } - _repository.Create(entity); - await _repository.SaveAsync(); + public async Task Cancel(LaundrySignup entity) + { + var shift = await _context.FindAsync(entity.DateTimeShift); + if (shift == null) + { + throw new LaundrySignupNotFoundException("Could not cancel reservation because no existing reservation was found."); } - - public async Task Cancel(LaundrySignup entity) + if (shift.UserId != entity.UserId) { - var shift = await _repository.GetByIdAsync(entity.DateTimeShift); - if (shift == null) - { - throw new LaundrySignupNotFoundException("Could not cancel reservation because no existing reservation was found."); - } - if (shift.UserId != entity.UserId) - { - throw new LaundrySignupPermissionException("You cannot cancel someone else's shift!"); - } - _repository.Delete(shift); - await _repository.SaveAsync(); + throw new LaundrySignupPermissionException("You cannot cancel someone else's shift!"); } + _context.Remove(shift); + await _context.SaveChangesAsync(); } } diff --git a/src/Dsp.Services/Services/MealService.cs b/src/Dsp.Services/Services/MealService.cs index 42c296d2..d14d106b 100644 --- a/src/Dsp.Services/Services/MealService.cs +++ b/src/Dsp.Services/Services/MealService.cs @@ -1,185 +1,184 @@ -namespace Dsp.Services +namespace Dsp.Services; + +using Data; +using Dsp.Data.Entities; +using Dsp.Services.Exceptions; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +public class MealService : BaseService, IMealService { - using Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Dsp.Services.Exceptions; - using Interfaces; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - - public class MealService : BaseService, IMealService - { - private readonly IRepository _repository; - - public MealService() : this(new Repository(new SphinxDbContext())) - { + private readonly DspDbContext _context; - } + public MealService(DspDbContext context) + { + _context = context; + } - public MealService(SphinxDbContext db) : this(new Repository(db)) - { + public async Task> GetAllPeriodsAsync() + { + return await _context.MealPeriods.ToListAsync(); + } - } + public async Task> GetAllItemsAsync() + { + return await _context.MealItems.ToListAsync(); + } - public MealService(IRepository repository) - { - _repository = repository; - } + public async Task> GetAllVotesByUserIdAsync(int userId) + { + return await _context.MealItemVotes + .Where(e => e.UserId == userId) + .ToListAsync(); + } - public async Task> GetAllPeriodsAsync() - { - return await _repository.GetAllAsync(); - } + public async Task> GetMealItemToPeriodsAsync(DateTime start, DateTime end) + { + return await _context.MealItemsToPeriods + .Where(e => start <= e.Date && e.Date < end) + .ToListAsync(); + } - public async Task> GetAllItemsAsync() - { - return await _repository.GetAllAsync(); - } + public async Task> GetMealPlatesAsync(DateTime start, DateTime end) + { + return await _context.MealPlates + .Where(e => start <= e.PlateDateTime && e.PlateDateTime < end) + .ToListAsync(); + } - public async Task> GetAllVotesByUserIdAsync(int userId) - { - return await _repository.GetAsync(filter: e => e.UserId == userId); - } + public async Task GetPlateByIdAsync(int id) + { + return await _context.FindAsync(id); + } - public async Task> GetMealItemToPeriodsAsync(DateTime start, DateTime end) - { - return await _repository.GetAsync(e => start <= e.Date && e.Date < end); - } + public async Task GetItemByIdAsync(int id) + { + return await _context.FindAsync(id); + } - public async Task> GetMealPlatesAsync(DateTime start, DateTime end) - { - return await _repository.GetAsync(e => start <= e.PlateDateTime && e.PlateDateTime < end); - } + public async Task GetPeriodByIdAsync(int id) + { + return await _context.FindAsync(id); + } - public async Task GetPlateByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } + public async Task CreateItem(MealItem entity) + { + entity.Name = base.ToTitleCaseString(entity.Name); + entity.Name = entity.Name.Replace("And", "&"); - public async Task GetItemByIdAsync(int id) + var exists = await _context.MealItems.AnyAsync(m => m.Name == entity.Name); + if (exists) { - return await _repository.GetByIdAsync(id); + throw new MealItemAlreadyExistsException("A meal item with that name already exists."); } - public async Task GetPeriodByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } + _context.Add(entity); + await _context.SaveChangesAsync(); + } - public async Task CreateItem(MealItem entity) - { - entity.Name = base.ToTitleCaseString(entity.Name); - entity.Name = entity.Name.Replace("And", "&"); + public async Task CreatePeriod(MealPeriod entity) + { + _context.Add(entity); + await _context.SaveChangesAsync(); + } - var exists = await _repository.GetExistsAsync(m => m.Name == entity.Name); - if (exists) - { - throw new MealItemAlreadyExistsException("A meal item with that name already exists."); - } + public async Task CreatePlate(MealPlate entity) + { + var existingPlates = await _context.MealPlates + .Where(v => v.UserId == entity.UserId && v.PlateDateTime == entity.PlateDateTime) + .ToListAsync(); - _repository.Create(entity); - await _repository.SaveAsync(); + if (entity.Type == "Late" && existingPlates.Any(p => p.Type == "Late")) + { + entity.Type = "+1"; } - public async Task CreatePeriod(MealPeriod entity) + _context.Add(entity); + await _context.SaveChangesAsync(); + } + + public async Task CreateItemToPeriod(MealItemToPeriod entity) + { + var exists = await _context.MealItemsToPeriods.AnyAsync( + e => e.MealItemId == entity.MealItemId && + e.MealPeriodId == entity.MealPeriodId && + e.Date == entity.Date + ); + if (exists) { - _repository.Create(entity); - await _repository.SaveAsync(); + throw new MealItemAlreadyAssignedException("A meal item has already been added to that period."); } - public async Task CreatePlate(MealPlate entity) - { - var existingPlates = await _repository - .GetAsync( - filter: v => v.UserId == entity.UserId && v.PlateDateTime == entity.PlateDateTime); + _context.Add(entity); + await _context.SaveChangesAsync(); + } - if (entity.Type == "Late" && existingPlates.Any(p => p.Type == "Late")) - { - entity.Type = "+1"; - } + public async Task UpdateItem(MealItem entity) + { + entity.Name = base.ToTitleCaseString(entity.Name); + entity.Name = entity.Name.Replace("And", "&"); - _repository.Create(entity); - await _repository.SaveAsync(); - } + _context.Update(entity); + await _context.SaveChangesAsync(); + } - public async Task CreateItemToPeriod(MealItemToPeriod entity) - { - var exists = await _repository - .GetExistsAsync( - e => e.MealItemId == entity.MealItemId && e.MealPeriodId == entity.MealPeriodId && e.Date == entity.Date); - if (exists) - { - throw new MealItemAlreadyAssignedException("A meal item has already been added to that period."); - } - - _repository.Create(entity); - await _repository.SaveAsync(); - } + public async Task UpdatePeriod(MealPeriod period) + { + _context.Update(period); + await _context.SaveChangesAsync(); + } - public async Task UpdateItem(MealItem entity) - { - entity.Name = base.ToTitleCaseString(entity.Name); - entity.Name = entity.Name.Replace("And", "&"); + public async Task DeleteItem(int id) + { + var entity = new MealItem { Id = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - _repository.Update(entity); - await _repository.SaveAsync(); - } + public async Task DeletePeriod(int id) + { + var entity = new MealPeriod { Id = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - public async Task UpdatePeriod(MealPeriod period) - { - _repository.Update(period); - await _repository.SaveAsync(); - } + public async Task DeletePlate(int id) + { + var entity = new MealPlate { Id = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - public async Task DeleteItem(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } + public async Task DeleteItemFromPeriod(int id) + { + var entity = new MealItemToPeriod { Id = id }; + await _context.SaveChangesAsync(); + } - public async Task DeletePeriod(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } + public async Task ProcessVote(MealItemVote entity) + { + var existingVote = await _context.MealItemVotes + .Where(e => e.UserId == entity.UserId && e.MealItemId == entity.MealItemId) + .FirstOrDefaultAsync(); - public async Task DeletePlate(int id) + if (existingVote == null) { - _repository.Delete(id); - await _repository.SaveAsync(); + _context.Add(entity); } - - public async Task DeleteItemFromPeriod(int id) + else if (existingVote.IsUpvote == entity.IsUpvote) { - _repository.Delete(id); - await _repository.SaveAsync(); + _context.Remove(existingVote); } - - public async Task ProcessVote(MealItemVote entity) + else { - var existingVote = await _repository - .GetOneAsync( - e => e.UserId == entity.UserId && e.MealItemId == entity.MealItemId); - - if (existingVote == null) - { - _repository.Create(entity); - } - else if (existingVote.IsUpvote == entity.IsUpvote) - { - _repository.Delete(existingVote); - } - else - { - existingVote.IsUpvote = entity.IsUpvote; - _repository.Update(existingVote); - } - - await _repository.SaveAsync(); + existingVote.IsUpvote = entity.IsUpvote; + _context.Update(existingVote); } + + await _context.SaveChangesAsync(); } } diff --git a/src/Dsp.Services/Services/MemberService.cs b/src/Dsp.Services/Services/MemberService.cs index 16ca09c4..f2767869 100644 --- a/src/Dsp.Services/Services/MemberService.cs +++ b/src/Dsp.Services/Services/MemberService.cs @@ -1,128 +1,177 @@ -namespace Dsp.Services +namespace Dsp.Services; + +using Data; +using Data.Entities; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +public class MemberService : BaseService, IMemberService { - using Data; - using Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Interfaces; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; + private readonly DspDbContext _context; + private readonly ISemesterService _semesterService; - public class MemberService : BaseService, IMemberService + public MemberService(DspDbContext context, ISemesterService semesterService) { - private readonly IRepository _repository; - private readonly ISemesterService _semesterService; + _context = context; + _semesterService = semesterService; + } - public MemberService() : this(new Repository(new SphinxDbContext())) - { + public async Task GetMemberByIdAsync(int id) + { + return await _context.FindAsync(id); + } - } + public async Task GetMemberByUserNameAsync(string userName) + { + return await _context.Users + .Where(m => m.UserName == userName && m.MemberId != null) + .Include(m => m.MemberInfo) + .Select(x => x.MemberInfo) + .SingleAsync(); + } - public MemberService(SphinxDbContext db) : this(new Repository(db)) - { + public async Task> GetAllMembersAsync() + { + var members = await _context.Members.ToListAsync(); + return members; + } - } + public async Task> GetActivesAsync() + { + var semester = await _semesterService.GetCurrentSemesterAsync(); + var roster = await GetRosterForSemesterAsync(semester); + return roster.Where(m => m.PledgeClass.SemesterId != semester.Id); + } - public MemberService(IRepository repository) - { - _repository = repository; - _semesterService = new SemesterService(repository); - } + public async Task> GetActivesAsync(int semesterId) + { + var semester = await _semesterService.GetSemesterByIdAsync(semesterId); + return await GetActivesAsync(semester); + } - public async Task GetMemberByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } + public async Task> GetActivesAsync(Semester semester) + { + var roster = await GetRosterForSemesterAsync(semester); + return roster.Where(m => m.PledgeClass.SemesterId != semester.Id); + } - public async Task GetMemberByUserNameAsync(string userName) - { - return await _repository.GetOneAsync(m => m.UserName == userName); - } + public async Task> GetNewMembersAsync() + { + var semester = await _semesterService.GetCurrentSemesterAsync(); + var roster = await GetRosterForSemesterAsync(semester); + return roster.Where(m => m.PledgeClass.SemesterId == semester.Id); + } - public async Task> GetActivesAsync() - { - var semester = await _semesterService.GetCurrentSemesterAsync(); - var roster = await GetRosterForSemesterAsync(semester); - return roster.Where(m => m.PledgeClass.SemesterId != semester.Id); - } + public async Task> GetNewMembersAsync(int semesterId) + { + var semester = await _semesterService.GetSemesterByIdAsync(semesterId); + return await GetNewMembersAsync(semester); + } - public async Task> GetActivesAsync(int semesterId) - { - var semester = await _semesterService.GetSemesterByIdAsync(semesterId); - return await GetActivesAsync(semester); - } + public async Task> GetNewMembersAsync(Semester semester) + { + var roster = await GetRosterForSemesterAsync(semester); + return roster.Where(m => m.PledgeClass.SemesterId == semester.Id); + } - public async Task> GetActivesAsync(Semester semester) - { - var roster = await GetRosterForSemesterAsync(semester); - return roster.Where(m => m.PledgeClass.SemesterId != semester.Id); - } + public async Task> GetAlumniAsync() + { + var semester = await _semesterService.GetCurrentSemesterAsync(); + return await GetAlumniAsync(semester); + } - public async Task> GetNewMembersAsync() - { - var semester = await _semesterService.GetCurrentSemesterAsync(); - var roster = await GetRosterForSemesterAsync(semester); - return roster.Where(m => m.PledgeClass.SemesterId == semester.Id); - } + public async Task> GetAlumniAsync(int semesterId) + { + var semester = await _semesterService.GetSemesterByIdAsync(semesterId); + return await GetAlumniAsync(semester); + } - public async Task> GetNewMembersAsync(int semesterId) - { - var semester = await _semesterService.GetSemesterByIdAsync(semesterId); - return await GetNewMembersAsync(semester); - } + public async Task> GetAlumniAsync(Semester asOfSemester) + { + var results = await _context.Members + .Where(m => m.ExpectedGraduation.DateEnd < asOfSemester.DateStart) + .OrderBy(m => m.LastName) + .ToListAsync(); - public async Task> GetNewMembersAsync(Semester semester) - { - var roster = await GetRosterForSemesterAsync(semester); - return roster.Where(m => m.PledgeClass.SemesterId == semester.Id); - } + return results; + } - public async Task> GetAlumniAsync() - { - var semester = await _semesterService.GetCurrentSemesterAsync(); - return await GetAlumniAsync(semester); - } + public async Task> GetCurrentRosterAsync() + { + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + return await GetRosterForSemesterAsync(currentSemester); + } - public async Task> GetAlumniAsync(int semesterId) - { - var semester = await _semesterService.GetSemesterByIdAsync(semesterId); - return await GetAlumniAsync(semester); - } + public async Task> GetRosterForSemesterAsync(int semesterId) + { + var semester = await _semesterService.GetSemesterByIdAsync(semesterId); + return await GetRosterForSemesterAsync(semester); + } - public async Task> GetAlumniAsync(Semester semester) - { - var results = await _repository - .GetAsync(m => - m.MemberStatus.StatusName == "Advisor" || - (m.MemberStatus.StatusName == "Released" || - m.MemberStatus.StatusName == "Alumnus" || - m.MemberStatus.StatusName == "Neophyte" || - m.MemberStatus.StatusName == "Active" || - m.MemberStatus.StatusName == "New") && - m.GraduationSemester.DateEnd < semester.DateStart); - return results.OrderBy(m => m.LastName); + public async Task> GetRosterForSemesterAsync(Semester semester) + { + var results = await _context.Members + .Where(d => + d.PledgeClass.Semester.DateStart < semester.DateEnd && + d.ExpectedGraduation.DateEnd > semester.DateStart) + .OrderBy(m => m.LastName) + .Include(m => m.PledgeClass) + .Include(m => m.UserInfo) + .ToListAsync(); + return results; + } - } + public async Task GetRemainingServiceHoursForUserAsync(int userId) + { + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + var priorSemester = await _semesterService.GetPriorSemesterAsync(currentSemester); - public async Task> GetRosterForSemesterAsync(int semesterId) + var requiredHours = currentSemester.MinimumServiceHours; + var totalHours = 0.0; + try { - var semester = await _semesterService.GetSemesterByIdAsync(semesterId); - return await GetRosterForSemesterAsync(semester); + var serviceHours = await _context.ServiceHours + .Where(h => h.User.Id == userId && + h.Event.DateTimeOccurred > priorSemester.DateEnd && + h.Event.DateTimeOccurred <= currentSemester.DateEnd) + .ToListAsync(); + if (serviceHours.Any()) + totalHours = serviceHours.Select(h => h.DurationHours).Sum(); } - - public async Task> GetRosterForSemesterAsync(Semester semester) + catch (Exception) { - var results = await _repository - .GetAsync(d => - d.MemberStatus.StatusName != "Advisor" && - ((d.MemberStatus.StatusName == "Alumnus" || - d.MemberStatus.StatusName == "Active" || - d.MemberStatus.StatusName == "Neophyte" || - d.MemberStatus.StatusName == "New") && - d.PledgeClass.Semester.DateStart < semester.DateEnd && - d.GraduationSemester.DateEnd > semester.DateStart)); - return results.OrderBy(m => m.LastName); + return requiredHours - totalHours < 0 ? 0 : requiredHours - totalHours; } + + var remainingHours = requiredHours - totalHours; + return remainingHours < 0 ? 0 : remainingHours; + } + + public async Task> GetAllCompletedEventsForUserAsync(int userId) + { + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + var lastSemester = await _semesterService.GetPriorSemesterAsync(currentSemester); + + return await _context.ServiceHours + .Where(e => e.UserId == userId && + e.Event.DateTimeOccurred > lastSemester.DateEnd && + e.Event.DateTimeOccurred <= currentSemester.DateEnd) + .ToListAsync(); + } + + public async Task> GetSoberSignupsForUserAsync(int userId, Semester semester) + { + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + var priorSemester = await _semesterService.GetPriorSemesterAsync(currentSemester); + + return await _context.SoberSignups + .Where(s => s.UserId == userId && + s.DateOfShift > priorSemester.DateEnd && + s.DateOfShift <= semester.DateEnd) + .ToListAsync(); } } diff --git a/src/Dsp.Services/Services/PositionService.cs b/src/Dsp.Services/Services/PositionService.cs index e0e1a95a..20e00689 100644 --- a/src/Dsp.Services/Services/PositionService.cs +++ b/src/Dsp.Services/Services/PositionService.cs @@ -1,333 +1,328 @@ -namespace Dsp.Services +namespace Dsp.Services; + +using Data; +using Data.Entities; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +public class PositionService : BaseService, IPositionService { - using Data; - using Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Interfaces; - using System; - using System.Collections.Generic; - using System.Data.Entity.Core; - using System.Linq; - using System.Threading.Tasks; - - public class PositionService : BaseService, IPositionService - { - private readonly IRepository _repository; - private readonly IMemberService _memberService; - private readonly ISemesterService _semesterService; + private readonly DspDbContext _context; + private readonly IMemberService _memberService; - public PositionService() : this(new Repository(new SphinxDbContext())) - { + public PositionService(DspDbContext context, IMemberService memberService) + { + _context = context; + _memberService = memberService; + } - } + public async Task> GetAllPositionsAsync() + { + return await _context.Positions.ToListAsync(); + } - public PositionService(SphinxDbContext db) : this(new Repository(db)) + public async Task GetPositionByIdAsync(int id) + { + if (id <= 0) { - + throw new ArgumentException("The entity's ID is not valid."); } + return await _context.FindAsync(id); + } - public PositionService(IRepository repository) + public async Task GetPositionByNameAsync(string name) + { + if (string.IsNullOrEmpty(name)) { - _repository = repository; - _memberService = new MemberService(repository); - _semesterService = new SemesterService(repository); + throw new ArgumentException("The entity's name is not valid."); } + return await _context.Positions + .Where(m => m.Name == name) + .SingleAsync(); + } - public async Task> GetAllPositionsAsync() + public async Task> GetEboardPositionsAsync() + { + var eBoardPositions = await _context.Positions + .Where(m => m.IsExecutive) + .ToListAsync(); + + return eBoardPositions; + } + + public async Task GetUserInPositionAsync(string positionName, int sid) + { + var position = await _context.Roles + .Where(x => x.Name == positionName) + .SingleOrDefaultAsync(); + if (position == null) return null; + + var appointment = await _context.MembersPositions + .Where(x => x.RoleId == position.Id && x.SemesterId == sid) + .SingleOrDefaultAsync(); + if (appointment == null) return null; + + return appointment.User; + } + + public async Task> GetCurrentPositionsByUserAsync(int userId) + { + var currentAppointmentsForUser = new List(); + var adminAppointmentForUser = await GetAdminAppoinmentForUserAsync(userId); + if (adminAppointmentForUser != null) { - return await _repository.GetAllAsync(); + currentAppointmentsForUser.Add(adminAppointmentForUser.Role); } - public async Task GetPositionByIdAsync(int id) + var now = DateTime.UtcNow; + var applicableSemesters = await _context.Semesters + .Where(x => now < x.TransitionDate) + .OrderBy(x => x.DateStart) + .ToListAsync(); + if (applicableSemesters.Any()) { - if (id <= 0) + var numberOfApplicableSemesters = applicableSemesters.Count(); + var firstApplicableSemester = applicableSemesters.First(); + if (now < firstApplicableSemester.DateEnd || numberOfApplicableSemesters == 1) { - throw new ArgumentException("The entity's ID is not valid."); + /* Two scenarios are represented here, both of which are handled in the same way: + * 1) the first condition represents that the first applicable semester happens + * to be the current semester but we are NOT in the transition period. + * Therefore, only the current semester's appointments are in effect. + * 2) the second condition represents that this is the final semester in the + * database so even if we are in a transition period, there can't be any + * future appointments anyway, so only the previous semester's appointments + * are in effect (until the transition date passes). + */ + currentAppointmentsForUser.AddRange( + firstApplicableSemester.Leaders + .Where(x => x.UserId == userId) + .Select(x => x.Role) + ); } - return await _repository.GetOneAsync(p => p.Id == id); - } - - public async Task GetPositionByNameAsync(string name) - { - if (string.IsNullOrEmpty(name)) + else { - throw new ArgumentException("The entity's name is not valid."); + /* Otherwise, we are in a transition period, and the second semester + * happens to be the current semester. Therefore, both the previous semester and + * current semester appointments are in effect. + */ + currentAppointmentsForUser.AddRange( + applicableSemesters + .Take(2) + .SelectMany(x => x.Leaders) + .Where(x => x.UserId == userId) + .Select(x => x.Role) + .Distinct() + ); } - return await _repository.GetOneAsync(m => m.Name == name); } - public async Task> GetEboardPositionsAsync() - { - var eBoardPositions = await _repository.GetAsync(m => m.IsExecutive); + return currentAppointmentsForUser; + } - return eBoardPositions; - } + public async Task> GetCurrentPositionsByUserAsync(string userName) + { + var user = await _memberService.GetMemberByUserNameAsync(userName); + var currentAppointmentsForUser = await GetCurrentPositionsByUserAsync(user.Id); + return currentAppointmentsForUser; + } - public async Task GetUserInPositionAsync(string positionName, int sid) - { - var position = await _repository.GetOneAsync(x => x.Name == positionName); - if (position == null) return null; + public async Task GetAdminPositionAsync() + { + var adminPosition = await GetPositionByNameAsync("Administrator"); + return adminPosition; + } - var appointment = await _repository.GetOneAsync(x => x.RoleId == position.Id && x.SemesterId == sid); - if (appointment == null) return null; + public async Task GetAdminAppoinmentForUserAsync(int userId) + { + var adminPosition = await GetAdminPositionAsync(); + var adminAppointForUser = adminPosition.Users + .FirstOrDefault(x => x.UserId == userId); - return appointment.Member; - } + return adminAppointForUser; + } - public async Task> GetCurrentPositionsByUserAsync(int userId) - { - var currentAppointmentsForUser = new List(); - var adminAppointmentForUser = await GetAdminAppoinmentForUserAsync(userId); - if (adminAppointmentForUser != null) - { - currentAppointmentsForUser.Add(adminAppointmentForUser.Position); - } + public async Task UserIsAdminAsync(int userId) + { + var adminAppointForUser = await GetAdminAppoinmentForUserAsync(userId); + var userIsAdmin = adminAppointForUser == null; + return userIsAdmin; + } - var now = DateTime.UtcNow; - var applicableSemesters = await _repository.GetAsync( - filter: x => now < x.TransitionDate, - orderBy: x => x.OrderBy(o => o.DateStart) - ); - if (applicableSemesters.Any()) - { - var numberOfApplicableSemesters = applicableSemesters.Count(); - var firstApplicableSemester = applicableSemesters.First(); - if (now < firstApplicableSemester.DateEnd || numberOfApplicableSemesters == 1) - { - /* Two scenarios are represented here, both of which are handled in the same way: - * 1) the first condition represents that the first applicable semester happens - * to be the current semester but we are NOT in the transition period. - * Therefore, only the current semester's appointments are in effect. - * 2) the second condition represents that this is the final semester in the - * database so even if we are in a transition period, there can't be any - * future appointments anyway, so only the previous semester's appointments - * are in effect (until the transition date passes). - */ - currentAppointmentsForUser.AddRange( - firstApplicableSemester.Leaders - .Where(x => x.UserId == userId) - .Select(x => x.Position) - ); - } - else - { - /* Otherwise, we are in a transition period, and the second semester - * happens to be the current semester. Therefore, both the previous semester and - * current semester appointments are in effect. - */ - currentAppointmentsForUser.AddRange( - applicableSemesters - .Take(2) - .SelectMany(x => x.Leaders) - .Where(x => x.UserId == userId) - .Select(x => x.Position) - .Distinct() - ); - } - } + public async Task UserIsAdminAsync(string userName) + { + var user = await _memberService.GetMemberByUserNameAsync(userName); + var userIsAdmin = await UserIsAdminAsync(user.Id); + return userIsAdmin; + } - return currentAppointmentsForUser; - } + public async Task UserHasPositionPowerAsync(int userId, int positionId) + { + var currentUserPositions = await GetCurrentPositionsByUserAsync(userId); + var adminPosition = await GetAdminPositionAsync(); + var userHasPositionPower = currentUserPositions + .Any(x => x.Id == positionId || + x.Id == adminPosition.Id); // Admins have all power - public async Task> GetCurrentPositionsByUserAsync(string userName) - { - var user = await _memberService.GetMemberByUserNameAsync(userName); - var currentAppointmentsForUser = await GetCurrentPositionsByUserAsync(user.Id); - return currentAppointmentsForUser; - } + return userHasPositionPower; + } - public async Task GetAdminPositionAsync() - { - var adminPosition = await GetPositionByNameAsync("Administrator"); - return adminPosition; - } + public async Task UserHasPositionPowerAsync(int userId, string positionName) + { + var position = await GetPositionByNameAsync(positionName); + var userIsInPosition = await UserHasPositionPowerAsync(userId, position.Id); + return userIsInPosition; + } + + public async Task UserHasPositionPowerAsync(string userName, string positionName) + { + var user = await _memberService.GetMemberByUserNameAsync(userName); + var userIsInPosition = await UserHasPositionPowerAsync(user.Id, positionName); + return userIsInPosition; + } - public async Task GetAdminAppoinmentForUserAsync(int userId) + public async Task UserHasAtLeastOnePositionPowerAsync(int userId, string[] positionNames) + { + var currentUserPositions = await GetCurrentPositionsByUserAsync(userId); + var adminPosition = await GetAdminPositionAsync(); + bool userHasPositionPower = false; + foreach (var p in positionNames) { - var adminPosition = await GetAdminPositionAsync(); - var adminAppointForUser = adminPosition.Leaders - .FirstOrDefault(x => x.UserId == userId); + userHasPositionPower = currentUserPositions + .Any(x => x.Name == p || + x.Name == adminPosition.Name); // Admins have all power - return adminAppointForUser; + if (userHasPositionPower) break; } - public async Task UserIsAdminAsync(int userId) - { - var adminAppointForUser = await GetAdminAppoinmentForUserAsync(userId); - var userIsAdmin = adminAppointForUser == null; - return userIsAdmin; - } + return userHasPositionPower; + } - public async Task UserIsAdminAsync(string userName) + public async Task RemovePositionAsync(Position entity) + { + if (entity == null) { - var user = await _memberService.GetMemberByUserNameAsync(userName); - var userIsAdmin = await UserIsAdminAsync(user.Id); - return userIsAdmin; + throw new ArgumentNullException("Cannot update a null entity."); } - - public async Task UserHasPositionPowerAsync(int userId, int positionId) + if (entity.Id <= 0) { - var currentUserPositions = await GetCurrentPositionsByUserAsync(userId); - var adminPosition = await GetAdminPositionAsync(); - var userHasPositionPower = currentUserPositions - .Any(x => x.Id == positionId || - x.Id == adminPosition.Id); // Admins have all power - - return userHasPositionPower; + throw new ArgumentException("The entity's ID is not valid."); } + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - public async Task UserHasPositionPowerAsync(int userId, string positionName) + public async Task RemovePositionByIdAsync(int id) + { + if (id <= 0) { - var position = await GetPositionByNameAsync(positionName); - var userIsInPosition = await UserHasPositionPowerAsync(userId, position.Id); - return userIsInPosition; + throw new ArgumentException("The entity's ID is not valid."); } - - public async Task UserHasPositionPowerAsync(string userName, string positionName) + var entity = await _context.FindAsync(id); + if (entity == null) { - var user = await _memberService.GetMemberByUserNameAsync(userName); - var userIsInPosition = await UserHasPositionPowerAsync(user.Id, positionName); - return userIsInPosition; + throw new ArgumentException("A position for the given ID was not found."); } + await RemovePositionAsync(entity); + } - public async Task UserHasAtLeastOnePositionPowerAsync(int userId, string[] positionNames) + public async Task CreatePositionAsync(Position entity) + { + var exists = await _context.Roles.AnyAsync(m => m.Name == entity.Name); + if (exists) { - var currentUserPositions = await GetCurrentPositionsByUserAsync(userId); - var adminPosition = await GetAdminPositionAsync(); - bool userHasPositionPower = false; - foreach (var p in positionNames) - { - userHasPositionPower = currentUserPositions - .Any(x => x.Name == p || - x.Name == adminPosition.Name); // Admins have all power - - if (userHasPositionPower) break; - } - - return userHasPositionPower; + throw new ArgumentException("A position with that name already exists."); } - public async Task RemovePositionAsync(Position entity) + _context.Add(entity); + await _context.SaveChangesAsync(); + } + + public async Task UpdatePositionAsync(Position entity) + { + if (entity == null) { - if (entity == null) - { - throw new ArgumentNullException("Cannot update a null entity."); - } - if (entity.Id <= 0) - { - throw new ArgumentException("The entity's ID is not valid."); - } - _repository.Delete(entity); - await _repository.SaveAsync(); + throw new ArgumentNullException("Cannot update a null entity."); } - - public async Task RemovePositionByIdAsync(int id) + if (entity.Id <= 0) { - if (id <= 0) - { - throw new ArgumentException("The entity's ID is not valid."); - } - var entity = await _repository.GetByIdAsync(id); - if (entity == null) - { - throw new ObjectNotFoundException("A position for the given ID was not found."); - } - await RemovePositionAsync(entity); + throw new ArgumentException("The entity's ID is not valid."); } - public async Task CreatePositionAsync(Position entity) + var oldPosition = await GetPositionByIdAsync(entity.Id); + if (oldPosition == null) { - var exists = await _repository.GetExistsAsync(m => m.Name == entity.Name); - if (exists) - { - throw new ArgumentException("A position with that name already exists."); - } - - _repository.Create(entity); - await _repository.SaveAsync(); + throw new ArgumentException("The entity being updated does not exist in the database."); } - - public async Task UpdatePositionAsync(Position entity) + oldPosition.Name = entity.Name; + oldPosition.Description = entity.Description; + oldPosition.Inquiries = entity.Inquiries; + oldPosition.Type = entity.Type; + oldPosition.IsExecutive = entity.IsExecutive; + oldPosition.IsElected = entity.IsElected; + oldPosition.IsDisabled = entity.IsDisabled; + oldPosition.IsPublic = entity.IsPublic; + + // Check if order changed. + if (oldPosition.DisplayOrder != entity.DisplayOrder) { - if (entity == null) - { - throw new ArgumentNullException("Cannot update a null entity."); - } - if (entity.Id <= 0) - { - throw new ArgumentException("The entity's ID is not valid."); - } + oldPosition.DisplayOrder = entity.DisplayOrder; + // Auto adjusting the display order of all positions to accomodate change. + var allPositions = await _context.Positions + .Where(p => p.Type == entity.Type && p.Id != entity.Id) + .OrderBy(p => p.DisplayOrder) + .ToListAsync(); - var oldPosition = await GetPositionByIdAsync(entity.Id); - if (oldPosition == null) - { - throw new ObjectNotFoundException("The entity being updated does not exist in the database."); - } - oldPosition.Name = entity.Name; - oldPosition.Description = entity.Description; - oldPosition.Inquiries = entity.Inquiries; - oldPosition.Type = entity.Type; - oldPosition.IsExecutive = entity.IsExecutive; - oldPosition.IsElected = entity.IsElected; - oldPosition.IsDisabled = entity.IsDisabled; - oldPosition.IsPublic = entity.IsPublic; - - // Check if order changed. - if (oldPosition.DisplayOrder != entity.DisplayOrder) - { - oldPosition.DisplayOrder = entity.DisplayOrder; - // Auto adjusting the display order of all positions to accomodate change. - var allPositions = await _repository - .GetAsync( - p => p.Type == entity.Type && p.Id != entity.Id, - o => o.OrderBy(p => p.DisplayOrder)); - - var positionsList = allPositions.ToList(); - positionsList.Add(oldPosition); - - for (var i = 0; i < positionsList.Count; i++) - { - positionsList[i].DisplayOrder = i; - _repository.Update(positionsList[i]); - } - } - else + var positionsList = allPositions.ToList(); + positionsList.Add(oldPosition); + + for (var i = 0; i < positionsList.Count; i++) { - _repository.Update(oldPosition); + positionsList[i].DisplayOrder = i; + _context.Update(positionsList[i]); } - - await _repository.SaveAsync(); } - - public async Task> GetAppointmentsAsync(int sid) + else { - var positions = await _repository - .GetAsync( - p => !p.IsDisabled && p.Name != "Administrator", - x => x.OrderBy(p => p.Type).ThenBy(p => p.DisplayOrder)); - return positions; + _context.Update(oldPosition); } - public async Task AppointMemberToPositionAsync(int mid, int pid, int sid) - { - var entity = new Leader - { - UserId = mid, - RoleId = pid, - SemesterId = sid, - AppointedOn = DateTime.UtcNow - }; - _repository.Create(entity); - await _repository.SaveAsync(); - } + await _context.SaveChangesAsync(); + } + + public async Task> GetAppointmentsAsync(int sid) + { + var positions = await _context.Positions + .Where(p => !p.IsDisabled && p.Name != "Administrator") + .OrderBy(p => p.Type) + .ThenBy(p => p.DisplayOrder) + .ToListAsync(); + return positions; + } - public async Task RemoveMemberFromPositionAsync(int mid, int pid, int sid) + public async Task AppointMemberToPositionAsync(int mid, int pid, int sid) + { + var entity = new MemberPosition { - var appointment = await _repository - .GetOneAsync(l => l.UserId == mid && l.RoleId == pid && l.SemesterId == sid); - _repository.Delete(appointment); - await _repository.SaveAsync(); - } + UserId = mid, + RoleId = pid, + SemesterId = sid, + AppointedOn = DateTime.UtcNow + }; + _context.Add(entity); + await _context.SaveChangesAsync(); + } + + public async Task RemoveMemberFromPositionAsync(int mid, int pid, int sid) + { + var appointment = await _context.MembersPositions + .Where(l => l.UserId == mid && l.RoleId == pid && l.SemesterId == sid) + .SingleAsync(); + _context.Remove(appointment); + await _context.SaveChangesAsync(); } } diff --git a/src/Dsp.Services/Services/RoleService.cs b/src/Dsp.Services/Services/RoleService.cs new file mode 100644 index 00000000..6fe38f3e --- /dev/null +++ b/src/Dsp.Services/Services/RoleService.cs @@ -0,0 +1,328 @@ +namespace Dsp.Services; + +using Data; +using Data.Entities; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +public class RoleService : BaseService, IRoleService +{ + private readonly DspDbContext _context; + private readonly IUserService _userService; + + public RoleService(DspDbContext context, IUserService userService) + { + _context = context; + _userService = userService; + } + + public async Task> GetAllRolesAsync() + { + return await _context.Positions.ToListAsync(); + } + + public async Task GetRoleByIdAsync(int id) + { + if (id <= 0) + { + throw new ArgumentException("The entity's ID is not valid."); + } + return await _context.FindAsync(id); + } + + public async Task GetRoleByNameAsync(string name) + { + if (string.IsNullOrEmpty(name)) + { + throw new ArgumentException("The entity's name is not valid."); + } + return await _context.Positions + .Where(m => m.Name == name) + .SingleAsync(); + } + + public async Task> GetEboardRolesAsync() + { + var eBoardPositions = await _context.Positions + .Where(m => m.IsExecutive) + .ToListAsync(); + + return eBoardPositions; + } + + public async Task GetUserInRoleAsync(string positionName, int sid) + { + var position = await _context.Roles + .Where(x => x.Name == positionName) + .SingleOrDefaultAsync(); + if (position == null) return null; + + var appointment = await _context.MembersPositions + .Where(x => x.RoleId == position.Id && x.SemesterId == sid) + .SingleOrDefaultAsync(); + if (appointment == null) return null; + + return appointment.User; + } + + public async Task> GetCurrentRolesByUserIdAsync(int userId) + { + var currentAppointmentsForUser = new List(); + var adminAppointmentForUser = await GetAdminUserRoleForUserAsync(userId); + if (adminAppointmentForUser != null) + { + currentAppointmentsForUser.Add(adminAppointmentForUser.Role); + } + + var now = DateTime.UtcNow; + var applicableSemesters = await _context.Semesters + .Where(x => now < x.TransitionDate) + .OrderBy(x => x.DateStart) + .ToListAsync(); + if (applicableSemesters.Any()) + { + var numberOfApplicableSemesters = applicableSemesters.Count(); + var firstApplicableSemester = applicableSemesters.First(); + if (now < firstApplicableSemester.DateEnd || numberOfApplicableSemesters == 1) + { + /* Two scenarios are represented here, both of which are handled in the same way: + * 1) the first condition represents that the first applicable semester happens + * to be the current semester but we are NOT in the transition period. + * Therefore, only the current semester's appointments are in effect. + * 2) the second condition represents that this is the final semester in the + * database so even if we are in a transition period, there can't be any + * future appointments anyway, so only the previous semester's appointments + * are in effect (until the transition date passes). + */ + currentAppointmentsForUser.AddRange( + firstApplicableSemester.Leaders + .Where(x => x.UserId == userId) + .Select(x => x.Role) + ); + } + else + { + /* Otherwise, we are in a transition period, and the second semester + * happens to be the current semester. Therefore, both the previous semester and + * current semester appointments are in effect. + */ + currentAppointmentsForUser.AddRange( + applicableSemesters + .Take(2) + .SelectMany(x => x.Leaders) + .Where(x => x.UserId == userId) + .Select(x => x.Role) + .Distinct() + ); + } + } + + return currentAppointmentsForUser; + } + + public async Task> GetCurrentRolesByUserNameAsync(string userName) + { + var user = await _userService.GetUserByUserNameAsync(userName); + var currentAppointmentsForUser = await GetCurrentRolesByUserIdAsync(user.Id); + return currentAppointmentsForUser; + } + + public async Task GetAdminRoleAsync() + { + var adminPosition = await GetRoleByNameAsync("Administrator"); + return adminPosition; + } + + public async Task GetAdminUserRoleForUserAsync(int userId) + { + var adminPosition = await GetAdminRoleAsync(); + var adminAppointForUser = adminPosition.Users + .FirstOrDefault(x => x.UserId == userId); + + return adminAppointForUser; + } + + public async Task UserIsAdminAsync(int userId) + { + var adminAppointForUser = await GetAdminUserRoleForUserAsync(userId); + var userIsAdmin = adminAppointForUser == null; + return userIsAdmin; + } + + public async Task UserIsAdminAsync(string userName) + { + var user = await _userService.GetUserByUserNameAsync(userName); + var userIsAdmin = await UserIsAdminAsync(user.Id); + return userIsAdmin; + } + + public async Task UserIsCurrentlyInRoleAsync(int userId, int positionId) + { + var currentUserPositions = await GetCurrentRolesByUserIdAsync(userId); + var adminPosition = await GetAdminRoleAsync(); + var userHasPositionPower = currentUserPositions + .Any(x => x.Id == positionId || + x.Id == adminPosition.Id); // Admins have all power + + return userHasPositionPower; + } + + public async Task UserIsCurrentlyInRoleAsync(int userId, string positionName) + { + var position = await GetRoleByNameAsync(positionName); + var userIsInPosition = await UserIsCurrentlyInRoleAsync(userId, position.Id); + return userIsInPosition; + } + + public async Task UserIsCurrentlyInRoleAsync(string userName, string positionName) + { + var user = await _userService.GetUserByUserNameAsync(userName); + var userIsInPosition = await UserIsCurrentlyInRoleAsync(user.Id, positionName); + return userIsInPosition; + } + + public async Task UserIsCurrentlyInAtLeastOneRoleAsync(int userId, string[] positionNames) + { + var currentUserPositions = await GetCurrentRolesByUserIdAsync(userId); + var adminPosition = await GetAdminRoleAsync(); + bool userHasPositionPower = false; + foreach (var p in positionNames) + { + userHasPositionPower = currentUserPositions + .Any(x => x.Name == p || + x.Name == adminPosition.Name); // Admins have all power + + if (userHasPositionPower) break; + } + + return userHasPositionPower; + } + + public async Task RemoveRoleAsync(Position role) + { + if (role == null) + { + throw new ArgumentNullException("Cannot update a null entity."); + } + if (role.Id <= 0) + { + throw new ArgumentException("The entity's ID is not valid."); + } + _context.Remove(role); + await _context.SaveChangesAsync(); + } + + public async Task RemoveRoleByIdAsync(int id) + { + if (id <= 0) + { + throw new ArgumentException("The entity's ID is not valid."); + } + var entity = await _context.FindAsync(id); + if (entity == null) + { + throw new ArgumentException("A position for the given ID was not found."); + } + await RemoveRoleAsync(entity); + } + + public async Task CreateRoleAsync(Position role) + { + var exists = await _context.Roles.AnyAsync(m => m.Name == role.Name); + if (exists) + { + throw new ArgumentException("A position with that name already exists."); + } + + _context.Add(role); + await _context.SaveChangesAsync(); + } + + public async Task UpdateRoleAsync(Position role) + { + if (role == null) + { + throw new ArgumentNullException("Cannot update a null entity."); + } + if (role.Id <= 0) + { + throw new ArgumentException("The entity's ID is not valid."); + } + + var oldPosition = await GetRoleByIdAsync(role.Id); + if (oldPosition == null) + { + throw new ArgumentException("The entity being updated does not exist in the database."); + } + oldPosition.Name = role.Name; + oldPosition.Description = role.Description; + oldPosition.Inquiries = role.Inquiries; + oldPosition.Type = role.Type; + oldPosition.IsExecutive = role.IsExecutive; + oldPosition.IsElected = role.IsElected; + oldPosition.IsDisabled = role.IsDisabled; + oldPosition.IsPublic = role.IsPublic; + + // Check if order changed. + if (oldPosition.DisplayOrder != role.DisplayOrder) + { + oldPosition.DisplayOrder = role.DisplayOrder; + // Auto adjusting the display order of all positions to accomodate change. + var allPositions = await _context.Positions + .Where(p => p.Type == role.Type && p.Id != role.Id) + .OrderBy(p => p.DisplayOrder) + .ToListAsync(); + + var positionsList = allPositions.ToList(); + positionsList.Add(oldPosition); + + for (var i = 0; i < positionsList.Count; i++) + { + positionsList[i].DisplayOrder = i; + _context.Update(positionsList[i]); + } + } + else + { + _context.Update(oldPosition); + } + + await _context.SaveChangesAsync(); + } + + public async Task> GetAppointmentsAsync(int semesterId) + { + var positions = await _context.Positions + .Where(p => !p.IsDisabled && p.Name != "Administrator") + .OrderBy(p => p.Type) + .ThenBy(p => p.DisplayOrder) + .ToListAsync(); + return positions; + } + + public async Task AssignUserToSemesterRoleAsync(int userId, int roleId, int semsterId) + { + var entity = new MemberPosition + { + UserId = userId, + RoleId = roleId, + SemesterId = semsterId, + AppointedOn = DateTime.UtcNow + }; + _context.Add(entity); + await _context.SaveChangesAsync(); + } + + public async Task RemoveUserFromSemesterRoleAsync(int userId, int roleId, int semesterId) + { + var appointment = await _context.MembersPositions + .Where(l => l.UserId == userId && l.RoleId == roleId && l.SemesterId == semesterId) + .SingleAsync(); + _context.Remove(appointment); + await _context.SaveChangesAsync(); + } +} diff --git a/src/Dsp.Services/Services/SemesterService.cs b/src/Dsp.Services/Services/SemesterService.cs index 293cf4ea..95bd72a1 100644 --- a/src/Dsp.Services/Services/SemesterService.cs +++ b/src/Dsp.Services/Services/SemesterService.cs @@ -1,226 +1,229 @@ -namespace Dsp.Services +namespace Dsp.Services; + +using Data; +using Data.Entities; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +public class SemesterService : BaseService, ISemesterService { - using Data; - using Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Interfaces; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Text; - using System.Threading.Tasks; - - public class SemesterService : BaseService, ISemesterService - { - private readonly IRepository _repository; - - public IList Alphabet { get; } = new List - { - "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", - "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", - "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega" - }; + private readonly DspDbContext _context; - public SemesterService() : this(new Repository(new SphinxDbContext())) - { + public IList GreekAlphabet { get; } = new List + { + "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", + "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", + "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega" + }; - } + public SemesterService(DspDbContext context) + { + _context = context; + } - public SemesterService(SphinxDbContext db) : this(new Repository(db)) - { + public async Task> GetAllSemestersAsync() + { + var semesters = await _context.Semesters + .Include(x => x.PledgeClasses) + .OrderBy(x => x.DateStart) + .OrderByDescending(x => x.DateStart) + .ToListAsync(); + return semesters; + } - } + public async Task> GetAllPledgeClassesAsync() + { + var pledgeClasses = await _context.PledgeClasses + .Include(x => x.Semester) + .OrderByDescending(x => x.Semester.DateEnd) + .ToListAsync(); + return pledgeClasses; + } - public SemesterService(IRepository repository) - { - _repository = repository; - } + public async Task> GetCurrentAndNextSemesterAsync(DateTime? now = null) + { + if (now == null) + now = DateTime.UtcNow; + + var thisAndNextSemester = await _context.Semesters + .Where(s => s.DateEnd >= now) + .OrderByDescending(x => x.DateStart) + .Take(2) + .ToListAsync(); + return thisAndNextSemester; + } - public async Task> GetAllSemestersAsync() - { - var semesters = await _repository - .GetAllAsync( - orderBy: o => o.OrderBy(s => s.DateStart)); - return semesters; - } + public async Task GetCurrentSemesterAsync(DateTime? now = null) + { + if (now == null) + now = DateTime.UtcNow; - public async Task> GetCurrentAndNextSemesterAsync(DateTime? now = null) - { - if (now == null) - now = DateTime.UtcNow; - - var thisAndNextSemester = await _repository - .GetAsync( - filter: s => s.DateEnd >= now, - orderBy: o => o.OrderBy(s => s.DateStart), - take: 2); - return thisAndNextSemester; - } + var semesters = await _context.Semesters + .Where(s => s.DateEnd >= DateTime.UtcNow) + .OrderBy(s => s.DateStart) + .Take(1) + .ToListAsync(); + var currentSemester = semesters.SingleOrDefault(); - public async Task GetCurrentSemesterAsync(DateTime? now = null) - { - if (now == null) - now = DateTime.UtcNow; - - var semesters = await _repository - .GetAsync( - s => s.DateEnd >= DateTime.UtcNow, - x => x.OrderBy(s => s.DateStart), - take: 1); - return semesters.SingleOrDefault(); - } + return currentSemester; + } - public async Task GetSemesterByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } + public async Task GetSemesterByIdAsync(int id) + { + return await _context.FindAsync(id); + } - public async Task GetSemesterByUtcDateTimeAsync(DateTime datetime) - { - return await _repository.GetFirstAsync( - filter: x => datetime <= x.DateEnd, - orderBy: x => x.OrderBy(o => o.DateEnd) - ); - } + public async Task GetSemesterByUtcDateTimeAsync(DateTime datetime) + { + return await _context.Semesters + .Where(x => datetime <= x.DateEnd) + .OrderBy(x => x.DateEnd) + .FirstAsync(); + } - public async Task GetFutureMostSemesterAsync() - { - var allSemesters = await GetAllSemestersAsync(); - return allSemesters.LastOrDefault(); - } + public async Task GetFutureMostSemesterAsync() + { + var allSemesters = await GetAllSemestersAsync(); + return allSemesters.LastOrDefault(); + } - public async Task> GetPriorSemestersAsync(Semester currentSemester) + public async Task> GetPriorSemestersAsync(Semester currentSemester) + { + var priorSemesters = await _context.Semesters + .Where(x => x.DateEnd < currentSemester.DateEnd) + .OrderBy(x => x.DateEnd) + .ToListAsync(); + return priorSemesters; + } + + public async Task GetPriorSemesterAsync(Semester currentSemester) + { + var priorSemesters = await GetPriorSemestersAsync(currentSemester); + var priorSemester = priorSemesters.LastOrDefault() ?? new Semester { - var priorSemesters = await _repository.GetAsync( - filter: x => x.DateEnd < currentSemester.DateEnd, - orderBy: x => x.OrderBy(o => o.DateEnd) - ); - return priorSemesters; - } + // This is the where they picked the very first semester in the system. + DateEnd = currentSemester.DateStart + }; + return priorSemester; + } - public async Task GetPriorSemesterAsync(Semester currentSemester) + public string GetNextPledgeClassName(string currentPledgeClassName) + { + var nameParts = currentPledgeClassName.Split(' '); + var nameIndeces = new List(); + foreach (var p in nameParts) { - var priorSemesters = await GetPriorSemestersAsync(currentSemester); - var priorSemester = priorSemesters.LastOrDefault() ?? new Semester + var alphabetPosition = GreekAlphabet.IndexOf(p); + if (alphabetPosition >= 0) { - // This is the where they picked the very first semester in the system. - DateEnd = currentSemester.DateStart - }; - return priorSemester; + nameIndeces.Add(alphabetPosition); + } } - - public string GetNextPledgeClassName(string currentPledgeClassName) + var sb = new StringBuilder(); + for (var i = 0; i < nameIndeces.Count; i++) { - var nameParts = currentPledgeClassName.Split(' '); - var nameIndeces = new List(); - foreach (var p in nameParts) + var index = nameIndeces[i]; + if (i + 1 >= nameIndeces.Count) { - var alphabetPosition = Alphabet.IndexOf(p); - if (alphabetPosition >= 0) + if (index >= GreekAlphabet.Count) { - nameIndeces.Add(alphabetPosition); + index = 0; } - } - var sb = new StringBuilder(); - for (var i = 0; i < nameIndeces.Count; i++) - { - var index = nameIndeces[i]; - if (i + 1 >= nameIndeces.Count) + else { - if (index >= Alphabet.Count) - { - index = 0; - } - else - { - index++; - } + index++; } - var letter = Alphabet[index]; - sb.Append(Alphabet[index]); - sb.Append(" "); } - return sb.ToString().TrimEnd(); + var letter = GreekAlphabet[index]; + sb.Append(GreekAlphabet[index]); + sb.Append(" "); } + return sb.ToString().TrimEnd(); + } - public Semester GetEstimatedNextSemester(Semester currentSemester) + public Semester GetEstimatedNextSemester(Semester currentSemester) + { + var nextSemester = new Semester(); + if (currentSemester != null) { - var nextSemester = new Semester(); - if (currentSemester != null) - { - var offset = currentSemester.DateStart.Month < 5 ? 7 : 5; + var offset = currentSemester.DateStart.Month < 5 ? 7 : 5; - nextSemester.MinimumServiceEvents = currentSemester.MinimumServiceEvents; - nextSemester.MinimumServiceHours = currentSemester.MinimumServiceHours; - nextSemester.DateStart = currentSemester.DateStart.AddMonths(offset); - nextSemester.DateEnd = currentSemester.DateEnd.AddMonths(offset); - nextSemester.TransitionDate = currentSemester.TransitionDate.AddMonths(offset); - } - return nextSemester; + nextSemester.MinimumServiceEvents = currentSemester.MinimumServiceEvents; + nextSemester.MinimumServiceHours = currentSemester.MinimumServiceHours; + nextSemester.DateStart = currentSemester.DateStart.AddMonths(offset); + nextSemester.DateEnd = currentSemester.DateEnd.AddMonths(offset); + nextSemester.TransitionDate = currentSemester.TransitionDate.AddMonths(offset); } + return nextSemester; + } - public PledgeClass GetEstimatedNextPledgeClass(Semester currentSemester) + public PledgeClass GetEstimatedNextPledgeClass(Semester currentSemester) + { + var nextPledgeClass = new PledgeClass(); + if (currentSemester != null) { - var nextPledgeClass = new PledgeClass(); - if (currentSemester != null) - { - var currentPledgeClass = currentSemester.PledgeClasses.FirstOrDefault(); - var offset = currentSemester.DateStart.Month < 5 ? 7 : 5; + var currentPledgeClass = currentSemester.PledgeClasses.FirstOrDefault(); + var offset = currentSemester.DateStart.Month < 5 ? 7 : 5; - if (currentPledgeClass.InitiationDate != null) - { - nextPledgeClass.InitiationDate = ((DateTime)currentPledgeClass.InitiationDate).AddMonths(offset); - } - if (currentPledgeClass.PinningDate != null) - { - nextPledgeClass.PinningDate = ((DateTime)currentPledgeClass.PinningDate).AddMonths(offset); - } - nextPledgeClass.PledgeClassName = GetNextPledgeClassName(currentPledgeClass.PledgeClassName); + if (currentPledgeClass.InitiationDate != null) + { + nextPledgeClass.InitiationDate = ((DateTime)currentPledgeClass.InitiationDate).AddMonths(offset); } - return nextPledgeClass; + if (currentPledgeClass.PinningDate != null) + { + nextPledgeClass.PinningDate = ((DateTime)currentPledgeClass.PinningDate).AddMonths(offset); + } + nextPledgeClass.PledgeClassName = GetNextPledgeClassName(currentPledgeClass.PledgeClassName); } + return nextPledgeClass; + } - public async Task CreateSemesterAsync(Semester semester) - { - if (semester.TransitionDate < semester.DateEnd) - throw new ArgumentException("Semester transition date cannot preceed the semester end date."); + public async Task CreateSemesterAsync(Semester semester) + { + if (semester.TransitionDate < semester.DateEnd) + throw new ArgumentException("Semester transition date cannot preceed the semester end date."); - _repository.Create(semester); - await _repository.SaveAsync(); - } + _context.Add(semester); + await _context.SaveChangesAsync(); + } - public async Task CreatePledgeClassAsync(PledgeClass pledgeClass) - { - _repository.Create(pledgeClass); - await _repository.SaveAsync(); - } + public async Task CreatePledgeClassAsync(PledgeClass pledgeClass) + { + _context.Add(pledgeClass); + await _context.SaveChangesAsync(); + } - public async Task UpdateSemesterAsync(Semester semester) - { - if (semester.TransitionDate < semester.DateEnd) - throw new ArgumentException("Semester transition date cannot preceed the semester end date."); + public async Task UpdateSemesterAsync(Semester semester) + { + if (semester.TransitionDate < semester.DateEnd) + throw new ArgumentException("Semester transition date cannot preceed the semester end date."); - _repository.Update(semester); - await _repository.SaveAsync(); - } + _context.Update(semester); + await _context.SaveChangesAsync(); + } - public async Task UpdatePledgeClassAsync(PledgeClass pledgeClass) - { - _repository.Update(pledgeClass); - await _repository.SaveAsync(); - } + public async Task UpdatePledgeClassAsync(PledgeClass pledgeClass) + { + _context.Update(pledgeClass); + await _context.SaveChangesAsync(); + } - public async Task DeleteSemesterAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } + public async Task DeleteSemesterAsync(int id) + { + var entity = new Semester { Id = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - public async Task DeletePledgeClassAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } + public async Task DeletePledgeClassAsync(int id) + { + var entity = new PledgeClass { PledgeClassId = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); } } diff --git a/src/Dsp.Services/Services/ServiceService.cs b/src/Dsp.Services/Services/ServiceService.cs index df36dea5..50529353 100644 --- a/src/Dsp.Services/Services/ServiceService.cs +++ b/src/Dsp.Services/Services/ServiceService.cs @@ -1,467 +1,466 @@ -namespace Dsp.Services +namespace Dsp.Services; + +using Data; +using Dsp.Data.Entities; +using Dsp.Services.Models; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Runtime.Caching; +using System.Threading.Tasks; + +public class ServiceService : BaseService, IServiceService { - using Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Dsp.Services.Models; - using Interfaces; - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Linq; - using System.Runtime.Caching; - using System.Threading.Tasks; - - public class ServiceService : BaseService, IServiceService + private readonly DspDbContext _context; + private readonly IMemberService _memberService; + private readonly ISemesterService _semesterService; + + public ServiceService(DspDbContext context, IMemberService memberService, + ISemesterService semesterService) { - private readonly IRepository _repository; - private readonly IMemberService _memberService; - private readonly ISemesterService _semesterService; + _context = context; + _memberService = memberService; + _semesterService = semesterService; + } - public ServiceService() : this(new Repository(new SphinxDbContext())) - { + public async Task> GetEventsBySemesterIdAsync(int sid) + { + var events = await _context.ServiceEvents + .Where(x => x.SemesterId == sid) + .OrderByDescending(x => x.DateTimeOccurred) + .ToListAsync(); - } + return events; + } - public ServiceService(SphinxDbContext db) : this(new Repository(db)) - { + public async Task> GetEventsForSemesterAsync(Semester semester) + { + var events = await GetEventsBySemesterIdAsync(semester.Id); - } + return events; + } + + public async Task> GetSemestersWithEventsAsync(Semester currentSemester, bool includeCurrent = true) + { + var semesters = await _context.Semesters + .Where(x => x.ServiceEvents.Any()) + .OrderByDescending(x => x.DateStart) + .ToListAsync(); - public ServiceService(IRepository repository) + if (includeCurrent && !semesters.Any(x => x.Id == currentSemester.Id)) { - _repository = repository; - _memberService = new MemberService(repository); - _semesterService = new SemesterService(repository); + semesters = semesters + .Concat(new List { currentSemester }) + .OrderByDescending(x => x.DateStart) + .ToList(); } + return semesters; + } - public async Task> GetEventsBySemesterIdAsync(int sid) - { - var events = await _repository.GetAsync( - filter: x => x.SemesterId == sid, - orderBy: x => x.OrderByDescending(o => o.DateTimeOccurred) - ); + public async Task GetEventByIdAsync(int id) + { + return await _context.FindAsync(id); + } - return events; - } + public async Task GetHoursAsync(int eventId, int userId) + { + return await _context.ServiceHours + .Where(x => x.EventId == eventId && x.UserId == userId) + .SingleAsync(); + } - public async Task> GetEventsForSemesterAsync(Semester semester) - { - var events = await GetEventsBySemesterIdAsync(semester.Id); + public async Task> GetEventAmendmentsBySemesterIdAsync(int semesterId) + { + return await _context.ServiceEventAmendments + .Where(x => x.SemesterId == semesterId) + .ToListAsync(); + } - return events; - } + public async Task> GetHoursAmendmentsBySemesterIdAsync(int semesterId) + { + return await _context.ServiceHourAmendments + .Where(x => x.SemesterId == semesterId) + .ToListAsync(); + } - public async Task> GetSemestersWithEventsAsync(Semester currentSemester, bool includeCurrent = true) - { - var semesters = await _repository.GetAsync( - filter: x => x.ServiceEvents.Any(), - orderBy: x => x.OrderByDescending(o => o.DateStart)); + public async Task GetEventAmendmentByIdAsync(int id) + { + return await _context.FindAsync(id); + } - if (includeCurrent && !semesters.Any(x => x.Id == currentSemester.Id)) - { - semesters = semesters - .Concat(new List { currentSemester }) - .OrderByDescending(x => x.DateStart); - } + public async Task GetHoursAmendmentByIdAsync(int id) + { + return await _context.FindAsync(id); + } - return semesters; - } - public async Task GetEventByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } + public async Task CreateEventAsync(ServiceEvent serviceEvent) + { + _context.Add(serviceEvent); + await _context.SaveChangesAsync(); + } - public async Task GetHoursAsync(int eventId, int userId) - { - return await _repository.GetOneAsync(filter: x => x.EventId == eventId && x.UserId == userId); - } + public async Task CreateHoursAsync(ServiceHour serviceHours) + { + _context.Add(serviceHours); + await _context.SaveChangesAsync(); + } - public async Task> GetEventAmendmentsBySemesterIdAsync(int semesterId) - { - return await _repository.GetAsync(filter: x => x.SemesterId == semesterId); - } + public async Task CreateEventAmendmentAsync(ServiceEventAmendment eventAmendment) + { + _context.Add(eventAmendment); + await _context.SaveChangesAsync(); + } - public async Task> GetHoursAmendmentsBySemesterIdAsync(int semesterId) - { - return await _repository.GetAsync(filter: x => x.SemesterId == semesterId); - } + public async Task CreateHoursAmendmentAsync(ServiceHourAmendment hoursAmendment) + { + _context.Add(hoursAmendment); + await _context.SaveChangesAsync(); + } - public async Task GetEventAmendmentByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } - public async Task GetHoursAmendmentByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } + public async Task UpdateEventAsync(ServiceEvent serviceEvent) + { + _context.Update(serviceEvent); + await _context.SaveChangesAsync(); + } + public async Task UpdateHoursAsync(ServiceHour serviceHours) + { + _context.Update(serviceHours); + await _context.SaveChangesAsync(); + } - public async Task CreateEventAsync(ServiceEvent serviceEvent) - { - _repository.Create(serviceEvent); - await _repository.SaveAsync(); - } - public async Task CreateHoursAsync(ServiceHour serviceHours) - { - _repository.Create(serviceHours); - await _repository.SaveAsync(); - } + public async Task DeleteEventByIdAsync(int id) + { + var entity = new ServiceEvent { EventId = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - public async Task CreateEventAmendmentAsync(ServiceEventAmendment eventAmendment) - { - _repository.Create(eventAmendment); - await _repository.SaveAsync(); - } + public async Task DeleteHoursAsync(ServiceHour serviceHours) + { + _context.Remove(serviceHours); + await _context.SaveChangesAsync(); + } - public async Task CreateHoursAmendmentAsync(ServiceHourAmendment hoursAmendment) - { - _repository.Create(hoursAmendment); - await _repository.SaveAsync(); - } + public async Task DeleteEventAmendmentByIdAsync(int id) + { + var entity = new ServiceEventAmendment { Id = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } + public async Task DeleteHoursAmendmentByIdAsync(int id) + { + var entity = new ServiceHourAmendment { Id = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - public async Task UpdateEventAsync(ServiceEvent serviceEvent) - { - _repository.Update(serviceEvent); - await _repository.SaveAsync(); - } - public async Task UpdateHoursAsync(ServiceHour serviceHours) + public async Task> GetGeneralHistoricalStatsAsync() + { + // Check the cache + ObjectCache cache = MemoryCache.Default; + var cacheKey = "general_historical_stats"; + if (cache[cacheKey] is IList generalHistoricalStats) + return generalHistoricalStats; + + // Calculate stats + generalHistoricalStats = new List(); + var semesters = await _semesterService.GetAllSemestersAsync(); + var semestersWithApprovedEvents = semesters + .Where(x => x.ServiceEvents.Any(e => e.IsApproved)) + .OrderByDescending(x => x.DateStart); + foreach (var sem in semestersWithApprovedEvents) { - _repository.Update(serviceHours); - await _repository.SaveAsync(); + var roster = await _memberService.GetRosterForSemesterAsync(sem.Id); + var nonExemptRoster = roster + .Where(x => x.ServiceHourAmendments + .Where(s => s.SemesterId == sem.Id) + .Sum(h => h.AmountHours) + sem.MinimumServiceHours > 0); + var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); + var semesterStats = new ServiceGeneralHistoricalStats(sem, nonExemptRoster, calculatedOn); + generalHistoricalStats.Add(semesterStats); } + // Add to cache + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; + cache.Set(cacheKey, generalHistoricalStats, cacheItemPolicy); - public async Task DeleteEventByIdAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } + return generalHistoricalStats; + } - public async Task DeleteHoursAsync(ServiceHour serviceHours) - { - _repository.Delete(serviceHours); - await _repository.SaveAsync(); - } + public async Task> GetRosterProgressBySemesterIdAsync(int sid) + { + // Check the cache + ObjectCache cache = MemoryCache.Default; + var cacheKey = $"roster_progress_stats_{sid}"; + if (cache[cacheKey] is IList rosterProgress) + return rosterProgress; - public async Task DeleteEventAmendmentByIdAsync(int id) + // Calculate progress + var selectedSemester = await _semesterService.GetSemesterByIdAsync(sid); + var roster = await _memberService.GetRosterForSemesterAsync(sid); + rosterProgress = new List(); + foreach (var m in roster) { - _repository.Delete(id); - await _repository.SaveAsync(); + var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); + var memberProgress = new ServiceMemberProgress(selectedSemester, m, calculatedOn); + rosterProgress.Add(memberProgress); } - public async Task DeleteHoursAmendmentByIdAsync(int id) + // Add to cache + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { SlidingExpiration = TimeSpan.FromDays(7) }; + if (selectedSemester.Id == currentSemester.Id) { - _repository.Delete(id); - await _repository.SaveAsync(); + cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; } + cache.Set(cacheKey, rosterProgress, cacheItemPolicy); + return rosterProgress; + } - public async Task> GetGeneralHistoricalStatsAsync() + public async Task GetMemberStatsBySemesterIdAsync(int sid) + { + // Check the cache + ObjectCache cache = MemoryCache.Default; + var cacheKey = $"member_stats_{sid.ToString()}"; + if (cache[cacheKey] is ServiceMemberStats memberStats) + return memberStats; + + // Calculate stats + var selectedSemester = await _semesterService.GetSemesterByIdAsync(sid); + var rosterProgress = await GetRosterProgressBySemesterIdAsync(sid); + + var exemptMembers = rosterProgress + .Where(m => m.HourAmendmentsTotal + selectedSemester.MinimumServiceHours <= 0) + .OrderBy(m => m.LastName) + .ToList(); + var exemptMemberCount = exemptMembers.Count; + var nonExemptMembers = rosterProgress + .Where(m => m.HourAmendmentsTotal + selectedSemester.MinimumServiceHours > 0).ToList(); + var nonExemptMemberCount = nonExemptMembers.Count; + var actives = rosterProgress + .Where(m => m.NewMemberClassSemesterId != selectedSemester.Id) + .ToList(); + var nonExemptActiveMembers = actives + .Where(m => !exemptMembers.Select(e => e.MemberId).Contains(m.MemberId)) + .ToList(); + var nonExemptActiveMemberCount = nonExemptActiveMembers.Count; + var newMembers = rosterProgress + .Where(m => m.NewMemberClassSemesterId == selectedSemester.Id) + .ToList(); + var nonExemptNewMembers = newMembers + .Where(m => !exemptMembers.Select(e => e.MemberId).Contains(m.MemberId)) + .ToList(); + var nonExemptNewMemberCount = nonExemptNewMembers.Count; + + var allMembersServed = nonExemptMembers.Count(m => m.Hours > 0); + var allMembersServedPercentage = (int)(100 * (allMembersServed / (double)nonExemptMemberCount)); + var allMembersServedTen = nonExemptMembers.Count(m => m.Hours >= 10); + var allMembersServedTenPercentage = (int)(100 * (allMembersServedTen / (double)nonExemptMemberCount)); + var allMembersServedFifteen = nonExemptMembers.Count(m => m.Hours >= 15); + var allMembersServedFifteenPercentage = (int)(100 * (allMembersServedFifteen / (double)nonExemptMemberCount)); + var totalMemberHours = nonExemptMembers.Sum(m => m.Hours); + var averageAllMemberHours = (totalMemberHours / nonExemptMemberCount).ToString("F1"); + var averageAllMemberAttendance = nonExemptMembers.Count(m => m.ServiceHoursCount >= m.EventAmendmentsTotal + selectedSemester.MinimumServiceEvents); + var averageAllMemberAttendancePercentage = (int)(100 * (averageAllMemberAttendance / (double)(nonExemptMemberCount == 0 ? 1 : nonExemptMemberCount))); + + var activeMembersServed = nonExemptActiveMembers.Count(m => m.Hours > 0); + var activeMembersServedPercentage = (int)(100 * (activeMembersServed / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); + var activeMembersServedTen = nonExemptActiveMembers.Count(m => m.Hours >= 10); + var activeMembersServedTenPercentage = (int)(100 * (activeMembersServedTen / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); + var activeMembersServedFifteen = nonExemptActiveMembers.Count(m => m.Hours >= 15); + var activeMembersServedFifteenPercentage = (int)(100 * (activeMembersServedFifteen / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); + var totalActiveMemberHours = actives.Sum(m => m.Hours); + var averageActiveMemberHours = (totalActiveMemberHours / (nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount)).ToString("F1"); + var averageActiveMemberAttendance = nonExemptActiveMembers.Count(m => m.ServiceHoursCount >= m.EventAmendmentsTotal + selectedSemester.MinimumServiceEvents); + var averageActiveMemberAttendancePercentage = (int)(100 * (averageActiveMemberAttendance / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); + + var newMembersServed = nonExemptNewMembers.Count(m => m.Hours > 0); + var newMembersServedPercentage = (int)(100 * (newMembersServed / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); + var newMembersServedTen = nonExemptNewMembers.Count(m => m.Hours >= 10); + var newMembersServedTenPercentage = (int)(100 * (newMembersServedTen / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); + var newMembersServedFifteen = nonExemptNewMembers.Count(m => m.Hours >= 15); + var newMembersServedFifteenPercentage = (int)(100 * (newMembersServedFifteen / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); + var totalNewMemberHours = newMembers.Sum(m => m.Hours); + var averageNewMemberHours = (totalNewMemberHours / (nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count)).ToString("F1"); + var averageNewMemberAttendance = nonExemptNewMembers.Count(m => m.ServiceHoursCount >= m.EventAmendmentsTotal + selectedSemester.MinimumServiceEvents); + var averageNewMemberAttendancePercentage = (int)(100 * (averageNewMemberAttendance / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); + var exemptMembersDisplay = string.Empty; + for (var i = 0; i < exemptMembers.Count; i++) { - // Check the cache - ObjectCache cache = MemoryCache.Default; - var cacheKey = "general_historical_stats"; - if (cache[cacheKey] is IList generalHistoricalStats) - return generalHistoricalStats; - - // Calculate stats - generalHistoricalStats = new List(); - var semesters = await _semesterService.GetAllSemestersAsync(); - var semestersWithApprovedEvents = semesters - .Where(x => x.ServiceEvents.Any(e => e.IsApproved)) - .OrderByDescending(x => x.DateStart); - foreach (var sem in semestersWithApprovedEvents) + exemptMembersDisplay += $"{exemptMembers[i].FirstName} {exemptMembers[i].LastName}"; + if (i < exemptMembers.Count - 1) { - var roster = await _memberService.GetRosterForSemesterAsync(sem.Id); - var nonExemptRoster = roster - .Where(x => x.ServiceHourAmendments - .Where(s => s.SemesterId == sem.Id) - .Sum(h => h.AmountHours) + sem.MinimumServiceHours > 0); - var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); - var semesterStats = new ServiceGeneralHistoricalStats(sem, nonExemptRoster, calculatedOn); - generalHistoricalStats.Add(semesterStats); + exemptMembersDisplay += ", "; } - - // Add to cache - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; - cache.Set(cacheKey, generalHistoricalStats, cacheItemPolicy); - - return generalHistoricalStats; } - public async Task> GetRosterProgressBySemesterIdAsync(int sid) + var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); + memberStats = new ServiceMemberStats( + nonExemptMemberCount, + exemptMemberCount, + nonExemptActiveMemberCount, + nonExemptNewMemberCount, + totalMemberHours, + totalActiveMemberHours, + totalNewMemberHours, + allMembersServed, + allMembersServedPercentage, + activeMembersServed, + activeMembersServedPercentage, + newMembersServed, + newMembersServedPercentage, + allMembersServedTen, + allMembersServedTenPercentage, + activeMembersServedTen, + activeMembersServedTenPercentage, + newMembersServedTen, + newMembersServedTenPercentage, + allMembersServedFifteen, + allMembersServedFifteenPercentage, + activeMembersServedFifteen, + activeMembersServedFifteenPercentage, + newMembersServedFifteen, + newMembersServedFifteenPercentage, + averageAllMemberHours, + averageActiveMemberHours, + averageNewMemberHours, + averageAllMemberAttendance, + averageAllMemberAttendancePercentage, + averageActiveMemberAttendance, + averageActiveMemberAttendancePercentage, + averageNewMemberAttendance, + averageNewMemberAttendancePercentage, + exemptMembersDisplay, + calculatedOn + ); + + // Add model to cache + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { SlidingExpiration = TimeSpan.FromDays(7) }; + if (selectedSemester.Id == currentSemester.Id) { - // Check the cache - ObjectCache cache = MemoryCache.Default; - var cacheKey = $"roster_progress_stats_{sid}"; - if (cache[cacheKey] is IList rosterProgress) - return rosterProgress; - - // Calculate progress - var selectedSemester = await _semesterService.GetSemesterByIdAsync(sid); - var roster = await _memberService.GetRosterForSemesterAsync(sid); - rosterProgress = new List(); - foreach (var m in roster) - { - var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); - var memberProgress = new ServiceMemberProgress(selectedSemester, m, calculatedOn); - rosterProgress.Add(memberProgress); - } + cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; + } + cache.Set(cacheKey, memberStats, cacheItemPolicy); - // Add to cache - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { SlidingExpiration = TimeSpan.FromDays(7) }; - if (selectedSemester.Id == currentSemester.Id) - { - cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; - } - cache.Set(cacheKey, rosterProgress, cacheItemPolicy); + return memberStats; + } - return rosterProgress; - } + public async Task GetHourStatsBySemesterIdAsync(int sid) + { + // Check the cache + ObjectCache cache = MemoryCache.Default; + var cacheKey = $"hour_stats_{sid.ToString()}"; + if (cache[cacheKey] is ServiceHourStats hourStats) + return hourStats; - public async Task GetMemberStatsBySemesterIdAsync(int sid) + // Calculate stats + var selectedSemester = await _semesterService.GetSemesterByIdAsync(sid); + var priorSemester = await _semesterService.GetPriorSemesterAsync(selectedSemester); + var roster = await _memberService.GetRosterForSemesterAsync(sid); + var unadjustedMemberCount = roster.Count(); + roster = roster.Where(x => x.ServiceHourAmendments + .Where(s => s.SemesterId == selectedSemester.Id) + .Sum(h => h.AmountHours) + selectedSemester.MinimumServiceHours > 0); + var adjustedMemberCount = roster.Count(); + var events = await GetEventsBySemesterIdAsync(sid); + var eventCount = events.Count(); + var now = DateTime.UtcNow; + var monthYearTuples = MonthsBetween(priorSemester.DateEnd, selectedSemester.DateEnd); + var dateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat; + + var months = monthYearTuples.Select(x => $"{dateTimeFormat.GetMonthName(x.Item1)} {x.Item2}"); + var moreThanZeroHoursSeries = new List(); + var fiveOrMoreHoursSeries = new List(); + var tenOrMoreHoursSeries = new List(); + var fifteenOrMoreHoursSeries = new List(); + var membersToHours = new Dictionary(); + + foreach (var monthYear in monthYearTuples) { - // Check the cache - ObjectCache cache = MemoryCache.Default; - var cacheKey = $"member_stats_{sid.ToString()}"; - if (cache[cacheKey] is ServiceMemberStats memberStats) - return memberStats; - - // Calculate stats - var selectedSemester = await _semesterService.GetSemesterByIdAsync(sid); - var rosterProgress = await GetRosterProgressBySemesterIdAsync(sid); - - var exemptMembers = rosterProgress - .Where(m => m.HourAmendmentsTotal + selectedSemester.MinimumServiceHours <= 0) - .OrderBy(m => m.LastName) - .ToList(); - var exemptMemberCount = exemptMembers.Count; - var nonExemptMembers = rosterProgress - .Where(m => m.HourAmendmentsTotal + selectedSemester.MinimumServiceHours > 0).ToList(); - var nonExemptMemberCount = nonExemptMembers.Count; - var actives = rosterProgress - .Where(m => m.NewMemberClassSemesterId != selectedSemester.Id) - .ToList(); - var nonExemptActiveMembers = actives - .Where(m => !exemptMembers.Select(e => e.MemberId).Contains(m.MemberId)) - .ToList(); - var nonExemptActiveMemberCount = nonExemptActiveMembers.Count; - var newMembers = rosterProgress - .Where(m => m.NewMemberClassSemesterId == selectedSemester.Id) - .ToList(); - var nonExemptNewMembers = newMembers - .Where(m => !exemptMembers.Select(e => e.MemberId).Contains(m.MemberId)) - .ToList(); - var nonExemptNewMemberCount = nonExemptNewMembers.Count; - - var allMembersServed = nonExemptMembers.Count(m => m.Hours > 0); - var allMembersServedPercentage = (int)(100 * (allMembersServed / (double)nonExemptMemberCount)); - var allMembersServedTen = nonExemptMembers.Count(m => m.Hours >= 10); - var allMembersServedTenPercentage = (int)(100 * (allMembersServedTen / (double)nonExemptMemberCount)); - var allMembersServedFifteen = nonExemptMembers.Count(m => m.Hours >= 15); - var allMembersServedFifteenPercentage = (int)(100 * (allMembersServedFifteen / (double)nonExemptMemberCount)); - var totalMemberHours = nonExemptMembers.Sum(m => m.Hours); - var averageAllMemberHours = (totalMemberHours / nonExemptMemberCount).ToString("F1"); - var averageAllMemberAttendance = nonExemptMembers.Count(m => m.ServiceHoursCount >= m.EventAmendmentsTotal + selectedSemester.MinimumServiceEvents); - var averageAllMemberAttendancePercentage = (int)(100 * (averageAllMemberAttendance / (double)(nonExemptMemberCount == 0 ? 1 : nonExemptMemberCount))); - - var activeMembersServed = nonExemptActiveMembers.Count(m => m.Hours > 0); - var activeMembersServedPercentage = (int)(100 * (activeMembersServed / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); - var activeMembersServedTen = nonExemptActiveMembers.Count(m => m.Hours >= 10); - var activeMembersServedTenPercentage = (int)(100 * (activeMembersServedTen / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); - var activeMembersServedFifteen = nonExemptActiveMembers.Count(m => m.Hours >= 15); - var activeMembersServedFifteenPercentage = (int)(100 * (activeMembersServedFifteen / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); - var totalActiveMemberHours = actives.Sum(m => m.Hours); - var averageActiveMemberHours = (totalActiveMemberHours / (nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount)).ToString("F1"); - var averageActiveMemberAttendance = nonExemptActiveMembers.Count(m => m.ServiceHoursCount >= m.EventAmendmentsTotal + selectedSemester.MinimumServiceEvents); - var averageActiveMemberAttendancePercentage = (int)(100 * (averageActiveMemberAttendance / (double)(nonExemptActiveMemberCount == 0 ? 1 : nonExemptActiveMemberCount))); - - var newMembersServed = nonExemptNewMembers.Count(m => m.Hours > 0); - var newMembersServedPercentage = (int)(100 * (newMembersServed / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); - var newMembersServedTen = nonExemptNewMembers.Count(m => m.Hours >= 10); - var newMembersServedTenPercentage = (int)(100 * (newMembersServedTen / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); - var newMembersServedFifteen = nonExemptNewMembers.Count(m => m.Hours >= 15); - var newMembersServedFifteenPercentage = (int)(100 * (newMembersServedFifteen / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); - var totalNewMemberHours = newMembers.Sum(m => m.Hours); - var averageNewMemberHours = (totalNewMemberHours / (nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count)).ToString("F1"); - var averageNewMemberAttendance = nonExemptNewMembers.Count(m => m.ServiceHoursCount >= m.EventAmendmentsTotal + selectedSemester.MinimumServiceEvents); - var averageNewMemberAttendancePercentage = (int)(100 * (averageNewMemberAttendance / (double)(nonExemptNewMembers.Count == 0 ? 1 : nonExemptNewMembers.Count))); - var exemptMembersDisplay = string.Empty; - for (var i = 0; i < exemptMembers.Count; i++) + var firstDayOfMonth = new DateTime(monthYear.Item2, monthYear.Item1, 1, 0, 0, 0, DateTimeKind.Utc); + if (now < firstDayOfMonth) continue; + + var monthEvents = events + .Where(x => x.IsApproved && + x.DateTimeOccurred.Month == monthYear.Item1 && + x.DateTimeOccurred.Year == monthYear.Item2); + // Add the month's submissions to lookup + foreach (var e in monthEvents) { - exemptMembersDisplay += $"{exemptMembers[i].FirstName} {exemptMembers[i].LastName}"; - if (i < exemptMembers.Count - 1) + foreach (var h in e.ServiceHours) { - exemptMembersDisplay += ", "; - } - } + if (!roster.Any(x => x.Id == h.UserId)) continue; - var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); - memberStats = new ServiceMemberStats( - nonExemptMemberCount, - exemptMemberCount, - nonExemptActiveMemberCount, - nonExemptNewMemberCount, - totalMemberHours, - totalActiveMemberHours, - totalNewMemberHours, - allMembersServed, - allMembersServedPercentage, - activeMembersServed, - activeMembersServedPercentage, - newMembersServed, - newMembersServedPercentage, - allMembersServedTen, - allMembersServedTenPercentage, - activeMembersServedTen, - activeMembersServedTenPercentage, - newMembersServedTen, - newMembersServedTenPercentage, - allMembersServedFifteen, - allMembersServedFifteenPercentage, - activeMembersServedFifteen, - activeMembersServedFifteenPercentage, - newMembersServedFifteen, - newMembersServedFifteenPercentage, - averageAllMemberHours, - averageActiveMemberHours, - averageNewMemberHours, - averageAllMemberAttendance, - averageAllMemberAttendancePercentage, - averageActiveMemberAttendance, - averageActiveMemberAttendancePercentage, - averageNewMemberAttendance, - averageNewMemberAttendancePercentage, - exemptMembersDisplay, - calculatedOn - ); - - // Add model to cache - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { SlidingExpiration = TimeSpan.FromDays(7) }; - if (selectedSemester.Id == currentSemester.Id) - { - cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; + if (!membersToHours.ContainsKey(h.UserId)) + membersToHours.Add(h.UserId, 0.0); + + membersToHours[h.UserId] += h.DurationHours; + } } - cache.Set(cacheKey, memberStats, cacheItemPolicy); - return memberStats; + // Check lookup results to populate lists + moreThanZeroHoursSeries.Add(membersToHours.Count); + fiveOrMoreHoursSeries.Add(membersToHours.Count(x => x.Value >= 5)); + tenOrMoreHoursSeries.Add(membersToHours.Count(x => x.Value >= 10)); + fifteenOrMoreHoursSeries.Add(membersToHours.Count(x => x.Value >= 15)); } - public async Task GetHourStatsBySemesterIdAsync(int sid) + var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); + hourStats = new ServiceHourStats( + unadjustedMemberCount, + adjustedMemberCount, + months, + moreThanZeroHoursSeries, + fiveOrMoreHoursSeries, + tenOrMoreHoursSeries, + fifteenOrMoreHoursSeries, + calculatedOn + ); + + // Add model to cache + var currentSemester = await _semesterService.GetCurrentSemesterAsync(); + CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { SlidingExpiration = TimeSpan.FromDays(7) }; + if (selectedSemester.Id == currentSemester.Id) { - // Check the cache - ObjectCache cache = MemoryCache.Default; - var cacheKey = $"hour_stats_{sid.ToString()}"; - if (cache[cacheKey] is ServiceHourStats hourStats) - return hourStats; - - // Calculate stats - var selectedSemester = await _semesterService.GetSemesterByIdAsync(sid); - var priorSemester = await _semesterService.GetPriorSemesterAsync(selectedSemester); - var roster = await _memberService.GetRosterForSemesterAsync(sid); - var unadjustedMemberCount = roster.Count(); - roster = roster.Where(x => x.ServiceHourAmendments - .Where(s => s.SemesterId == selectedSemester.Id) - .Sum(h => h.AmountHours) + selectedSemester.MinimumServiceHours > 0); - var adjustedMemberCount = roster.Count(); - var events = await GetEventsBySemesterIdAsync(sid); - var eventCount = events.Count(); - var now = DateTime.UtcNow; - var monthYearTuples = MonthsBetween(priorSemester.DateEnd, selectedSemester.DateEnd); - var dateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat; - - var months = monthYearTuples.Select(x => $"{dateTimeFormat.GetMonthName(x.Item1)} {x.Item2}"); - var moreThanZeroHoursSeries = new List(); - var fiveOrMoreHoursSeries = new List(); - var tenOrMoreHoursSeries = new List(); - var fifteenOrMoreHoursSeries = new List(); - var membersToHours = new Dictionary(); - - foreach (var monthYear in monthYearTuples) - { - var firstDayOfMonth = new DateTime(monthYear.Item2, monthYear.Item1, 1, 0, 0, 0, DateTimeKind.Utc); - if (now < firstDayOfMonth) continue; - - var monthEvents = events - .Where(x => x.IsApproved && - x.DateTimeOccurred.Month == monthYear.Item1 && - x.DateTimeOccurred.Year == monthYear.Item2); - // Add the month's submissions to lookup - foreach (var e in monthEvents) - { - foreach (var h in e.ServiceHours) - { - if (!roster.Any(x => x.Id == h.UserId)) continue; - - if (!membersToHours.ContainsKey(h.UserId)) - membersToHours.Add(h.UserId, 0.0); - - membersToHours[h.UserId] += h.DurationHours; - } - } + cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; + } + cache.Set(cacheKey, hourStats, cacheItemPolicy); - // Check lookup results to populate lists - moreThanZeroHoursSeries.Add(membersToHours.Count); - fiveOrMoreHoursSeries.Add(membersToHours.Count(x => x.Value >= 5)); - tenOrMoreHoursSeries.Add(membersToHours.Count(x => x.Value >= 10)); - fifteenOrMoreHoursSeries.Add(membersToHours.Count(x => x.Value >= 15)); - } + return hourStats; + } - var calculatedOn = ConvertUtcToCst(DateTime.UtcNow); - hourStats = new ServiceHourStats( - unadjustedMemberCount, - adjustedMemberCount, - months, - moreThanZeroHoursSeries, - fiveOrMoreHoursSeries, - tenOrMoreHoursSeries, - fifteenOrMoreHoursSeries, - calculatedOn - ); - - // Add model to cache - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - CacheItemPolicy cacheItemPolicy = new CacheItemPolicy { SlidingExpiration = TimeSpan.FromDays(7) }; - if (selectedSemester.Id == currentSemester.Id) - { - cacheItemPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(6) }; - } - cache.Set(cacheKey, hourStats, cacheItemPolicy); + private static IEnumerable> MonthsBetween(DateTime startDate, DateTime endDate) + { + DateTime iterator; + DateTime limit; - return hourStats; + if (endDate > startDate) + { + iterator = new DateTime(startDate.Year, startDate.Month, 1); + limit = endDate; } - - private static IEnumerable> MonthsBetween(DateTime startDate, DateTime endDate) + else { - DateTime iterator; - DateTime limit; - - if (endDate > startDate) - { - iterator = new DateTime(startDate.Year, startDate.Month, 1); - limit = endDate; - } - else - { - iterator = new DateTime(endDate.Year, endDate.Month, 1); - limit = startDate; - } - while (iterator <= limit) - { - yield return Tuple.Create(iterator.Month, iterator.Year); - iterator = iterator.AddMonths(1); - } + iterator = new DateTime(endDate.Year, endDate.Month, 1); + limit = startDate; + } + while (iterator <= limit) + { + yield return Tuple.Create(iterator.Month, iterator.Year); + iterator = iterator.AddMonths(1); } } } diff --git a/src/Dsp.Services/Services/SoberService.cs b/src/Dsp.Services/Services/SoberService.cs index c2bf23a3..406541fa 100644 --- a/src/Dsp.Services/Services/SoberService.cs +++ b/src/Dsp.Services/Services/SoberService.cs @@ -1,148 +1,140 @@ -namespace Dsp.Services +namespace Dsp.Services; + +using Dsp.Data; +using Dsp.Data.Entities; +using Dsp.Services.Interfaces; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +public class SoberService : BaseService, ISoberService { - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Dsp.Services.Interfaces; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - - public class SoberService : BaseService, ISoberService - { - private readonly IRepository _repository; - private readonly ISemesterService _semesterService; - - public SoberService() : this(new Repository(new SphinxDbContext())) - { - - } - - public SoberService(SphinxDbContext db) : this(new Repository(db)) - { - - } + private readonly DspDbContext _context; + private readonly ISemesterService _semesterService; - public SoberService(IRepository repository) - { - _repository = repository; - _semesterService = new SemesterService(repository); - } + public SoberService(DspDbContext context, ISemesterService semesterService) + { + _context = context; + _semesterService = semesterService; + } - public virtual async Task> GetUpcomingSignupsAsync() - { - return await GetUpcomingSignupsAsync(DateTime.UtcNow); - } + public virtual async Task> GetUpcomingSignupsAsync() + { + return await GetUpcomingSignupsAsync(DateTime.UtcNow); + } - public virtual async Task> GetUpcomingSignupsAsync(DateTime date) - { - var dateCst = ConvertUtcToCst(date); - if (dateCst.Hour < 6) // Don't show next day until after 6am - { - date = date.AddDays(-1); - } - - var startOfTodayCst = ConvertUtcToCst(date).Date; - var startOfTodayUtc = ConvertCstToUtc(startOfTodayCst); - var thisSemester = await _semesterService.GetCurrentSemesterAsync(); - var futureSignups = await _repository - .GetAsync(s => - s.DateOfShift >= startOfTodayUtc && - s.DateOfShift <= thisSemester.DateEnd); - var orderedSignups = futureSignups - .OrderBy(s => s.DateOfShift) - .ThenBy(s => s.SoberTypeId) - .ToList(); - var signups = new List(); - for (int i = 0; i < orderedSignups.Count; i++) - { - signups.Add(orderedSignups[i]); - if (i == orderedSignups.Count - 1 || - (orderedSignups[i].DateOfShift != orderedSignups[i + 1].DateOfShift && - orderedSignups[i].DateOfShift.AddDays(1) != orderedSignups[i + 1].DateOfShift)) - break; - } - return signups; - } + public virtual async Task> GetUpcomingSignupsAsync(DateTime date) + { + var dateCst = ConvertUtcToCst(date); + if (dateCst.Hour < 6) // Don't show next day until after 6am + { + date = date.AddDays(-1); + } + + var startOfTodayCst = ConvertUtcToCst(date).Date; + var startOfTodayUtc = ConvertCstToUtc(startOfTodayCst); + var thisSemester = await _semesterService.GetCurrentSemesterAsync(); + var futureSignups = await _context.SoberSignups + .Where(s => + s.DateOfShift >= startOfTodayUtc && + s.DateOfShift <= thisSemester.DateEnd) + .ToListAsync(); + var orderedSignups = futureSignups + .OrderBy(s => s.DateOfShift) + .ThenBy(s => s.SoberTypeId) + .ToList(); + var signups = new List(); + for (int i = 0; i < orderedSignups.Count; i++) + { + signups.Add(orderedSignups[i]); + if (i == orderedSignups.Count - 1 || + (orderedSignups[i].DateOfShift != orderedSignups[i + 1].DateOfShift && + orderedSignups[i].DateOfShift.AddDays(1) != orderedSignups[i + 1].DateOfShift)) + break; + } + return signups; + } - public async Task> GetAllFutureSignupsAsync() - { - return await GetAllFutureSignupsAsync(DateTime.UtcNow); - } + public async Task> GetAllFutureSignupsAsync() + { + return await GetAllFutureSignupsAsync(DateTime.UtcNow); + } - public async Task> GetAllFutureSignupsAsync(DateTime start) - { - var threeAmYesterday = ConvertCstToUtc(ConvertUtcToCst(start).Date).AddDays(-1).AddHours(3); + public async Task> GetAllFutureSignupsAsync(DateTime start) + { + var threeAmYesterday = ConvertCstToUtc(ConvertUtcToCst(start).Date).AddDays(-1).AddHours(3); - var signups = await _repository - .GetAsync( - s => s.DateOfShift >= threeAmYesterday, - o => o.OrderBy(s => s.DateOfShift)); + var signups = await _context.SoberSignups + .Where(s => s.DateOfShift >= threeAmYesterday) + .OrderBy(s => s.DateOfShift) + .Include(s => s.SoberType) + .ToListAsync(); - return signups; - } + return signups; + } - public async Task> GetFutureVacantSignups() - { - var startOfTodayUtc = ConvertCstToUtc(ConvertUtcToCst(DateTime.UtcNow).Date); - var vacantSignups = await _repository - .GetAsync( - s => s.DateOfShift >= startOfTodayUtc && s.UserId == null, - o => o.OrderBy(s => s.DateOfShift), - includeProperties: "SoberType"); - return vacantSignups; - } + public async Task> GetFutureVacantSignups() + { + var startOfTodayUtc = ConvertCstToUtc(ConvertUtcToCst(DateTime.UtcNow).Date); + var vacantSignups = await _context.SoberSignups + .Where(s => s.DateOfShift >= startOfTodayUtc && s.UserId == null) + .OrderBy(s => s.DateOfShift) + .Include(x => x.SoberType) + .ToListAsync(); + return vacantSignups; + } - public async Task> GetTypesAsync() - { - return await _repository.GetAllAsync(); - } + public async Task> GetTypesAsync() + { + return await _context.SoberTypes.ToListAsync(); + } - public async Task CreateSignupAsync(SoberSignup signup) - { - _repository.Create(signup); - await _repository.SaveAsync(); - } + public async Task CreateSignupAsync(SoberSignup signup) + { + _context.Add(signup); + await _context.SaveChangesAsync(); + } - public async Task CreateSignupsAsync(IEnumerable signups) + public async Task CreateSignupsAsync(IEnumerable signups) + { + foreach (var s in signups) { - foreach (var s in signups) - { - _repository.Create(s); - } - await _repository.SaveAsync(); + _context.Add(s); } + await _context.SaveChangesAsync(); + } - public async Task CreateTypeAsync(SoberType type) - { - _repository.Create(type); - await _repository.SaveAsync(); - } + public async Task CreateTypeAsync(SoberType type) + { + _context.Add(type); + await _context.SaveChangesAsync(); + } - public async Task UpdateSignupAsync(SoberSignup signup) - { - _repository.Update(signup); - await _repository.SaveAsync(); - } + public async Task UpdateSignupAsync(SoberSignup signup) + { + _context.Update(signup); + await _context.SaveChangesAsync(); + } - public async Task UpdateTypeAsync(SoberType type) - { - _repository.Update(type); - await _repository.SaveAsync(); - } + public async Task UpdateTypeAsync(SoberType type) + { + _context.Update(type); + await _context.SaveChangesAsync(); + } - public async Task DeleteSignupAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } + public async Task DeleteSignupAsync(int id) + { + var entity = new SoberSignup { SignupId = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); + } - public async Task DeleteTypeAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } + public async Task DeleteTypeAsync(int id) + { + var entity = new SoberType { SoberTypeId = id }; + _context.Remove(entity); + await _context.SaveChangesAsync(); } } \ No newline at end of file diff --git a/src/Dsp.Services/Services/StatusService.cs b/src/Dsp.Services/Services/StatusService.cs deleted file mode 100644 index 52592f27..00000000 --- a/src/Dsp.Services/Services/StatusService.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace Dsp.Services -{ - using Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Interfaces; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - - public class StatusService : BaseService, IStatusService - { - private readonly IRepository _repository; - - public StatusService() : this(new Repository(new SphinxDbContext())) - { - - } - - public StatusService(SphinxDbContext db) : this(new Repository(db)) - { - - } - - public StatusService(IRepository repository) - { - _repository = repository; - } - - public async Task> GetAllStatusesAsync() - { - var statuses = await _repository - .GetAllAsync( - orderBy: o => o.OrderBy(s => s.StatusId)); - return statuses; - } - - public async Task GetStatusByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } - - public async Task CreateStatus(MemberStatus status) - { - _repository.Create(status); - await _repository.SaveAsync(); - } - - public async Task UpdateStatus(MemberStatus status) - { - _repository.Update(status); - await _repository.SaveAsync(); - } - - public async Task DeleteStatus(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } - } -} diff --git a/src/Dsp.Services/Services/TreasuryService.cs b/src/Dsp.Services/Services/TreasuryService.cs deleted file mode 100644 index de633b4c..00000000 --- a/src/Dsp.Services/Services/TreasuryService.cs +++ /dev/null @@ -1,151 +0,0 @@ -namespace Dsp.Services -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Repositories.Interfaces; - using Dsp.Services.Interfaces; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Threading.Tasks; - - public class TreasuryService : BaseService, ITreasuryService - { - private readonly IRepository _repository; - - public TreasuryService() : this(new Repository(new SphinxDbContext())) - { - - } - - public TreasuryService(SphinxDbContext db) : this(new Repository(db)) - { - - } - - public TreasuryService(IRepository repository) - { - _repository = repository; - } - - public async Task GetDonationByIdAsync(int id) - { - var donation = await _repository.GetByIdAsync(id); - donation.CreatedOn = base.ConvertUtcToCst(donation.CreatedOn); - if (donation.ReceivedOn != null) - { - donation.ReceivedOn = base.ConvertUtcToCst(donation.ReceivedOn.Value); - } - return donation; - } - - public async Task GetFundraiserByIdAsync(int id) - { - var fundraiser = await _repository.GetByIdAsync(id); - fundraiser.BeginsOn = base.ConvertUtcToCst(fundraiser.BeginsOn); - if (fundraiser.EndsOn != null) - { - fundraiser.EndsOn = base.ConvertUtcToCst(fundraiser.EndsOn.Value); - } - return fundraiser; - } - - public async Task GetCauseByIdAsync(int id) - { - return await _repository.GetByIdAsync(id); - } - - public async Task> GetAllCausesAsync() - { - return await _repository.GetAllAsync(o => o.OrderBy(p => p.Name)); - } - - public async Task> GetAllFundraisersAsync() - { - return await _repository.GetAllAsync(o => o.OrderBy(p => p.Name)); - } - - public async Task> GetActiveFundraisersAsync() - { - return await _repository.GetAsync( - filter: m => m.IsPublic && (m.EndsOn == null || m.EndsOn > DateTime.UtcNow), - orderBy: o => o.OrderByDescending(p => p.EndsOn).ThenBy(p => p.Name)); - } - - public async Task> GetActivePledgeableFundraisersAsync() - { - return await _repository.GetAsync( - filter: m => m.IsPledgeable && m.IsPublic && (m.EndsOn == null || m.EndsOn > DateTime.UtcNow), - orderBy: o => o.OrderByDescending(p => p.EndsOn).ThenBy(p => p.Name)); - } - - public async Task CreateDonationAsync(Donation donation) - { - donation.CreatedOn = DateTime.UtcNow; - if (donation.ReceivedOn != null) - { - donation.ReceivedOn = base.ConvertCstToUtc(donation.ReceivedOn.Value); - } - _repository.Create(donation); - await _repository.SaveAsync(); - } - - public async Task CreateFundraiserAsync(Fundraiser fundraiser) - { - _repository.Create(fundraiser); - await _repository.SaveAsync(); - } - - public async Task CreateCauseAsync(Cause cause) - { - _repository.Create(cause); - await _repository.SaveAsync(); - } - - public async Task UpdateDonationAsync(Donation donation) - { - if (donation.ReceivedOn != null) - { - donation.ReceivedOn = base.ConvertCstToUtc(donation.ReceivedOn.Value); - } - _repository.Update(donation); - await _repository.SaveAsync(); - } - - public async Task UpdateFundraiserAsync(Fundraiser fundraiser) - { - fundraiser.BeginsOn = base.ConvertCstToUtc(fundraiser.BeginsOn); - if (fundraiser.EndsOn != null) - { - fundraiser.EndsOn = base.ConvertCstToUtc(fundraiser.EndsOn.Value); - } - _repository.Update(fundraiser); - await _repository.SaveAsync(); - } - - public async Task UpdateCauseAsync(Cause cause) - { - _repository.Update(cause); - await _repository.SaveAsync(); - } - - public async Task DeleteDonationAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } - - public async Task DeleteFundraiserAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } - - public async Task DeleteCauseAsync(int id) - { - _repository.Delete(id); - await _repository.SaveAsync(); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Services/Services/UserService.cs b/src/Dsp.Services/Services/UserService.cs new file mode 100644 index 00000000..8487df2b --- /dev/null +++ b/src/Dsp.Services/Services/UserService.cs @@ -0,0 +1,31 @@ +namespace Dsp.Services; + +using Data; +using Data.Entities; +using Interfaces; +using Microsoft.EntityFrameworkCore; +using System.Linq; +using System.Threading.Tasks; + +public class UserService : BaseService, IUserService +{ + private readonly DspDbContext _context; + + public UserService(DspDbContext context) + { + _context = context; + } + + public async Task GetUserByIdAsync(int id) + { + return await _context.FindAsync(id); + } + + public async Task GetUserByUserNameAsync(string userName) + { + return await _context.Users + .Where(m => m.UserName == userName) + .Include(m => m.MemberInfo) + .SingleAsync(); + } +} diff --git a/src/Dsp.Services/packages.config b/src/Dsp.Services/packages.config deleted file mode 100644 index f014cb63..00000000 --- a/src/Dsp.Services/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/Dsp.Tests/App.config b/src/Dsp.Tests/App.config deleted file mode 100644 index b520e3ab..00000000 --- a/src/Dsp.Tests/App.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - -
- - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Tests/Dsp.Tests.csproj b/src/Dsp.Tests/Dsp.Tests.csproj deleted file mode 100644 index 652e14bd..00000000 --- a/src/Dsp.Tests/Dsp.Tests.csproj +++ /dev/null @@ -1,140 +0,0 @@ - - - - Debug - AnyCPU - {24C4E28E-0DB0-4173-9E82-97A83C2ECBC0} - Library - Properties - Dsp.Tests - Dsp.Tests - v4.5.2 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll - True - - - ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll - True - - - ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll - True - - - ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll - True - - - ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll - True - - - ..\packages\Moq.4.5.30\lib\net45\Moq.dll - True - - - ..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll - True - - - - - - ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - {9ce07462-20a3-4ee6-8797-7ea69e05acb8} - Dsp.Data - - - {00CF890E-D0B7-45D9-AA1C-73D57CEBCCFF} - Dsp.Repositories - - - {d999933e-f1d3-4e84-9219-b54b7e8e2dc8} - Dsp.Services - - - - - - - False - - - False - - - False - - - False - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Tests/Properties/AssemblyInfo.cs b/src/Dsp.Tests/Properties/AssemblyInfo.cs deleted file mode 100644 index c7b65969..00000000 --- a/src/Dsp.Tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dsp.Tests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dsp.Tests")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("24c4e28e-0db0-4173-9e82-97a83c2ecbc0")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Dsp.Tests/TestDbAsyncQueryProvider.cs b/src/Dsp.Tests/TestDbAsyncQueryProvider.cs deleted file mode 100644 index 1042bdfb..00000000 --- a/src/Dsp.Tests/TestDbAsyncQueryProvider.cs +++ /dev/null @@ -1,105 +0,0 @@ -namespace Dsp.Tests -{ - using System.Collections.Generic; - using System.Data.Entity.Infrastructure; - using System.Linq; - using System.Linq.Expressions; - using System.Threading; - using System.Threading.Tasks; - - internal class TestDbAsyncQueryProvider : IDbAsyncQueryProvider - { - private readonly IQueryProvider _inner; - - internal TestDbAsyncQueryProvider(IQueryProvider inner) - { - _inner = inner; - } - - public IQueryable CreateQuery(Expression expression) - { - return new TestDbAsyncEnumerable(expression); - } - - public IQueryable CreateQuery(Expression expression) - { - return new TestDbAsyncEnumerable(expression); - } - - public object Execute(Expression expression) - { - return _inner.Execute(expression); - } - - public TResult Execute(Expression expression) - { - return _inner.Execute(expression); - } - - public Task ExecuteAsync(Expression expression, CancellationToken cancellationToken) - { - return Task.FromResult(Execute(expression)); - } - - public Task ExecuteAsync(Expression expression, CancellationToken cancellationToken) - { - return Task.FromResult(Execute(expression)); - } - } - - internal class TestDbAsyncEnumerable : EnumerableQuery, IDbAsyncEnumerable, IQueryable - { - public TestDbAsyncEnumerable(IEnumerable enumerable) - : base(enumerable) - { } - - public TestDbAsyncEnumerable(Expression expression) - : base(expression) - { } - - public IDbAsyncEnumerator GetAsyncEnumerator() - { - return new TestDbAsyncEnumerator(this.AsEnumerable().GetEnumerator()); - } - - IDbAsyncEnumerator IDbAsyncEnumerable.GetAsyncEnumerator() - { - return GetAsyncEnumerator(); - } - - IQueryProvider IQueryable.Provider - { - get { return new TestDbAsyncQueryProvider(this); } - } - } - - internal class TestDbAsyncEnumerator : IDbAsyncEnumerator - { - private readonly IEnumerator _inner; - - public TestDbAsyncEnumerator(IEnumerator inner) - { - _inner = inner; - } - - public void Dispose() - { - _inner.Dispose(); - } - - public Task MoveNextAsync(CancellationToken cancellationToken) - { - return Task.FromResult(_inner.MoveNext()); - } - - public T Current - { - get { return _inner.Current; } - } - - object IDbAsyncEnumerator.Current - { - get { return Current; } - } - } -} diff --git a/src/Dsp.Tests/TestMemberService.cs b/src/Dsp.Tests/TestMemberService.cs deleted file mode 100644 index 3981a2a0..00000000 --- a/src/Dsp.Tests/TestMemberService.cs +++ /dev/null @@ -1,139 +0,0 @@ -namespace Dsp.Tests -{ - using Data; - using Data.Entities; - using Dsp.Services; - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; - using Services.Interfaces; - using System; - using System.Collections.Generic; - using System.Data.Entity; - using System.Data.Entity.Infrastructure; - using System.Linq; - using System.Threading.Tasks; - - [TestClass] - public class TestMemberService - { - private IMemberService _memberService; - - [TestInitialize] - public void Initialize() - { - var membersData = new List - { - new Member - { - Id = 1, UserName = "jsmith", - FirstName = "Jon", - LastName = "Smith", - Email = "jsmith@dsp.com", - StatusId = 1, - GraduationSemester = null, - PledgeClassId = 1 - }, - new Member - { - Id = 2, - UserName = "tblack", - FirstName = "Tom", - LastName = "Black", - Email = "tblack@dsp.com", - StatusId = 2, - GraduationSemester = null, - PledgeClassId = 1 - }, - new Member - { - Id = 3, - UserName = "rjames", - FirstName = "Rob", - LastName = "James", - Email = "rjames@dsp.com", - StatusId = 3, - GraduationSemester = null, - PledgeClassId = 1 - } - }.AsQueryable(); - var memberStatusesData = new List - { - new MemberStatus { StatusId = 1, StatusName = "New" }, - new MemberStatus { StatusId = 2, StatusName = "Neophyte" }, - new MemberStatus { StatusId = 3, StatusName = "Active" }, - new MemberStatus { StatusId = 4, StatusName = "Alumnus" }, - new MemberStatus { StatusId = 5, StatusName = "Affiliate" }, - new MemberStatus { StatusId = 6, StatusName = "Released" } - }.AsQueryable(); - var semestersData = new List - { - new Semester { Id = 1, DateStart = new DateTime(2015, 1, 15), DateEnd = new DateTime(2015, 5, 15) }, - new Semester { Id = 2, DateStart = new DateTime(2015, 1, 15), DateEnd = new DateTime(2015, 5, 15) } - }.AsQueryable(); - // TODO: Finish semesters and add pledge classes to test roster. - - var mockContext = new Mock(); - var memberMockSet = new Mock>(); - memberMockSet.As>() - .Setup(e => e.GetAsyncEnumerator()) - .Returns(new TestDbAsyncEnumerator(membersData.GetEnumerator())); - memberMockSet.As>() - .Setup(e => e.Provider) - .Returns(new TestDbAsyncQueryProvider(membersData.Provider)); - memberMockSet.As>().Setup(e => e.Expression).Returns(membersData.Expression); - memberMockSet.As>().Setup(e => e.ElementType).Returns(membersData.ElementType); - memberMockSet.As>().Setup(e => e.GetEnumerator()).Returns(() => membersData.GetEnumerator()); - - mockContext.Setup(e => e.Users).Returns(memberMockSet.Object); - - var memberStatusMockSet = new Mock>(); - memberStatusMockSet.As>() - .Setup(e => e.GetAsyncEnumerator()) - .Returns(new TestDbAsyncEnumerator(memberStatusesData.GetEnumerator())); - memberStatusMockSet.As>() - .Setup(e => e.Provider) - .Returns(new TestDbAsyncQueryProvider(memberStatusesData.Provider)); - memberStatusMockSet.As>().Setup(e => e.Expression).Returns(memberStatusesData.Expression); - memberStatusMockSet.As>().Setup(e => e.ElementType).Returns(memberStatusesData.ElementType); - memberStatusMockSet.As>().Setup(e => e.GetEnumerator()).Returns(() => memberStatusesData.GetEnumerator()); - - mockContext.Setup(e => e.MemberStatuses).Returns(memberStatusMockSet.Object); - - _memberService = new MemberService(mockContext.Object); - } - - [TestMethod] - public async Task MemberService_GetMemberByIdAsync_Found() - { - var entity = await _memberService.GetMemberByIdAsync(1); - Assert.AreEqual(entity.Id, 1); - - entity = await _memberService.GetMemberByIdAsync(2); - Assert.AreEqual(entity.Id, 2); - - entity = await _memberService.GetMemberByIdAsync(3); - Assert.AreEqual(entity.Id, 3); - } - - [TestMethod] - public async Task MemberService_GetMemberByUserNameAsync_Found() - { - var entity = await _memberService.GetMemberByUserNameAsync("jsmith"); - Assert.AreEqual(entity.UserName, "jsmith"); - - entity = await _memberService.GetMemberByUserNameAsync("tblack"); - Assert.AreEqual(entity.UserName, "tblack"); - - entity = await _memberService.GetMemberByUserNameAsync("rjames"); - Assert.AreEqual(entity.UserName, "rjames"); - } - - [TestMethod] - public async Task MemberService_GetRosterForSemester_All() - { - var semester = new Semester(); - var entity = await _memberService.GetRosterForSemesterAsync(semester); - Assert.AreEqual(1, 1); - } - } -} diff --git a/src/Dsp.Tests/packages.config b/src/Dsp.Tests/packages.config deleted file mode 100644 index 4d0ad898..00000000 --- a/src/Dsp.Tests/packages.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Api/AdminController.cs b/src/Dsp.Web/Api/AdminController.cs deleted file mode 100644 index 5d795aa9..00000000 --- a/src/Dsp.Web/Api/AdminController.cs +++ /dev/null @@ -1,107 +0,0 @@ -namespace Dsp.Web.Api -{ - using Data; - using Data.Entities; - using Services; - using Services.Interfaces; - using System; - using System.Data.Entity; - using System.Linq; - using System.Threading.Tasks; - using System.Web.Http; - using System.Web.Http.Description; - - [Authorize] - [RoutePrefix("api/admin")] - public class AdminController : ApiController - { - private SphinxDbContext _db; - private ISemesterService _semesterService; - private IMemberService _memberService; - private IPositionService _positionService; - - public AdminController() - { - _db = new SphinxDbContext(); - _semesterService = new SemesterService(_db); - _memberService = new MemberService(_db); - _positionService = new PositionService(_db); - } - - [Authorize(Roles = "Administrator, President")] - [HttpGet, Route("appoint/{sid:int}/{pid:int}")] - public async Task Appoint(int sid, int pid) - { - var semester = await _semesterService.GetSemesterByIdAsync(sid); - if (semester == null) return NotFound(); - var position = await _positionService.GetPositionByIdAsync(pid); - if (position == null) return NotFound(); - - try - { - var leader = await _db.Leaders - .Where(l => l.SemesterId == sid && l.RoleId == pid) - .OrderByDescending(l => l.AppointedOn) - .FirstOrDefaultAsync(); - if (leader != null) return Ok(new - { - mid = leader.UserId, - pid = leader.RoleId, - sid = leader.SemesterId, - name = leader.Member.FirstName + " " + leader.Member.LastName - }); - else return Ok("No one is appointed to this position."); - } - catch (Exception) - { - return BadRequest("Appointment failed. Check if someone is already appointed and remove them first."); - } - } - - [Authorize(Roles = "Administrator, President")] - [HttpPost, Route("appoint"), ResponseType(typeof(Leader))] - public async Task Appoint([FromBody] Leader app) - { - var member = await _memberService.GetMemberByIdAsync(app.UserId); - if (member == null) return NotFound(); - var semester = await _semesterService.GetSemesterByIdAsync(app.SemesterId); - if (semester == null) return NotFound(); - var position = await _positionService.GetPositionByIdAsync(app.RoleId); - if (position == null) return NotFound(); - - try - { - await _positionService.AppointMemberToPositionAsync(app.UserId, app.RoleId, app.SemesterId); - } - catch (Exception) - { - return BadRequest("Appointment failed. Check if someone is already appointed and remove them first."); - } - - return Ok(); - } - - [Authorize(Roles = "Administrator, President")] - [HttpDelete, Route("unappoint"), ResponseType(typeof(Leader))] - public async Task Unappoint([FromBody] Leader app) - { - var member = await _memberService.GetMemberByIdAsync(app.UserId); - if (member == null) return NotFound(); - var semester = await _semesterService.GetSemesterByIdAsync(app.SemesterId); - if (semester == null) return NotFound(); - var position = await _positionService.GetPositionByIdAsync(app.RoleId); - if (position == null) return NotFound(); - - try - { - await _positionService.RemoveMemberFromPositionAsync(app.UserId, app.RoleId, app.SemesterId); - } - catch (Exception) - { - return BadRequest("Failed to remove member from position. Are you sure they're appointed?"); - } - - return Ok(); - } - } -} diff --git a/src/Dsp.Web/Api/MealsController.cs b/src/Dsp.Web/Api/MealsController.cs deleted file mode 100644 index be5effc9..00000000 --- a/src/Dsp.Web/Api/MealsController.cs +++ /dev/null @@ -1,76 +0,0 @@ -namespace Dsp.Web.Api -{ - using Data; - using Dsp.Data.Entities; - using Dsp.Web.Api.Models; - using Dsp.Web.Extensions; - using Microsoft.AspNet.Identity; - using Services; - using Services.Interfaces; - using System; - using System.Collections.Generic; - using System.Threading.Tasks; - using System.Web.Http; - using System.Web.Http.Description; - - [Authorize] - [RoutePrefix("api/meals")] - public class MealsController : ApiController - { - private SphinxDbContext _db; - private IMealService _mealService; - - public MealsController() - { - _db = new SphinxDbContext(); - _mealService = new MealService(_db); - } - - [Authorize] - [HttpGet, Route("votes"), ResponseType(typeof(MealItemVote[]))] - public async Task GetMealItemVotesForCurrentUser() - { - var response = new List(); - try - { - var votes = await _mealService.GetAllVotesByUserIdAsync(User.Identity.GetUserId()); - foreach (var vote in votes) - { - response.Add(new MealItemVoteApiModel - { - MealItemId = vote.MealItemId, - IsUpvote = vote.IsUpvote - }); - } - } - catch (Exception) - { - return BadRequest("Failed to get meal item votes for current user!"); - } - - return Ok(response); - } - - [Authorize] - [HttpGet, Route("plates"), ResponseType(typeof(MealItemVote[]))] - public async Task GetMealPlates(int week = 0) - { - var nowUtc = DateTime.UtcNow.AddDays(week * 7); - var weekOfYear = DateTimeExtensions.GetWeekOfYear(nowUtc); - var startDate = DateTimeExtensions.FirstDateOfWeek(nowUtc.Year, weekOfYear); - var endDate = startDate.AddDays(7); - IEnumerable response; - try - { - response = await _mealService.GetMealPlatesAsync(startDate, endDate); - } - catch (Exception) - { - return BadRequest("Failed to get meal plates!"); - } - - return Ok(response); - } - - } -} diff --git a/src/Dsp.Web/Api/MembersController.cs b/src/Dsp.Web/Api/MembersController.cs deleted file mode 100644 index 6298c410..00000000 --- a/src/Dsp.Web/Api/MembersController.cs +++ /dev/null @@ -1,301 +0,0 @@ -namespace Dsp.Web.Api -{ - using Data; - using Data.Entities; - using Dsp.Web.Models; - using Extensions; - using Microsoft.AspNet.Identity; - using Services; - using Services.Interfaces; - using System; - using System.Collections.Generic; - using System.Data.Entity; - using System.Linq; - using System.Threading.Tasks; - using System.Web.Http; - - [System.Web.Http.Authorize] - [System.Web.Http.RoutePrefix("api/members")] - public class MembersController : ApiController - { - private SphinxDbContext _db; - private ISemesterService _semesterService; - private IMemberService _memberService; - private IPositionService _positionService; - - public MembersController() - { - _db = new SphinxDbContext(); - _semesterService = new SemesterService(_db); - _memberService = new MemberService(_db); - _positionService = new PositionService(_db); - } - - [System.Web.Http.Authorize(Roles = "New, Active, Alumnus")] - [System.Web.Http.HttpGet, System.Web.Http.Route("roster/{sid:int}")] - public async Task Roster(int sid) - { - var semester = await _semesterService.GetSemesterByIdAsync(sid); - if (semester == null) return NotFound(); - - try - { - var roster = await _memberService.GetRosterForSemesterAsync(sid); - return Ok(roster.Select(m => new - { - id = m.Id, - firstName = m.FirstName, - lastName = m.LastName - })); - } - catch (Exception) - { - return BadRequest("Roster acquisition failed."); - } - } - - [System.Web.Http.Authorize(Roles = "New, Active, Alumnus")] - [System.Web.Http.HttpGet, System.Web.Http.Route("alumni/{sid:int}")] - public async Task Alumni(int sid) - { - var semester = await _semesterService.GetSemesterByIdAsync(sid); - if (semester == null) return NotFound(); - - try - { - var roster = await _memberService.GetAlumniAsync(sid); - return Ok(roster.Select(m => new - { - id = m.Id, - firstName = m.FirstName, - lastName = m.LastName - })); - } - catch (Exception) - { - return BadRequest("Roster acquisition failed."); - } - } - - [System.Web.Http.Authorize(Roles = "New, Active, Alumnus")] - [System.Web.Http.HttpGet, System.Web.Http.Route("feed/{page:int}")] - public async Task Feed(int page = 0) - { - const int pageLength = 10; - const int feedLengthDays = 30; - // Limit page minimum and maximum to [0, 10] (Can't go more than 10 weeks back if pageLength equals 7) - page = page > 10 ? 10 : page; - page = page < 0 ? 0 : page; - var nowUtc = DateTime.UtcNow; - var nowCst = nowUtc.FromUtcToCst(); - var startOfFeedUtc = nowUtc.AddDays(-feedLengthDays); - var startOfFeedCst = nowCst.AddDays(-feedLengthDays); - var thisSemester = await _semesterService.GetCurrentSemesterAsync(); - var model = new List(); - - // Laundry reservations - var laundryItems = await _db.LaundrySignups - .Where(l => l.DateTimeSignedUp > startOfFeedCst && l.DateTimeSignedUp <= nowCst) - .ToListAsync(); - var laundryGroups = laundryItems.GroupBy(s => s.DateTimeSignedUp.Date); - foreach (var g in laundryGroups) - { - var count = g.Count(); - if (count < 4) - { - model.AddRange(g.Select(l => new FeedItem - { - UserName = l.Member.UserName, - Name = l.Member.ToString(), - ImageName = l.Member.GetAvatarString(), - TimeSince = (nowCst - l.DateTimeSignedUp).ToUserFriendlyString(), - OccurredOn = l.DateTimeSignedUp.FromCstToUtc(), - DisplayText = "Laundry reservation added for " + l.DateTimeShift.ToString("f"), - Link = $"/laundry/schedule", - Symbol = "fa-tint" - })); - } - else - { - model.Add(new FeedItem - { - UserName = null, - Name = null, - ImageName = "NoAvatar.jpg", - TimeSince = (nowUtc - g.OrderBy(l => l.DateTimeSignedUp).Last().DateTimeSignedUp).ToUserFriendlyString(), - OccurredOn = g.First().DateTimeSignedUp, - DisplayText = count + " laundry signups", - Link = $"/laundry/schedule", - Symbol = "fa-tint" - }); - } - } - - // Sober shifts added - var soberSlotsAdded = await _db.SoberSignups - .Where(s => s.CreatedOn > startOfFeedUtc && s.CreatedOn <= nowUtc) - .ToListAsync(); - var saas = await _db.Leaders - .Where(l => l.Position.Name == "Sergeant-at-Arms" && l.SemesterId == thisSemester.Id).ToListAsync(); - var saa = (saas.LastOrDefault() ?? new Leader - { - Member = await _memberService.GetMemberByIdAsync(User.Identity.GetUserId()) - }).Member; - var soberSlotGroups = soberSlotsAdded - .Where(s => s.CreatedOn != null) - .GroupBy(s => ((DateTime)s.CreatedOn).Date); - foreach (var g in soberSlotGroups) - { - var count = g.Count(); - if (count < 4) - { - model.AddRange(g.Where(s => s.CreatedOn != null).Select(s => new FeedItem - { - UserName = saa.UserName, - Name = saa.ToString(), - ImageName = saa.GetAvatarString(), - TimeSince = (nowUtc - (DateTime)s.CreatedOn).ToUserFriendlyString(), - OccurredOn = (DateTime)s.CreatedOn, - DisplayText = "Sober shift added for " + s.DateOfShift.FromUtcToCst().ToString("D"), - Link = "/sobers/schedule", - Symbol = "fa-car" - })); - } - else - { - model.Add(new FeedItem - { - UserName = saa.UserName, - Name = saa.ToString(), - ImageName = saa.GetAvatarString(), - TimeSince = (nowUtc - (g.First().CreatedOn ?? nowUtc)).ToUserFriendlyString(), - OccurredOn = g.First().CreatedOn ?? nowUtc, - DisplayText = count + " sober shifts added", - Link = "/sobers/schedule", - Symbol = "fa-car" - }); - } - } - - // Sober shifts filled - var soberSignups = await _db.SoberSignups - .Where(s => s.DateTimeSignedUp > startOfFeedUtc && s.DateTimeSignedUp <= nowUtc) - .ToListAsync(); - model.AddRange(soberSignups.Where(s => s.DateTimeSignedUp != null).Select(s => new FeedItem - { - UserName = s.Member.UserName, - Name = s.Member.ToString(), - ImageName = s.Member.GetAvatarString(), - TimeSince = (nowUtc - (DateTime)s.DateTimeSignedUp).ToUserFriendlyString(), - OccurredOn = (DateTime)s.DateTimeSignedUp, - DisplayText = "New volunteer for Sober " + s.SoberType.Name + " on " + s.DateOfShift.FromUtcToCst().ToString("D"), - Link = "/sobers/schedule", - Symbol = "fa-beer" - })); - - // Meal Plates - var plates = await _db.MealPlates - .Where(p => p.SignedUpOn > startOfFeedUtc && p.SignedUpOn <= nowUtc) - .ToListAsync(); - var plateGroups = plates.GroupBy(s => s.SignedUpOn.Date); - foreach (var g in plateGroups) - { - var count = g.Count(); - if (count < 4) - { - model.AddRange(g.Select(s => new FeedItem - { - UserName = s.Member.UserName, - Name = s.Member.ToString(), - ImageName = s.Member.GetAvatarString(), - TimeSince = (nowUtc - s.SignedUpOn).ToUserFriendlyString(), - OccurredOn = s.SignedUpOn, - DisplayText = s.Type + " plate signup added", - Link = "/kitchen/meals/schedule", - Symbol = "fa-cutlery" - })); - } - else - { - model.Add(new FeedItem - { - UserName = null, - Name = null, - ImageName = "NoAvatar.jpg", - TimeSince = (nowUtc - g.OrderBy(l => l.SignedUpOn).Last().SignedUpOn).ToUserFriendlyString(), - OccurredOn = g.OrderBy(l => l.SignedUpOn).Last().SignedUpOn, - DisplayText = count + " plate signups added", - Link = "/kitchen/meals/schedule", - Symbol = "fa-cutlery" - }); - } - } - - // Service - var serviceEvents = await _db.ServiceEvents - .Where(e => e.CreatedOn > startOfFeedUtc && e.CreatedOn <= nowUtc) - .ToListAsync(); - model.AddRange(serviceEvents.Where(s => s.CreatedOn != null).Select(s => new FeedItem - { - UserName = s.Submitter.UserName, - Name = s.Submitter.ToString(), - ImageName = s.Submitter.GetAvatarString(), - TimeSince = (nowUtc - (DateTime)s.CreatedOn).ToUserFriendlyString(), - OccurredOn = (DateTime)s.CreatedOn, - DisplayText = s.EventName + " service event was added", - Link = $"/service/events/details?id={s.EventId}", - Symbol = "fa-globe" - })); - - // Scholarships - var scholarshipSubmissions = await _db.ScholarshipSubmissions - .Where(s => s.SubmittedOn > startOfFeedUtc && s.SubmittedOn <= nowUtc) - .ToListAsync(); - model.AddRange(scholarshipSubmissions.Select(s => new FeedItem - { - UserName = string.Empty, - Name = s.FirstName + " " + s.LastName, - ImageName = "NoAvatar.jpg", - TimeSince = (nowUtc - s.SubmittedOn).ToUserFriendlyString(), - OccurredOn = s.SubmittedOn, - DisplayText = "New scholarship application was submitted", - Link = $"/scholarships/applications/submission?id={s.ScholarshipSubmissionId}", - Symbol = "fa-graduation-cap" - })); - - // Incidents - var incidents = await _db.IncidentReports - .Where(i => i.DateTimeSubmitted > startOfFeedUtc && i.DateTimeSubmitted <= nowUtc) - .ToListAsync(); - model.AddRange(incidents.Select(s => new FeedItem - { - UserName = string.Empty, - Name = string.Empty, - ImageName = "NoAvatar.jpg", - TimeSince = (nowUtc - s.DateTimeSubmitted).ToUserFriendlyString(), - OccurredOn = s.DateTimeSubmitted, - DisplayText = "New incident report submitted", - Link = $"/members/incidents/details?id={s.Id}", - Symbol = "fa-exclamation-triangle" - })); - - // Work Orders - var workOrders = await _db.WorkOrderStatusChanges - .Where(w => w.ChangedOn > startOfFeedUtc && w.ChangedOn <= nowUtc && w.Status.Name == "Unread") - .ToListAsync(); - model.AddRange(workOrders.Select(s => new FeedItem - { - UserName = s.WorkOrder.Member.UserName, - Name = s.WorkOrder.Member.ToString(), - ImageName = s.WorkOrder.Member.GetAvatarString(), - TimeSince = (nowUtc - s.ChangedOn).ToUserFriendlyString(), - OccurredOn = s.ChangedOn, - DisplayText = s.WorkOrder.Title + " work order submitted", - Link = $"/house/workorders/view?id={s.WorkOrderId}", - Symbol = "fa-wrench" - })); - - return Ok(model.OrderByDescending(i => i.OccurredOn).Skip(page * pageLength).Take(pageLength).ToList()); - } - } -} diff --git a/src/Dsp.Web/Api/Models/MealItemVoteApiModel.cs b/src/Dsp.Web/Api/Models/MealItemVoteApiModel.cs deleted file mode 100644 index 8f81de15..00000000 --- a/src/Dsp.Web/Api/Models/MealItemVoteApiModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Dsp.Web.Api.Models -{ - public class MealItemVoteApiModel - { - public int MealItemId { get; set; } - public bool IsUpvote { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Api/ServiceController.cs b/src/Dsp.Web/Api/ServiceController.cs deleted file mode 100644 index a94824e1..00000000 --- a/src/Dsp.Web/Api/ServiceController.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace Dsp.Web.Api -{ - using Data; - using Services; - using Services.Interfaces; - using System; - using System.Threading.Tasks; - using System.Web.Http; - - [Authorize] - [RoutePrefix("api/service")] - public class ServiceController : ApiController - { - private SphinxDbContext _db; - private IServiceService _serviceService; - - public ServiceController() - { - _db = new SphinxDbContext(); - _serviceService = new ServiceService(_db); - } - - [AllowAnonymous] - [HttpGet, Route("hourstats")] - public async Task HourStats(int sid) - { - if (sid <= 0) return BadRequest("Based id value provided."); - try - { - var stats = await _serviceService.GetHourStatsBySemesterIdAsync(sid); - if (stats != null) - { - return Ok(stats); - } - - return Ok("No stats to report."); - } - catch (Exception) - { - return BadRequest("API request failed for an unknown reason. Contact your administrator."); - } - } - } -} diff --git a/src/Dsp.Web/Api/SobersController.cs b/src/Dsp.Web/Api/SobersController.cs deleted file mode 100644 index a38eb930..00000000 --- a/src/Dsp.Web/Api/SobersController.cs +++ /dev/null @@ -1,49 +0,0 @@ -namespace Dsp.Web.Api -{ - using Data; - using Services; - using Services.Interfaces; - using System; - using System.Linq; - using System.Threading.Tasks; - using System.Web.Http; - - [Authorize] - [RoutePrefix("api/sobers")] - public class SobersController : ApiController - { - private SphinxDbContext _db; - private ISoberService _soberService; - - public SobersController() - { - _db = new SphinxDbContext(); - _soberService = new SoberService(_db); - } - - [AllowAnonymous] - [HttpGet, Route("upcoming")] - public async Task Upcoming() - { - try - { - var upcomingSobers = await _soberService.GetUpcomingSignupsAsync(); - if (upcomingSobers.Any()) - { - return Ok(upcomingSobers.Select(m => new - { - name = m.Member?.ToShortLastNameString() ?? "", - when = m.DateOfShift, - phone = m.Member?.PhoneNumbers.SingleOrDefault(e => e.Type == "Mobile")?.Number ?? "" - })); - } - - return Ok("No upcoming sober members were found."); - } - catch (Exception) - { - return BadRequest("API request failed for an unknown reason. Contact your administrator."); - } - } - } -} diff --git a/src/Dsp.Web/Api/TreasuryController.cs b/src/Dsp.Web/Api/TreasuryController.cs deleted file mode 100644 index 5439afac..00000000 --- a/src/Dsp.Web/Api/TreasuryController.cs +++ /dev/null @@ -1,45 +0,0 @@ -namespace Dsp.Web.Api -{ - using Data; - using Services; - using Services.Interfaces; - using System; - using System.Threading.Tasks; - using System.Web.Http; - - [Authorize] - [RoutePrefix("api/treasury")] - public class TreasuryController : ApiController - { - private SphinxDbContext _db; - private ITreasuryService _treasuryService; - - public TreasuryController() - { - _db = new SphinxDbContext(); - _treasuryService = new TreasuryService(_db); - } - - [AllowAnonymous] - [HttpGet, Route("fundraisers/{fid:int}")] - public async Task Fundraisers(int fid) - { - var fundraiser = await _treasuryService.GetFundraiserByIdAsync(fid); - if (fundraiser == null || !fundraiser.IsPublic) return NotFound(); - - try - { - return Ok(new - { - Id = fundraiser.Id, - Description = fundraiser.Description, - DonationInstructions = fundraiser.DonationInstructions - }); - } - catch (Exception) - { - return BadRequest("Roster acquisition failed."); - } - } - } -} diff --git a/src/Dsp.Web/App_Start/BundleConfig.cs b/src/Dsp.Web/App_Start/BundleConfig.cs deleted file mode 100644 index 2276933d..00000000 --- a/src/Dsp.Web/App_Start/BundleConfig.cs +++ /dev/null @@ -1,66 +0,0 @@ -namespace Dsp.Web -{ - using System.Web.Optimization; - - public class BundleConfig - { - public static void RegisterBundles(BundleCollection bundles) - { - // Styles - bundles.Add(new StyleBundle("~/content/open-sans") - .Include("~/Content/OpenSans.css")); - bundles.Add(new StyleBundle("~/content/bootstrap-core") - .Include("~/Content/bootstrap.css") - .Include("~/Content/bootstrap-select.css")); - bundles.Add(new StyleBundle("~/content/custom-css") - .Include("~/Content/Site.css")); - bundles.Add(new StyleBundle("~/content/font-awesome") - .Include("~/Content/font-awesome.css")); - - bundles.Add(new StyleBundle("~/content/datepicker") - .Include("~/Content/datepicker.css")); - bundles.Add(new StyleBundle("~/content/datetimepicker") - .Include("~/Content/bootstrap-datetimepicker-build.css")); - bundles.Add(new StyleBundle("~/content/multi-select") - .Include("~/Content/multi-select.css")); - bundles.Add(new StyleBundle("~/content/markdown") - .Include("~/Content/wmd.css")); - - // Scripts - bundles.Add(new ScriptBundle("~/bundles/clipboard").Include( - "~/bower_components/clipboard/dist/clipboard.js" - )); - bundles.Add(new ScriptBundle("~/bundles/charts").Include( - "~/bower_components/chart.js/dist/Chart.js" - )); - - bundles.Add(new ScriptBundle("~/bundles/bootstrap-core") - .Include("~/Scripts/bootstrap.js") - .Include("~/Scripts/bootstrap-select.js")); - bundles.Add(new ScriptBundle("~/bundles/moment") - .Include("~/Scripts/moment.js")); - bundles.Add(new ScriptBundle("~/bundles/mustache") - .Include("~/Scripts/mustache.js")); - bundles.Add(new ScriptBundle("~/bundles/jquery") - .Include("~/Scripts/jquery-{version}.js") - .Include("~/Scripts/jquery-ui-{version}.js") - .Include("~/Scripts/jquery.unobtrusive*") - .Include("~/Scripts/jquery.validate*")); - - bundles.Add(new ScriptBundle("~/bundles/datepicker") - .Include("~/Scripts/bootstrap-datepicker.js")); - bundles.Add(new ScriptBundle("~/bundles/datetimepicker") - .Include("~/Scripts/moment.js") - .Include("~/Scripts/bootstrap-datetimepicker.js")); - bundles.Add(new ScriptBundle("~/bundles/markdown") - .Include("~/Scripts/pagedown/Markdown.Converter.js") - .Include("~/Scripts/pagedown/Markdown.Sanitizer.js") - .Include("~/Scripts/pagedown/Markdown.Editor.js")); - bundles.Add(new ScriptBundle("~/bundles/multi-select") - .Include("~/Scripts/jquery.multi-select.js") - .Include("~/Scripts/jquery.quicksearch.js")); - - BundleTable.EnableOptimizations = true; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/App_Start/FilterConfig.cs b/src/Dsp.Web/App_Start/FilterConfig.cs deleted file mode 100644 index 2805694f..00000000 --- a/src/Dsp.Web/App_Start/FilterConfig.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Dsp.Web -{ - using System.Web.Mvc; - - public class FilterConfig - { - public static void RegisterGlobalFilters(GlobalFilterCollection filters) - { - filters.Add(new HandleErrorAttribute()); - filters.Add(new RequireHttpsAttribute()); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/App_Start/HtmlHelpers.cs b/src/Dsp.Web/App_Start/HtmlHelpers.cs deleted file mode 100644 index 0ba216bc..00000000 --- a/src/Dsp.Web/App_Start/HtmlHelpers.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Dsp.Web -{ - using System; - using System.Web; - using System.Web.Mvc; - - public static class HtmlHelpers - { - public static MvcHtmlString EmbedCss(this HtmlHelper htmlHelper, string path) - { - // take a path that starts with "~" and map it to the filesystem. - var cssFilePath = HttpContext.Current.Server.MapPath(path); - // load the contents of that file - try - { - var cssText = System.IO.File.ReadAllText(cssFilePath); - var styleElement = new TagBuilder("style"); - styleElement.SetInnerText(cssText); - return MvcHtmlString.Create(styleElement.ToString()); - } - catch (Exception e) - { - Elmah.ErrorSignal.FromCurrentContext().Raise(e); - // return nothing if we can't read the file for any reason - return null; - } - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/App_Start/IdentityConfig.cs b/src/Dsp.Web/App_Start/IdentityConfig.cs deleted file mode 100644 index 5a1034cb..00000000 --- a/src/Dsp.Web/App_Start/IdentityConfig.cs +++ /dev/null @@ -1,92 +0,0 @@ -namespace Dsp.Web -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Extensions; - using Microsoft.AspNet.Identity; - using Microsoft.AspNet.Identity.Owin; - using Microsoft.Owin; - using Microsoft.Owin.Security; - using System; - using System.Security.Claims; - using System.Threading.Tasks; - - public class ApplicationUserManager : UserManager - { - public ApplicationUserManager(IUserStore store) - : base(store) - { - } - - public static ApplicationUserManager Create(IdentityFactoryOptions options, IOwinContext context) - { - var manager = new ApplicationUserManager(new SphinxUserStore(context.Get())); - - // Configure validation logic for usernames - manager.UserValidator = new UserValidator(manager) - { - AllowOnlyAlphanumericUserNames = true, - RequireUniqueEmail = true - }; - - // Configure validation logic for passwords - manager.PasswordValidator = new PasswordValidator - { - RequiredLength = 6, - RequireNonLetterOrDigit = false, - RequireDigit = false, - RequireLowercase = false, - RequireUppercase = false - }; - - // Configure user lockout defaults - manager.UserLockoutEnabledByDefault = true; - manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); - manager.MaxFailedAccessAttemptsBeforeLockout = 5; - - // Configure email message service - manager.EmailService = new EmailService(); - - // Data Protection Provider is required to generate tokens for account confirmation and password reset - var dataProtectionProvider = options.DataProtectionProvider; - if (dataProtectionProvider != null) - { - manager.UserTokenProvider = - new DataProtectorTokenProvider(dataProtectionProvider.Create("ASP.NET Identity")); - } - - return manager; - } - } - - // Configure the application sign-in manager which is used in this application. - public class ApplicationSignInManager : SignInManager - { - public ApplicationSignInManager(ApplicationUserManager userManager, IAuthenticationManager authenticationManager) - : base(userManager, authenticationManager) - { - } - - public override Task CreateUserIdentityAsync(Member user) - { - return user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager); - } - - public static ApplicationSignInManager Create(IdentityFactoryOptions options, IOwinContext context) - { - return new ApplicationSignInManager(context.GetUserManager(), context.Authentication); - } - } - - public class ApplicationRoleManager : RoleManager - { - public ApplicationRoleManager(IRoleStore roleStore) - : base(roleStore) - { - } - public static ApplicationRoleManager Create(IdentityFactoryOptions options, IOwinContext context) - { - return new ApplicationRoleManager(new SphinxRoleStore(context.Get())); - } - } -} diff --git a/src/Dsp.Web/App_Start/RouteConfig.cs b/src/Dsp.Web/App_Start/RouteConfig.cs deleted file mode 100644 index d9b0b5e0..00000000 --- a/src/Dsp.Web/App_Start/RouteConfig.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace Dsp.Web -{ - using System.Web.Mvc; - using System.Web.Routing; - - public class RouteConfig - { - public static void RegisterRoutes(RouteCollection routes) - { - routes.IgnoreRoute("robots.txt"); - routes.IgnoreRoute("sitemap.xml"); - routes.IgnoreRoute("Error/403.html"); - routes.IgnoreRoute("Error/404.13.html"); - routes.IgnoreRoute("Error/404.html"); - routes.IgnoreRoute("Error/500.html"); - routes.LowercaseUrls = true; - - routes.MapRoute( - "Errors", - "Error/{action}", - new { controller = "Error" } - ); - - routes.MapRoute( - "Root", - "{action}/{id}", - new { controller = "Home", id = UrlParameter.Optional }, - new [] { "Dsp.Web.Controllers" } - ); - - routes.MapRoute( - "Default", - "{controller}/{action}/{id}", - new { controller = "Home", action = "Index", id = UrlParameter.Optional }, - new [] { "Dsp.Web.Controllers" } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/App_Start/Startup.Auth.cs b/src/Dsp.Web/App_Start/Startup.Auth.cs deleted file mode 100644 index 65efdd50..00000000 --- a/src/Dsp.Web/App_Start/Startup.Auth.cs +++ /dev/null @@ -1,52 +0,0 @@ -namespace Dsp.Web -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Microsoft.AspNet.Identity; - using Microsoft.AspNet.Identity.Owin; - using Microsoft.Owin; - using Microsoft.Owin.Security.Cookies; - using Owin; - using System; -#if !DEBUG - using System.Web.Configuration; -#endif - - public partial class Startup - { - // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 - public void ConfigureAuth(IAppBuilder app) - { - // Configure the db context, user manager and signin manager to use a single instance per request - app.CreatePerOwinContext(SphinxDbContext.Create); - app.CreatePerOwinContext(ApplicationUserManager.Create); - app.CreatePerOwinContext(ApplicationSignInManager.Create); - app.CreatePerOwinContext(ApplicationRoleManager.Create); - - // Enable the application to use a cookie to store information for the signed in user - // and to use a cookie to temporarily store information about a user logging in with a third party login provider - // Configure the sign in cookie - app.UseCookieAuthentication(new CookieAuthenticationOptions - { - AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, - LoginPath = new PathString("/Members/Account/SignIn"), - Provider = new CookieAuthenticationProvider - { - // Enables the application to validate the security stamp when the user logs in. - // This is a security feature which is used when you change a password or add an external login to your account. - OnValidateIdentity = SecurityStampValidator.OnValidateIdentity( - validateInterval: TimeSpan.FromMinutes(30), - regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager), - getUserIdCallback: (id) => (id.GetUserId())) - } - }); - app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); - -#if !DEBUG - app.UseGoogleAuthentication( - clientId: WebConfigurationManager.AppSettings["google-auth-client-id"], - clientSecret: WebConfigurationManager.AppSettings["google-auth-client-secret"]); -#endif - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/App_Start/WebApiConfig.cs b/src/Dsp.Web/App_Start/WebApiConfig.cs deleted file mode 100644 index 0d938a07..00000000 --- a/src/Dsp.Web/App_Start/WebApiConfig.cs +++ /dev/null @@ -1,43 +0,0 @@ -namespace Dsp.Web -{ - using System.Net.Http.Headers; - using System.Web.Http; -#if !DEBUG - using WebApiThrottle; -#endif - - public static class WebApiConfig - { - public static void Register(HttpConfiguration config) - { - config.MapHttpAttributeRoutes(); - - config.Routes.MapHttpRoute( - name: "DefaultApi", - routeTemplate: "api/{controller}/{id}", - defaults: new { id = RouteParameter.Optional } - ); - -#if !DEBUG - config.MessageHandlers.Add(new ThrottlingHandler() - { - // Generic rate limit applied to ALL APIs - Policy = new ThrottlePolicy(perSecond: 3, perMinute: 20, perHour: 200) - { - IpThrottling = true, - ClientThrottling = true, - EndpointThrottling = true - }, - Repository = new MemoryCacheRepository() - }); -#endif - - // WebAPI when dealing with JSON & JavaScript! - // Setup json serialization to serialize classes to camel (std. Json format) - var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; - formatter.SerializerSettings.ContractResolver = - new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); - config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Admin/AdminAreaRegistration.cs b/src/Dsp.Web/Areas/Admin/AdminAreaRegistration.cs deleted file mode 100644 index ab97cccd..00000000 --- a/src/Dsp.Web/Areas/Admin/AdminAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Admin -{ - public class AdminAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Admin"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Admin_default", - "Admin/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Admin/Controllers/PositionsController.cs b/src/Dsp.Web/Areas/Admin/Controllers/PositionsController.cs deleted file mode 100644 index 4684aacf..00000000 --- a/src/Dsp.Web/Areas/Admin/Controllers/PositionsController.cs +++ /dev/null @@ -1,182 +0,0 @@ -namespace Dsp.Web.Areas.Admin.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Models; - using System; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, President")] - public class PositionsController : BaseController - { - private IPositionService _positionService; - private ISemesterService _semesterService; - - public PositionsController() - { - _positionService = new PositionService(new Repository(_db)); - _semesterService = new SemesterService(new Repository(_db)); - } - - public PositionsController(IPositionService positionService, ISemesterService semesterService) - { - _positionService = positionService; - _semesterService = semesterService; - } - - public async Task Index() - { - try - { - var model = await _positionService.GetAllPositionsAsync(); - return View(model); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - public async Task Details(int id) - { - try - { - var position = await _positionService.GetPositionByIdAsync((int)id); - return View(position); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(Position position) - { - if (!ModelState.IsValid) return View(position); - if (string.IsNullOrEmpty(position.Name)) - { - ViewBag.FailureMessage = "The Name field is required."; - return View(position); - } - - try - { - await _positionService.CreatePositionAsync(position); - return RedirectToAction("Index"); - } - catch (ArgumentException ex) - { - ViewBag.FailureMessage = ex.Message; - return View(position); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - public async Task Edit(int id) - { - try - { - var position = await _positionService.GetPositionByIdAsync(id); - return View(position); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(Position position) - { - if (!ModelState.IsValid) return View(position); - - try - { - await _positionService.UpdatePositionAsync(position); - return RedirectToAction("Index"); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - public async Task Delete(int id) - { - try - { - var position = await _positionService.GetPositionByIdAsync(id); - return View(position); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - try - { - await _positionService.RemovePositionByIdAsync(id); - return RedirectToAction("Index"); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - [HttpGet, Authorize(Roles = "Administrator, President")] - public async Task Appointments(int? sid = null) - { - try - { - Semester semester; - int semesterId; - if (sid == null) - { - semester = await _semesterService.GetCurrentSemesterAsync(); - semesterId = semester.Id; - } - else - { - semesterId = (int)sid; - semester = await _semesterService.GetSemesterByIdAsync(semesterId); - } - var positions = await _positionService.GetAppointmentsAsync(semesterId); - var semesters = await _semesterService.GetCurrentAndNextSemesterAsync(); - - var model = new AppointmentModel - { - Semester = semester, - Positions = positions, - SemesterList = base.GetSemesterSelectList(semesters) - }; - - return View(model); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - - } - } -} diff --git a/src/Dsp.Web/Areas/Admin/Controllers/SemestersController.cs b/src/Dsp.Web/Areas/Admin/Controllers/SemestersController.cs deleted file mode 100644 index 5295714f..00000000 --- a/src/Dsp.Web/Areas/Admin/Controllers/SemestersController.cs +++ /dev/null @@ -1,186 +0,0 @@ -namespace Dsp.Web.Areas.Admin.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Models; - using System; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, President, Secretary, Academics, Service, Director of Recruitment")] - public class SemestersController : BaseController - { - private ISemesterService _semesterService; - - public SemestersController() - { - _semesterService = new SemesterService(new Repository(_db)); - } - - public SemestersController(ISemesterService semesterService) - { - _semesterService = semesterService; - } - - [HttpGet] - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - var model = await _semesterService.GetAllSemestersAsync(); - return View(model); - } - - [HttpGet] - public async Task Create() - { - var latestSemester = await _semesterService.GetFutureMostSemesterAsync(); - - var model = new CreateSemesterModel - { - GreekAlphabet = _semesterService.Alphabet, - Semester = _semesterService.GetEstimatedNextSemester(latestSemester), - PledgeClass = _semesterService.GetEstimatedNextPledgeClass(latestSemester) - }; - - return View(model); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task Create(CreateSemesterModel model) - { - if (!ModelState.IsValid) return View(model); - - try - { - // Validate Pledge Class Name - model.PledgeClass.PledgeClassName = base.ToTitleCaseString(model.PledgeClass.PledgeClassName); - var nameParts = model.PledgeClass.PledgeClassName.Split(' '); - foreach (var n in nameParts) - { - if (!_semesterService.Alphabet.Contains(n)) - { - TempData["FailureMessage"] = "The pledge class name you entered is not valid. " + - "Please verify the spelling of each part and try again."; - return View(model); - } - } - - // Add the semester first because we need its Id for the pledge class. - model.Semester.DateStart = base.ConvertCstToUtc(model.Semester.DateStart); - model.Semester.DateEnd = base.ConvertCstToUtc(model.Semester.DateEnd); - model.Semester.TransitionDate = base.ConvertCstToUtc(model.Semester.TransitionDate); - await _semesterService.CreateSemesterAsync(model.Semester); - } - catch - { - TempData["FailureMessage"] = "Something went wrong when trying to add the semester. " + - "Contact your administrator."; - return View(model); - } - try - { - // Add the pledge class to the newly added semester. - if (model.PledgeClass.InitiationDate != null) - { - model.PledgeClass.InitiationDate = base.ConvertCstToUtc((DateTime)model.PledgeClass.InitiationDate); - } - if (model.PledgeClass.PinningDate != null) - { - model.PledgeClass.PinningDate = base.ConvertCstToUtc((DateTime)model.PledgeClass.PinningDate); - } - model.PledgeClass.SemesterId = model.Semester.Id; - await _semesterService.CreatePledgeClassAsync(model.PledgeClass); - } - catch - { - TempData["FailureMessage"] = "The semester was added but something went wrong when trying to add the semester. " + - "Contact your administrator."; - return View(model); - } - - TempData["SuccessMessage"] = $"{model.Semester.ToString()} semester added!"; - return RedirectToAction("Index"); - } - - [HttpGet] - public async Task Edit(int id) - { - if (id < 1) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var semester = await _semesterService.GetSemesterByIdAsync(id); - if (semester == null) - { - return HttpNotFound(); - } - semester.DateStart = base.ConvertUtcToCst(semester.DateStart); - semester.DateEnd = base.ConvertUtcToCst(semester.DateEnd); - semester.TransitionDate = base.ConvertUtcToCst(semester.TransitionDate); - return View(semester); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task Edit(Semester semester) - { - if (!ModelState.IsValid) return View(semester); - - semester.DateStart = base.ConvertCstToUtc(semester.DateStart); - semester.DateEnd = base.ConvertCstToUtc(semester.DateEnd); - semester.TransitionDate = base.ConvertCstToUtc(semester.TransitionDate); - - await _semesterService.UpdateSemesterAsync(semester); - - return RedirectToAction("Index"); - } - - [HttpGet] - [Authorize(Roles = "Administrator")] - public async Task Delete(int id) - { - if (id < 1) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var semester = await _semesterService.GetSemesterByIdAsync(id); - if (semester == null) - { - return HttpNotFound(); - } - if (semester.ClassesTaken.Any() || - semester.GraduatingMembers.Any() || - semester.Leaders.Any() || - semester.Rooms.Any() || - semester.ServiceEventAmendments.Any() || - semester.ServiceHourAmendments.Any()) - { - TempData["FailureMessage"] = "Can't delete this semester because related data exists and would also be deleted."; - return RedirectToAction("Index"); - } - return View(semester); - } - - [HttpPost, ActionName("Delete")] - [Authorize(Roles = "Administrator")] - [ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - if (id < 1) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - await _semesterService.DeleteSemesterAsync(id); - return RedirectToAction("Index"); - } - } -} diff --git a/src/Dsp.Web/Areas/Admin/Controllers/StatusesController.cs b/src/Dsp.Web/Areas/Admin/Controllers/StatusesController.cs deleted file mode 100644 index 18562909..00000000 --- a/src/Dsp.Web/Areas/Admin/Controllers/StatusesController.cs +++ /dev/null @@ -1,102 +0,0 @@ -namespace Dsp.Web.Areas.Admin.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator")] - public class StatusesController : BaseController - { - private IStatusService _statusService; - - public StatusesController() - { - _statusService = new StatusService(new Repository(_db)); - } - - public StatusesController(IStatusService statusService) - { - _statusService = statusService; - } - - [HttpGet] - public async Task Index() - { - return View(await _statusService.GetAllStatusesAsync()); - } - - [HttpGet] - public ActionResult Create() - { - return View(); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task Create(MemberStatus model) - { - if (!ModelState.IsValid) return View(model); - - await _statusService.CreateStatus(model); - - return RedirectToAction("Index"); - } - - [HttpGet] - public async Task Edit(int id) - { - if (id < 1) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var model = await _statusService.GetStatusByIdAsync(id); - if (model == null) - { - return HttpNotFound(); - } - return View(model); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task Edit(MemberStatus model) - { - if (!ModelState.IsValid) return View(model); - - await _statusService.UpdateStatus(model); - - return RedirectToAction("Index"); - } - - [HttpGet] - public async Task Delete(int id) - { - if (id < 1) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var model = await _statusService.GetStatusByIdAsync(id); - if (model == null) - { - return HttpNotFound(); - } - return View(model); - } - - [HttpPost] - [ActionName("Delete")] - [ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - await _statusService.DeleteStatus(id); - - return RedirectToAction("Index"); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Admin/Models/AppointmentModel.cs b/src/Dsp.Web/Areas/Admin/Models/AppointmentModel.cs deleted file mode 100644 index 6b4211eb..00000000 --- a/src/Dsp.Web/Areas/Admin/Models/AppointmentModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Dsp.Web.Areas.Admin.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class AppointmentModel - { - public Semester Semester { get; set; } - public IEnumerable SemesterList { get; set; } - public IEnumerable Positions { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Admin/Models/CreateSemesterModel.cs b/src/Dsp.Web/Areas/Admin/Models/CreateSemesterModel.cs deleted file mode 100644 index e5b4ed40..00000000 --- a/src/Dsp.Web/Areas/Admin/Models/CreateSemesterModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Dsp.Web.Areas.Admin.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class CreateSemesterModel - { - public IEnumerable GreekAlphabet { get; set; } - public Semester Semester { get; set; } - public PledgeClass PledgeClass { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Admin/Views/Positions/Create.cshtml b/src/Dsp.Web/Areas/Admin/Views/Positions/Create.cshtml deleted file mode 100644 index 62666165..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Positions/Create.cshtml +++ /dev/null @@ -1,88 +0,0 @@ -@model Dsp.Data.Entities.Position -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Position"; -} - -
- -
-
- @using (Html.BeginForm("Create", "Positions", FormMethod.Post, new { @class = "", role = "form" })) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Description, htmlAttributes: new {@class = "control-label"}) - @Html.EditorFor(model => model.Description, new {htmlAttributes = new {@class = "form-control", autocomplete = "off"}}) - @Html.ValidationMessageFor(model => model.Description, "", new {@class = "text-danger"}) -
- -
- @Html.LabelFor(model => model.Inquiries, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Inquiries, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Inquiries, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Type, htmlAttributes: new { @class = "control-label" }) - @Html.EnumDropDownListFor(model => model.Type, htmlAttributes: new { @class = "form-control" }) - @Html.ValidationMessageFor(model => model.Type, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.DisplayOrder, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.DisplayOrder, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.DisplayOrder, "", new { @class = "text-danger" }) -
- -
- -
- -
- -
- -
- -
- -
- -
-
-
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Positions/Delete.cshtml b/src/Dsp.Web/Areas/Admin/Views/Positions/Delete.cshtml deleted file mode 100644 index d7371e7f..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Positions/Delete.cshtml +++ /dev/null @@ -1,63 +0,0 @@ -@model Dsp.Data.Entities.Position -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Position"; -} - -
- -
-
-
-

Are you sure you want to delete this Position?

-
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
- -
@Html.DisplayNameFor(model => model.Description)
-
@Html.DisplayFor(model => model.Description)
- -
@Html.DisplayNameFor(model => model.Inquiries)
-
@Html.DisplayFor(model => model.Inquiries)
- -
@Html.DisplayNameFor(model => model.Type)
-
@Html.DisplayFor(model => model.Type)
- -
@Html.DisplayNameFor(model => model.IsExecutive)
-
@Html.DisplayFor(model => model.IsExecutive)
- -
@Html.DisplayNameFor(model => model.IsElected)
-
@Html.DisplayFor(model => model.IsElected)
- -
@Html.DisplayNameFor(model => model.IsDisabled)
-
@Html.DisplayFor(model => model.IsDisabled)
- -
@Html.DisplayNameFor(model => model.IsPublic)
-
@Html.DisplayFor(model => model.IsPublic)
- -
@Html.DisplayNameFor(model => model.DisplayOrder)
-
@Html.DisplayFor(model => model.DisplayOrder)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Positions/Details.cshtml b/src/Dsp.Web/Areas/Admin/Views/Positions/Details.cshtml deleted file mode 100644 index 9fcc11e1..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Positions/Details.cshtml +++ /dev/null @@ -1,56 +0,0 @@ -@model Dsp.Data.Entities.Position -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Position Details"; -} - -
- -
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
- -
@Html.DisplayNameFor(model => model.Description)
-
@Html.DisplayFor(model => model.Description)
- -
@Html.DisplayNameFor(model => model.Inquiries)
-
@Html.DisplayFor(model => model.Inquiries)
- -
@Html.DisplayNameFor(model => model.Type)
-
@Html.DisplayFor(model => model.Type)
- -
@Html.DisplayNameFor(model => model.IsExecutive)
-
@Html.DisplayFor(model => model.IsExecutive)
- -
@Html.DisplayNameFor(model => model.IsElected)
-
@Html.DisplayFor(model => model.IsElected)
- -
@Html.DisplayNameFor(model => model.DisplayOrder)
-
@Html.DisplayFor(model => model.DisplayOrder)
- -
@Html.DisplayNameFor(model => model.IsDisabled)
-
@Html.DisplayFor(model => model.IsDisabled)
- -
@Html.DisplayNameFor(model => model.IsPublic)
-
@Html.DisplayFor(model => model.IsPublic)
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Positions/Edit.cshtml b/src/Dsp.Web/Areas/Admin/Views/Positions/Edit.cshtml deleted file mode 100644 index 190b752d..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Positions/Edit.cshtml +++ /dev/null @@ -1,90 +0,0 @@ -@model Dsp.Data.Entities.Position -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Position"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.Id) - @Html.HiddenFor(model => model.CanBeRemoved) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Inquiries, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Inquiries, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Inquiries, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Type, htmlAttributes: new { @class = "control-label" }) - @Html.EnumDropDownListFor(model => model.Type, htmlAttributes: new { @class = "form-control" }) - @Html.ValidationMessageFor(model => model.Type, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.DisplayOrder, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.DisplayOrder, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.DisplayOrder, "", new { @class = "text-danger" }) -
- -
- -
- -
- -
- -
- -
- -
- -
-
- -
- } -
-
-
- diff --git a/src/Dsp.Web/Areas/Admin/Views/Positions/Index.cshtml b/src/Dsp.Web/Areas/Admin/Views/Positions/Index.cshtml deleted file mode 100644 index a1b644b9..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Positions/Index.cshtml +++ /dev/null @@ -1,66 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Positions"; -} - -
-
-
- -
-
-

- @Html.ActionLink("Create New", "Create", null, new { @class = "btn btn-sm btn-success" }) -

-
-
-
-
-
-
- - - - - - - - - - - - - - - - @foreach (var item in Model.Where(p => p.Name != "Administrator").OrderBy(p => p.Type).ThenBy(p => p.DisplayOrder)) - { - - - - - - - - - - - - } - -
OrderNameTypeExecElectedDisabledPublicAppointments
@Html.DisplayFor(modelItem => item.DisplayOrder)@Html.DisplayFor(modelItem => item.Name)@Html.DisplayFor(modelItem => item.Type)@Html.DisplayFor(modelItem => item.IsExecutive)@Html.DisplayFor(modelItem => item.IsElected)@Html.DisplayFor(modelItem => item.IsDisabled)@Html.DisplayFor(modelItem => item.IsPublic)@item.Leaders.Count() - @Html.ActionLink("Edit", "Edit", new { id = item.Id }) | - @Html.ActionLink("Details", "Details", new { id = item.Id }) - @if (!item.Leaders.Any()) - { - @:| - @Html.ActionLink("Delete", "Delete", new { id = item.Id }) - } -
-
- -
-
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Semesters/Create.cshtml b/src/Dsp.Web/Areas/Admin/Views/Semesters/Create.cshtml deleted file mode 100644 index 8fbd98b5..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Semesters/Create.cshtml +++ /dev/null @@ -1,150 +0,0 @@ -@model Dsp.Web.Areas.Admin.Models.CreateSemesterModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Semester"; -} -@Styles.Render("~/content/datetimepicker") - -
- -
-
- @using (Html.BeginForm("Create", "Semesters", FormMethod.Post, new { @class = "", role = "form" })) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -

Semester Information

- -
- @Html.LabelFor(model => model.Semester.DateStart, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.Semester.DateStart, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.Semester.DateStart, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Semester.DateEnd, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.Semester.DateEnd, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.Semester.DateEnd, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Semester.TransitionDate, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.Semester.TransitionDate, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.Semester.TransitionDate, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Semester.MinimumServiceHours, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Semester.MinimumServiceHours, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Semester.MinimumServiceHours, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Semester.MinimumServiceEvents, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Semester.MinimumServiceEvents, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Semester.MinimumServiceEvents, "", new { @class = "text-danger" }) -
- -

Pledge Class Information

- -
- @Html.LabelFor(model => model.PledgeClass.PledgeClassName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.PledgeClass.PledgeClassName, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.PledgeClass.PledgeClassName, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.PledgeClass.PinningDate, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.PledgeClass.PinningDate, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.PledgeClass.PinningDate, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.PledgeClass.InitiationDate, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.PledgeClass.InitiationDate, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.PledgeClass.InitiationDate, "", new { @class = "text-danger" }) -
- -

Recruitment Information

- -
- @Html.LabelFor(m => m.Semester.RecruitmentBookUrl, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(m => m.Semester.RecruitmentBookUrl, new { htmlAttributes = new { @class = "form-control", autocomplete = "off", placeholder = "USE A URL TO A PDF IN GOOGLE DRIVE!!!" } }) - @Html.ValidationMessageFor(m => m.Semester.RecruitmentBookUrl, "", new { @class = "text-danger" }) -

USE A URL TO A PDF IN GOOGLE DRIVE!!!

-
- -
- -
- } -
-
-
-

-

Greek Alphabet

-
    - @foreach (var l in Model.GreekAlphabet) - { -
  • @l
  • - } -
-

-
-
-
- - -@Scripts.Render("~/bundles/datetimepicker") -@section scripts -{ - -} diff --git a/src/Dsp.Web/Areas/Admin/Views/Semesters/Delete.cshtml b/src/Dsp.Web/Areas/Admin/Views/Semesters/Delete.cshtml deleted file mode 100644 index e54bcb2d..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Semesters/Delete.cshtml +++ /dev/null @@ -1,39 +0,0 @@ -@model Dsp.Data.Entities.Semester -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Semester"; -} - -
- -
-
-

Are you sure you want to delete this?

- -
-

@Model.ToString()

-
- @Html.DisplayFor(model => model.DateStart) to - @Html.DisplayFor(model => model.DateEnd) -
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Semesters/Edit.cshtml b/src/Dsp.Web/Areas/Admin/Views/Semesters/Edit.cshtml deleted file mode 100644 index 18a9d443..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Semesters/Edit.cshtml +++ /dev/null @@ -1,107 +0,0 @@ -@model Dsp.Data.Entities.Semester -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Semester"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
-

@Model.ToString() Semester

- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.Id) - -
- @Html.LabelFor(m => m.DateStart, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.DateStart, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(m => m.DateStart, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(m => m.DateEnd, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.DateEnd, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(m => m.DateEnd, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(m => m.TransitionDate, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.TransitionDate, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(m => m.TransitionDate, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(m => m.MinimumServiceHours, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(m => m.MinimumServiceHours, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(m => m.MinimumServiceHours, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(m => m.MinimumServiceEvents, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(m => m.MinimumServiceEvents, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(m => m.MinimumServiceEvents, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(m => m.RecruitmentBookUrl, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(m => m.RecruitmentBookUrl, new { htmlAttributes = new { @class = "form-control", autocomplete = "off", placeholder = "USE A URL TO A PDF IN GOOGLE DRIVE!!!" } }) - @Html.ValidationMessageFor(m => m.RecruitmentBookUrl, "", new { @class = "text-danger" }) -

USE A URL TO A PDF IN GOOGLE DRIVE!!!

-
- -
- -
- } -
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Admin/Views/Semesters/Index.cshtml b/src/Dsp.Web/Areas/Admin/Views/Semesters/Index.cshtml deleted file mode 100644 index d0f70e5e..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Semesters/Index.cshtml +++ /dev/null @@ -1,101 +0,0 @@ -@using Dsp.Web.Areas.Admin.Models -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Semesters"; -} - -
-
-
- -
-
-

- Add Semester -

-
-
-
-
-
-
- - - - - - - - - - - - - - - @foreach (var item in Model) - { - - - - - - - - - - - - } -
SemesterPledge Class(es)@Html.DisplayNameFor(model => model.DateStart)@Html.DisplayNameFor(model => model.DateEnd) - @Html.DisplayNameFor(model => model.TransitionDate) - - - - - - Hours - - - - Events - - - Recruitment Book -
@item.ToString() - @foreach (var pledgeClass in item.PledgeClasses) - { - if (item.PledgeClasses.ToList().IndexOf(pledgeClass) > 0) - { - @:| - } - - @pledgeClass.PledgeClassName - } - @item.DateStart.ToString("MM/dd/yyyy")@item.DateEnd.ToString("MM/dd/yyyy")@item.TransitionDate.ToString("MM/dd/yyyy")@item.MinimumServiceHours@item.MinimumServiceEvents - @if(string.IsNullOrEmpty(item.RecruitmentBookUrl)) - { - None - } - else - { - We good! - } - - @Html.ActionLink("Edit", "Edit", new { id = item.Id }) - @if (User.IsInRole("Administrator")) - { - @:| - @Html.ActionLink("Delete", "Delete", new { id = item.Id }) - } -
-
- -
-
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Statuses/Create.cshtml b/src/Dsp.Web/Areas/Admin/Views/Statuses/Create.cshtml deleted file mode 100644 index 61b45168..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Statuses/Create.cshtml +++ /dev/null @@ -1,35 +0,0 @@ -@model Dsp.Data.Entities.MemberStatus -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Status"; -} - -
- -
-
- @using (Html.BeginForm("Create", "Statuses", FormMethod.Post, new { @class = "", role = "form" })) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.StatusName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.StatusName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.StatusName, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Statuses/Delete.cshtml b/src/Dsp.Web/Areas/Admin/Views/Statuses/Delete.cshtml deleted file mode 100644 index 098e1492..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Statuses/Delete.cshtml +++ /dev/null @@ -1,39 +0,0 @@ -@model Dsp.Data.Entities.MemberStatus -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Status"; -} - -
- -
-
-
-

Are you sure you want to delete this Status?

-
-
-
-
@Html.DisplayNameFor(model => model.StatusName)
-
@Html.DisplayFor(model => model.StatusName)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/Statuses/Edit.cshtml b/src/Dsp.Web/Areas/Admin/Views/Statuses/Edit.cshtml deleted file mode 100644 index 830d0300..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Statuses/Edit.cshtml +++ /dev/null @@ -1,38 +0,0 @@ -@model Dsp.Data.Entities.MemberStatus -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Status"; -} - -
- -
-
-

Change Status Name From @Model.StatusName to

- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.StatusId) - -
- @Html.EditorFor(model => model.StatusName, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.StatusName, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
- diff --git a/src/Dsp.Web/Areas/Admin/Views/Statuses/Index.cshtml b/src/Dsp.Web/Areas/Admin/Views/Statuses/Index.cshtml deleted file mode 100644 index 6ee766a9..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/Statuses/Index.cshtml +++ /dev/null @@ -1,51 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Member Statuses"; -} - -
-
-
- -
-
-

- @Html.ActionLink("Create New", "Create", null, new { @class = "btn btn-sm btn-success" }) -

-
-
-
-
-
-
- - - - - - - - - @foreach (var item in Model) - { - - - - - - } -
NameCount
@item.StatusName@item.Members.Count - @Html.ActionLink("Edit", "Edit", new { id = item.StatusId }) - @if (!item.Members.Any()) - { - @:| - @Html.ActionLink("Delete", "Delete", new { id = item.StatusId }) - } -
-
- -
-
-
-
diff --git a/src/Dsp.Web/Areas/Admin/Views/web.config b/src/Dsp.Web/Areas/Admin/Views/web.config deleted file mode 100644 index 0a5a7def..00000000 --- a/src/Dsp.Web/Areas/Admin/Views/web.config +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/AlumniAreaRegistration.cs b/src/Dsp.Web/Areas/Alumni/AlumniAreaRegistration.cs deleted file mode 100644 index ea669102..00000000 --- a/src/Dsp.Web/Areas/Alumni/AlumniAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Alumni -{ - public class AlumniAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Alumni"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Alumni_default", - "Alumni/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Controllers/AcbController.cs b/src/Dsp.Web/Areas/Alumni/Controllers/AcbController.cs deleted file mode 100644 index f1a56229..00000000 --- a/src/Dsp.Web/Areas/Alumni/Controllers/AcbController.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Dsp.Web.Areas.Alumni.Controllers -{ - using Dsp.Web.Controllers; - using System.Web.Mvc; - - [AllowAnonymous] - public class AcbController : BaseController - { - public ActionResult Index() - { - return View(); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Controllers/ConnectController.cs b/src/Dsp.Web/Areas/Alumni/Controllers/ConnectController.cs deleted file mode 100644 index 12e6d5ef..00000000 --- a/src/Dsp.Web/Areas/Alumni/Controllers/ConnectController.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Dsp.Web.Areas.Alumni.Controllers -{ - using Dsp.Web.Controllers; - using System.Web.Mvc; - - [AllowAnonymous] - public class ConnectController : BaseController - { - public ActionResult Index() - { - return View(); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Controllers/HomeController.cs b/src/Dsp.Web/Areas/Alumni/Controllers/HomeController.cs deleted file mode 100644 index aca6a1f1..00000000 --- a/src/Dsp.Web/Areas/Alumni/Controllers/HomeController.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Dsp.Web.Areas.Alumni.Controllers -{ - using Dsp.Web.Controllers; - using System.Web.Mvc; - - [AllowAnonymous] - public class HomeController : BaseController - { - public ActionResult Index() - { - return View(); - } - - public ActionResult Acb() - { - return View(); - } - - public ActionResult Connect() - { - return View(); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Controllers/LeadersController.cs b/src/Dsp.Web/Areas/Alumni/Controllers/LeadersController.cs deleted file mode 100644 index 00bcb67d..00000000 --- a/src/Dsp.Web/Areas/Alumni/Controllers/LeadersController.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Dsp.Web.Areas.Alumni.Controllers -{ - using Dsp.Data.Entities; - using Dsp.Web.Controllers; - using System.Data.Entity; - using System.Linq; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public class LeadersController : BaseController - { - [HttpGet] - public async Task Index() - { - var currentSemester = await GetThisSemesterAsync(); - - if (currentSemester == null) return View(); - - var model = await _db.Leaders - .Where(l => - l.SemesterId == currentSemester.Id && - l.Position.Type == Position.PositionType.Alumni) - .ToListAsync(); - - return View(model); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Views/Acb/Index.cshtml b/src/Dsp.Web/Areas/Alumni/Views/Acb/Index.cshtml deleted file mode 100644 index 3d491e54..00000000 --- a/src/Dsp.Web/Areas/Alumni/Views/Acb/Index.cshtml +++ /dev/null @@ -1,67 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Alumni Corporation Board"; - var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - var nowCst = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cstZone); -} -@section Title -{ - @Html.Partial("_TitleExternal") -} -@section AdditionalMeta{ - -} - -
-
-
- -
-
-
-
-

- The Alumni Corporation Board has met formally each month since May 2008 and started during the re-colonization of the chapter in 2006. - Most meetings are conference calls with the exceptions of Homecoming and St. Pats where meetings take place at the chapter house. -

-
-
- -
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Views/Connect/Index.cshtml b/src/Dsp.Web/Areas/Alumni/Views/Connect/Index.cshtml deleted file mode 100644 index 54a941b1..00000000 --- a/src/Dsp.Web/Areas/Alumni/Views/Connect/Index.cshtml +++ /dev/null @@ -1,121 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Alumni Connect"; - var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - var nowCst = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cstZone); -} -@section Title -{ - @Html.Partial("_TitleExternal") -} -@section AdditionalMeta{ - -} - -
-
-
- -
-
-
-
-

- Events and Volunteering -

-
-
-
-
-
- -

Events

-

- -

-
-
- Here you can find a list of past and future fraternity events that you are encouraged to join. -
-
-
-
-
- -

Volunteer

-

- -

-
-
- We need brothers to help us with both alumni and undergraduate member matters. - The possibilities for giving back vary greatly in time commitment, and in many case,s you do not even have to travel to Rolla. - For more info contact ACB President Glenn Hay at: gthay@design9.com. -
-
-
-
-
-
-

- Help Us Improve Our Records -

-
-
-
-
-
- -

Update Your Contact Info

-

- -

-
-
- Providing your contact information will subscribe you to alumni and chapter news, - as well as help us have a complete record of our past members. -
-
-
-
-
- -

Help Us Find Missing Brothers

-

- -

-
-
- We do not have information about all of our past brothers. - We are still looking for the contact information of the brothers on - this list. - If you have information about someone we are missing, please click the question mark above and provide their information. - Alternatively, you could contact them yourself and ask them to provide their own information here on our website. -
-
-
-
-
- -

Report Bond Eternal Alumni

-

- -

-
-
- This link will take you to a list of brothers who have passed into the Bond Eternal. - When you hear of the loss of a brother, please email us at: - delta.epsilon.acb@gmail.com -
-
-
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Views/Home/index.cshtml b/src/Dsp.Web/Areas/Alumni/Views/Home/index.cshtml deleted file mode 100644 index ae957679..00000000 --- a/src/Dsp.Web/Areas/Alumni/Views/Home/index.cshtml +++ /dev/null @@ -1,70 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Welcome Alumni!"; - var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - var nowCst = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cstZone); -} -@section Title -{ - @Html.Partial("_TitleExternal") -} -@section AdditionalMeta{ - -} - -
-
-
- -
-
-
-
-

- This portion of our website is dedicated to keeping the 700 Alumni of Delta Sigma Phi at MST/UMR/MSM connected.
- Here you can update your contact info and learn about Alumni and Chapter news, issues, and events. -

-
-
-
-
-
- -

Connect

-

- -

-
-
Update your contact info
-
View upcoming events
-
-
-
-
- -

Alumni Corporation Board

-

- -

-
-
Contact leadership
-
Attend meetings
-
-
- @*
-
- -

Chapter History

-

- -

-
-
- Learn what's been happening -
-
-
*@ -
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Views/Leaders/Index.cshtml b/src/Dsp.Web/Areas/Alumni/Views/Leaders/Index.cshtml deleted file mode 100644 index 59d9982a..00000000 --- a/src/Dsp.Web/Areas/Alumni/Views/Leaders/Index.cshtml +++ /dev/null @@ -1,56 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Alumni Leaders"; -} - -
-
-
- @if (Model.Any(l => l.Position.IsPublic)) - { -

- @(Model.First().Semester.DateStart.Month < 6 ? "Spring" : "Fall") - @Model.First().Semester.DateStart.Year - Semester -

- -
-
-
- - - - - - - - - - - @foreach (var leader in Model.OrderBy(l => l.Position.DisplayOrder)) - { - - - - - - - } - -
PositionContact NameEmailMobile Phone
@leader.Position.Name@leader.Member.FirstName @leader.Member.LastName@leader.Member.Email@leader.Member.PhoneNumbers.Single(p => p.Type == "Mobile").Number
-
-
-
- } - else - { -
-

- Contact information will be available as soon as appointments are made.
-

-
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Alumni/Views/web.config b/src/Dsp.Web/Areas/Alumni/Views/web.config deleted file mode 100644 index 0a5a7def..00000000 --- a/src/Dsp.Web/Areas/Alumni/Views/web.config +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Controllers/ClassesController.cs b/src/Dsp.Web/Areas/Edu/Controllers/ClassesController.cs deleted file mode 100644 index b99de8a9..00000000 --- a/src/Dsp.Web/Areas/Edu/Controllers/ClassesController.cs +++ /dev/null @@ -1,382 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Collections.Generic; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Administrator")] - public class ClassesController : BaseController - { - private readonly IPositionService _positionService; - - public ClassesController() - { - var repo = new Repository(_db); - _positionService = new PositionService(repo); - } - - public ClassesController(IPositionService positionService) - { - _positionService = positionService; - } - - public async Task Index(ClassesIndexFilterModel filter) - { - var classes = await _db.Classes.ToListAsync(); - var filterResults = await GetFilteredClassList( - classes, - filter.s, - filter.sort, - filter.page, - filter.select, - filter.pageSize - ); - var totalPages = ViewBag.Pages; - var resultCount = ViewBag.Count; - var currentSemester = await GetThisSemesterAsync(); - - var model = new ClassIndexModel( - filterResults, - currentSemester, - filter, - totalPages, - resultCount - ); - - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(model); - } - - public async Task Create() - { - var model = new CreateClassModel - { - Departments = new SelectList(await - _db.Departments.OrderBy(c => c.Name).ToListAsync(), "DepartmentId", "Name"), - Class = new Class() - }; - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(CreateClassModel model) - { - var classExistsAlready = (await _db.Classes.AnyAsync(c => - c.CourseShorthand == model.Class.CourseShorthand && c.DepartmentId == model.Class.DepartmentId)); - - if (ModelState.IsValid && !classExistsAlready) - { - _db.Classes.Add(model.Class); - await _db.SaveChangesAsync(); - ViewBag.SuccessMessage = model.Class.CourseName + " class created successfully."; - model.Class = new Class(); - model.Departments = new SelectList(await - _db.Departments.OrderBy(c => c.Name).ToListAsync(), "DepartmentId", "Name"); - } - else - { - ViewBag.FailureMessage = "Could not create new class. Make sure the class you tried creating does not already exist."; - model.Departments = new SelectList(await - _db.Departments.OrderBy(c => c.Name).ToListAsync(), "DepartmentId", "Name", model.Class.DepartmentId); - } - return View(model); - } - - public async Task Details(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var course = await _db.Classes.FindAsync(id); - if (course == null) return HttpNotFound(); - - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - var model = new ClassDetailsModel - { - Class = course, - CurrentSemester = await GetThisSemesterAsync() - }; - return View(model); - } - - public async Task Edit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound); - var model = new CreateClassModel { Class = await _db.Classes.FindAsync(id) }; - if (model.Class == null) return HttpNotFound(); - - model.Departments = new SelectList(await - _db.Departments.OrderBy(c => c.Name).ToListAsync(), "DepartmentId", "Name"); - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(CreateClassModel model) - { - if (!ModelState.IsValid) - { - model.Departments = new SelectList(await - _db.Departments.OrderBy(c => c.Name).ToListAsync(), "DepartmentId", "Name", model.Class.DepartmentId); - ViewBag.FailureMessage = "The class could not be updated. " + - "Make sure the class shorthand entered does not already exist."; - return View(model); - } - - _db.Entry(model.Class).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Class.CourseName + " updated successfully."; - return RedirectToAction("Details", new { id = model.Class.ClassId }); - - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Delete(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound); - var model = await _db.Classes.FindAsync(id); - if (model == null) return HttpNotFound(); - - if (!model.ClassesTaken.Any()) return View(model); - - TempData["FailureMessage"] = "Class could not be deleted because enrollments were found."; - return RedirectToAction("Details", new { id }); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Academics")] - public async Task DeleteConfirmed(int id) - { - var model = await _db.Classes.FindAsync(id); - if (model.ClassesTaken.Any()) - { - TempData["FailureMessage"] = "Class could not be deleted because enrollments were found."; - return RedirectToAction("Index"); - } - _db.Entry(model).State = EntityState.Deleted; - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.CourseName + " deleted successfully."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Duplicates() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - var shorthandGroups = await (from c in _db.Classes - group c by c.CourseShorthand.ToLower() into g - select new DuplicateGroup - { - Shorthand = g.Key, - Classes = g.Select(n => new DuplicateClass - { - Class = n, - IsPrimary = false - }).ToList() - }).ToListAsync(); - - var model = shorthandGroups.Where(g => g.Classes.Count > 1).ToList(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Academics")] - public async Task Duplicates(List model) - { - // If no primary was selected, return an error message. - if (!model.SelectMany(g => g.Classes).Any(c => c.IsPrimary)) - { - TempData["FailureMessage"] = "Nothing was merged because no primary class was selected."; - return RedirectToAction("Duplicates"); - } - - foreach (var group in model) - { - // Skip if they did not check only one box. - if (group.Classes.Count(c => c.IsPrimary) != 1) continue; - - // Start the merging procedure. - var primaryId = group.Classes.Single(c => c.IsPrimary).Class.ClassId; - // Remove the primary group from the model list so that it doesn't get include in following loop. - group.Classes.Remove(group.Classes.Single(c => c.IsPrimary)); - - foreach (var cid in group.Classes.Select(cl => cl.Class.ClassId)) - { - // Set any classTakens (enrollments) to use the primary class. - var enrollmentsToMove = await _db.ClassesTaken.Where(c => c.ClassId == cid).ToListAsync(); - foreach (var e in enrollmentsToMove) - { - var classTaken = await _db.ClassesTaken.FindAsync(e.ClassTakenId); - classTaken.ClassId = primaryId; - _db.Entry(classTaken).State = EntityState.Modified; - } - // Now with everything moved over to the primary, remove the duplicated class. - var classToRemove = await _db.Classes.FindAsync(cid); - _db.Classes.Remove(classToRemove); - await _db.SaveChangesAsync(); - } - } - - TempData["SuccessMessage"] = "The duplicate merge was successful!"; - return RedirectToAction("Duplicates"); - } - - public async Task Schedule(string userName, int? semesterId = null) - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - var member = await UserManager.FindByNameAsync(userName); - if (string.IsNullOrEmpty(userName) || member == null) - { - ViewBag.FailureMessage = "No one by that username was found!"; - userName = User.Identity.GetUserName(); - } - member = await UserManager.FindByNameAsync(userName); - - var model = new ClassScheduleModel - { - SelectedUserName = userName, - Member = member, - AllClasses = await _db.Classes.OrderBy(c => c.CourseShorthand).ToListAsync(), - Semesters = await GetSemesterListAsync(), - ClassTaken = new ClassTaken - { - SemesterId = semesterId == null ? (await GetThisSemesterAsync()).Id : (int)semesterId, - UserId = member.Id - }, - ClassesTaken = member.ClassesTaken - }; - - ViewBag.UserName = userName; - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Enroll(ClassScheduleModel model) - { - if (!ModelState.IsValid) - { - TempData["FailureMessage"] = "Failed to add enrollment information for an unknown reason. " + - "Contact your administrator if the problem persists."; - return RedirectToAction("Schedule", new { userName = model.SelectedUserName }); - } - - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Academics"); - if (!hasElevatedPermissions && User.Identity.GetUserName() != model.SelectedUserName) - { - return new HttpStatusCodeResult(HttpStatusCode.NotFound); - } - - var member = await UserManager.FindByNameAsync(model.SelectedUserName); - - if (member.ClassesTaken.Any(c => - c.ClassId == model.ClassTaken.ClassId && - c.UserId == model.ClassTaken.UserId && - c.SemesterId == model.ClassTaken.SemesterId)) - { - TempData["FailureMessage"] = "Failed to enroll in class. " + - "Enrollment in the same class multiple times for a given semester is not allowed."; - return RedirectToAction("Schedule", new { userName = model.SelectedUserName, semesterId = model.ClassTaken.SemesterId }); - } - - model.ClassTaken.CreatedOn = DateTime.UtcNow; - _db.ClassesTaken.Add(model.ClassTaken); - await _db.SaveChangesAsync(); - var course = await _db.Classes.FindAsync(model.ClassTaken.ClassId); - var semester = await _db.Semesters.FindAsync(model.ClassTaken.SemesterId); - - TempData["SuccessMessage"] = member + " was successfully enrolled in " + course.CourseShorthand + " for " + semester + "."; - return RedirectToAction("Schedule", new { userName = model.SelectedUserName, semesterId = model.ClassTaken.SemesterId }); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Disenroll(int ctid) - { - var entry = await _db.ClassesTaken.SingleAsync(c => c.ClassTakenId == ctid); - if (entry == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound); - return View(entry); - } - - [HttpPost, ActionName("Disenroll"), ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Academics")] - public async Task DisenrollConfirmed(ClassTaken model) - { - var entry = await _db.ClassesTaken - .SingleAsync(c => c.UserId == model.UserId && c.SemesterId == model.SemesterId && c.ClassId == model.ClassId); - var member = await UserManager.FindByIdAsync(model.UserId); - var course = await _db.Classes.FindAsync(model.ClassId); - var semester = await _db.Semesters.FindAsync(model.SemesterId); - if (entry == null) - { - TempData["FailureMessage"] = "Failed to process disenrollment because no existing information was found."; - return RedirectToAction("Schedule", new { userName = member.UserName ?? User.Identity.GetUserName() }); - } - - _db.Entry(entry).State = EntityState.Deleted; - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = member + " was successfully disenrolled from " + - course.CourseShorthand + " for " + semester + "."; - return RedirectToAction("Schedule", new { userName = member.UserName ?? User.Identity.GetUserName() }); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task EditEnrollment(int ctid) - { - var enrollment = await _db.ClassesTaken.SingleAsync(c => c.ClassTakenId == ctid); - if (enrollment == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound); - - var model = new EditEnrollmentModel - { - Enrollment = enrollment - }; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Academics")] - public async Task EditEnrollment(EditEnrollmentModel model) - { - if (!ModelState.IsValid) - { - TempData["FailureMessage"] = "Failed to update enrollment information."; - return RedirectToAction("Schedule", new { userName = model.Enrollment.Member.UserName }); - } - - var classTaken = await _db.ClassesTaken - .SingleAsync(t => - t.ClassId == model.Enrollment.ClassId && - t.SemesterId == model.Enrollment.SemesterId && - t.UserId == model.Enrollment.UserId); - classTaken.IsSummerClass = model.Enrollment.IsSummerClass; - _db.Entry(classTaken).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - var member = await UserManager.FindByIdAsync(model.Enrollment.UserId); - - TempData["SuccessMessage"] = "Enrollment update was successful."; - return RedirectToAction("Schedule", new { userName = member.UserName }); - } - } -} diff --git a/src/Dsp.Web/Areas/Edu/Controllers/DepartmentsController.cs b/src/Dsp.Web/Areas/Edu/Controllers/DepartmentsController.cs deleted file mode 100644 index 3897587f..00000000 --- a/src/Dsp.Web/Areas/Edu/Controllers/DepartmentsController.cs +++ /dev/null @@ -1,109 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Controllers -{ - using Dsp.Web.Controllers; - using Dsp.Data.Entities; - using System.Data.Entity; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Administrator")] - public class DepartmentsController : BaseController - { - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(await _db.Departments.ToListAsync()); - } - - public async Task Details(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var model = await _db.Departments.FindAsync(id); - if (model == null) - { - return HttpNotFound(); - } - return View(model); - } - - [Authorize(Roles = "Administrator, Academics")] - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Academics")] - public async Task Create(Department model) - { - if (!ModelState.IsValid) return View(model); - - _db.Departments.Add(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " department was added successfully."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Edit(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var model = await _db.Departments.FindAsync(id); - if (model == null) - { - return HttpNotFound(); - } - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Academics")] - public async Task Edit(Department model) - { - if (!ModelState.IsValid) return View(model); - - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " department was updated successfully."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Delete(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var model = await _db.Departments.FindAsync(id); - if (model == null) - { - return HttpNotFound(); - } - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Academics")] - public async Task DeleteConfirmed(int id) - { - var model = await _db.Departments.FindAsync(id); - _db.Departments.Remove(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " department was deleted successfully."; - return RedirectToAction("Index"); - } - } -} diff --git a/src/Dsp.Web/Areas/Edu/Controllers/MajorsController.cs b/src/Dsp.Web/Areas/Edu/Controllers/MajorsController.cs deleted file mode 100644 index dd6f76d0..00000000 --- a/src/Dsp.Web/Areas/Edu/Controllers/MajorsController.cs +++ /dev/null @@ -1,220 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using System.Collections.Generic; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Administrator")] - public class MajorsController : BaseController - { - private readonly IPositionService _positionService; - - public MajorsController() - { - var repo = new Repository(_db); - _positionService = new PositionService(repo); - } - - public MajorsController(IPositionService positionService) - { - _positionService = positionService; - } - - - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(await _db.Majors.ToListAsync()); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Create() - { - ViewBag.DepartmentId = new SelectList(await _db.Departments.OrderBy(c => c.Name).ToListAsync(), - "DepartmentId", "Name"); - return View(); - } - - [Authorize(Roles = "Administrator, Academics")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(Major model) - { - if (!ModelState.IsValid) return View(model); - - _db.Majors.Add(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.MajorName + " major was added successfully."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Edit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.Majors.FindAsync(id); - if (model == null) return HttpNotFound(); - ViewBag.DepartmentId = new SelectList(await _db.Departments.OrderBy(c => c.Name).ToListAsync(), - "DepartmentId", "Name", model.DepartmentId); - return View(model); - } - - [Authorize(Roles = "Administrator, Academics")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(Major model) - { - if (!ModelState.IsValid) return View(model); - - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.MajorName + " major was updated successfully."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Academics")] - public async Task Delete(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var model = await _db.Majors.FindAsync(id); - if (model == null) - { - return HttpNotFound(); - } - return View(model); - } - - [Authorize(Roles = "Administrator, Academics")] - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - var model = await _db.Majors.FindAsync(id); - _db.Majors.Remove(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.MajorName + " major was deleted successfully."; - return RedirectToAction("Index"); - } - - public async Task Assign(int? id) - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - if (id != null) - { - var member = await UserManager.FindByIdAsync((int)id); - if (member != null) - { - ViewBag.UserName = member.UserName; - ViewBag.UserId = new SelectList(new List - { - new { UserId = member.Id, Name = member.FirstName + " " + member.LastName } - }, "UserId", "Name"); - } - } - else - { - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Academics"); - if (hasElevatedPermissions) - { - ViewBag.UserId = await GetUserIdListAsFullNameAsync(); - } - else - { - var member = await UserManager.FindByIdAsync(User.Identity.GetUserId()); - ViewBag.UserId = new SelectList(new List - { - new { UserId = member.Id, Name = member.FirstName + " " + member.LastName } - }, "UserId", "Name"); - } - } - - ViewBag.MajorId = new SelectList( - await _db.Majors.OrderBy(c => c.MajorName).ToListAsync(), "MajorId", "MajorName"); - - return View(new MajorToMember()); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Assign(MajorToMember model) - { - if (!ModelState.IsValid) - { - TempData["FailureMessage"] = "Failed to assign member to major because the submission was invalid. Please try again."; - return RedirectToAction("Assign", new { id = model.UserId }); - } - - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Academics"); - if (model.UserId != userId && !hasElevatedPermissions) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var member = await UserManager.FindByIdAsync(model.UserId); - if (member.MajorsToMember.Any(m => m.MajorId == model.MajorId && m.DegreeLevel == model.DegreeLevel)) - { - TempData["FailureMessage"] = "Failed to assign member to major because they are already in that major at that degree level."; - return RedirectToAction("Assign", new { id = model.UserId }); - } - - _db.MajorsToMembers.Add(model); - await _db.SaveChangesAsync(); - - var major = await _db.Majors.FindAsync(model.MajorId); - - TempData["SuccessMessage"] = member + " was successfully assigned to the " + major.MajorName + " major."; - return RedirectToAction("Index", "Account", new { area = "Members", userName = member.UserName }); - } - - public async Task Unassign(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.MajorsToMembers.FindAsync(id); - if (model == null) return HttpNotFound(); - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Academics"); - if (model.UserId != userId && !hasElevatedPermissions) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - return View(model); - } - - [HttpPost, ActionName("Unassign"), ValidateAntiForgeryToken] - public async Task Unassign(int id) - { - var model = await _db.MajorsToMembers.FindAsync(id); - var name = model.Member.ToString(); - var majorName = model.Major.MajorName; - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Academics"); - if (model.UserId != userId && !hasElevatedPermissions) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var userName = model.Member.UserName; - _db.MajorsToMembers.Remove(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = name + " was successfully unassigned from the " + majorName + " major."; - return RedirectToAction("Index", "Account", new { area = "Members", userName }); - } - } -} diff --git a/src/Dsp.Web/Areas/Edu/EduAreaRegistration.cs b/src/Dsp.Web/Areas/Edu/EduAreaRegistration.cs deleted file mode 100644 index 27ed839a..00000000 --- a/src/Dsp.Web/Areas/Edu/EduAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Edu -{ - public class EduAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Edu"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Edu_default", - "Edu/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Models/ClassDetailsModel.cs b/src/Dsp.Web/Areas/Edu/Models/ClassDetailsModel.cs deleted file mode 100644 index c9b3f89f..00000000 --- a/src/Dsp.Web/Areas/Edu/Models/ClassDetailsModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Models -{ - using Dsp.Data.Entities; - - public class ClassDetailsModel - { - public Class Class { get; set; } - public Semester CurrentSemester { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Models/ClassIndexFilterModel.cs b/src/Dsp.Web/Areas/Edu/Models/ClassIndexFilterModel.cs deleted file mode 100644 index 1c373af6..00000000 --- a/src/Dsp.Web/Areas/Edu/Models/ClassIndexFilterModel.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Models -{ - using Dsp.Web.Models; - - public class ClassesIndexFilterModel : Pager - { - public string select { get; set; } - public string sort { get; set; } - public string s { get; set; } - - public ClassesIndexFilterModel() - { - this.select = string.Empty; - this.sort = "number"; - this.s = string.Empty; - - base.page = 1; - base.pageSize = 10; - } - public ClassesIndexFilterModel(ClassesIndexFilterModel original) - { - this.select = original.select; - this.sort = original.sort; - this.s = original.s; - - base.page = original.page; - base.pageSize = original.pageSize; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Models/ClassIndexModel.cs b/src/Dsp.Web/Areas/Edu/Models/ClassIndexModel.cs deleted file mode 100644 index 8978a2a2..00000000 --- a/src/Dsp.Web/Areas/Edu/Models/ClassIndexModel.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class ClassIndexModel - { - public IEnumerable Classes { get; set; } - public Semester CurrentSemester { get; set; } - public ClassesIndexFilterModel Filter { get; set; } - public int TotalPages { get; set; } - public int ResultCount { get; set; } - - public ClassIndexModel( - IEnumerable classes, - Semester currentSemester, - ClassesIndexFilterModel filter, - int totalPages, - int resultCount) - { - Classes = classes; - CurrentSemester = currentSemester; - Filter = filter; - TotalPages = totalPages; - ResultCount = resultCount; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Models/ClassScheduleModel.cs b/src/Dsp.Web/Areas/Edu/Models/ClassScheduleModel.cs deleted file mode 100644 index 46c8532b..00000000 --- a/src/Dsp.Web/Areas/Edu/Models/ClassScheduleModel.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class ClassScheduleModel - { - public string SelectedUserName { get; set; } - public Member Member { get; set; } - public ClassTaken ClassTaken { get; set; } - - public IEnumerable AllClasses { get; set; } - public IEnumerable Semesters { get; set; } - public IEnumerable ClassesTaken { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Models/CreateClassModel.cs b/src/Dsp.Web/Areas/Edu/Models/CreateClassModel.cs deleted file mode 100644 index 02d583b2..00000000 --- a/src/Dsp.Web/Areas/Edu/Models/CreateClassModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Models -{ - using Dsp.Data.Entities; - using System.Web.Mvc; - - public class CreateClassModel - { - public SelectList Departments { get; set; } - public Class Class { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Models/DuplicateGroup.cs b/src/Dsp.Web/Areas/Edu/Models/DuplicateGroup.cs deleted file mode 100644 index 3462adb6..00000000 --- a/src/Dsp.Web/Areas/Edu/Models/DuplicateGroup.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Models -{ - using System.Collections.Generic; - using Dsp.Data.Entities; - - public class DuplicateGroup - { - public string Shorthand { get; set; } - public List Classes { get; set; } - } - - public class DuplicateClass - { - public Class Class { get; set; } - public bool IsPrimary { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Models/EditEnrollmentModel.cs b/src/Dsp.Web/Areas/Edu/Models/EditEnrollmentModel.cs deleted file mode 100644 index c3f7281e..00000000 --- a/src/Dsp.Web/Areas/Edu/Models/EditEnrollmentModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Dsp.Web.Areas.Edu.Models -{ - using Dsp.Data.Entities; - - public class EditEnrollmentModel - { - public ClassTaken Enrollment { get; set; } - } -} diff --git a/src/Dsp.Web/Areas/Edu/Views/Classes/Create.cshtml b/src/Dsp.Web/Areas/Edu/Views/Classes/Create.cshtml deleted file mode 100644 index 0eea4994..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Classes/Create.cshtml +++ /dev/null @@ -1,51 +0,0 @@ -@model Dsp.Web.Areas.Edu.Models.CreateClassModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Class"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.Label("Department", new { @class = "control-label" }) - @Html.DropDownListFor(model => Model.Class.DepartmentId, Model.Departments, null, new { @class = "form-control selectpicker", data_live_search = "true" }) - @Html.ValidationMessageFor(model => model.Class.DepartmentId, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Class.CourseShorthand, new { @class = "control-label" }) - @Html.EditorFor(model => model.Class.CourseShorthand, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Class.CourseShorthand, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Class.CourseName, new { @class = "control-label" }) - @Html.EditorFor(model => model.Class.CourseName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Class.CourseName, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Class.CreditHours, new { @class = "control-label" }) - @Html.EditorFor(model => model.Class.CreditHours, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Class.CreditHours, "", new { @class = "text-danger" }) -
-
- -
- } -
-
- @Html.Partial("~/Areas/Edu/Views/Classes/_ClassInstructions.cshtml") -
-
-
diff --git a/src/Dsp.Web/Areas/Edu/Views/Classes/Delete.cshtml b/src/Dsp.Web/Areas/Edu/Views/Classes/Delete.cshtml deleted file mode 100644 index bdd97a26..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Classes/Delete.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@model Dsp.Data.Entities.Class - -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Class"; -} - -
- -
-
-
-

Are you sure you want to delete this class?

-
-
-
-
@Html.DisplayNameFor(model => model.Department.Name)
-
@Html.DisplayFor(model => model.Department.Name)
-
@Html.DisplayNameFor(model => model.CourseShorthand)
-
@Html.DisplayFor(model => model.CourseShorthand)
-
@Html.DisplayNameFor(model => model.CourseName)
-
@Html.DisplayFor(model => model.CourseName)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Classes/Details.cshtml b/src/Dsp.Web/Areas/Edu/Views/Classes/Details.cshtml deleted file mode 100644 index 549ae61c..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Classes/Details.cshtml +++ /dev/null @@ -1,129 +0,0 @@ -@using Dsp.Web.Areas.Edu.Models -@using Dsp.Data.Entities -@using Microsoft.AspNet.Identity -@using System.Web.Configuration -@model ClassDetailsModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = Model.Class.CourseName; - ViewBag.Subtitle = Model.Class.CourseShorthand; - var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - var hasElevatedPermissions = User.IsInRole("Administrator") || User.IsInRole("Academics"); - - var enrollModel = new ClassScheduleModel - { - SelectedUserName = User.Identity.GetUserName(), - ClassTaken = new ClassTaken - { - UserId = User.Identity.GetUserId(), - ClassId = Model.Class.ClassId, - SemesterId = Model.CurrentSemester.Id - } - }; -} - -
-
- -
- @using (Html.BeginForm("Enroll", "Classes")) - { - if (!Model.Class.ClassesTaken.Any(c => - c.UserId == User.Identity.GetUserId() && c.SemesterId == Model.CurrentSemester.Id)) - { - @Html.AntiForgeryToken() - - - - - - } - - - @Model.Class.Department.Name Department - - - - Edit - - if (hasElevatedPermissions) - { - if (!Model.Class.ClassesTaken.Any()) - { - - Delete - - } - } - } - -
-
-
-
-
-
- - Members who are or were enrolled in @Model.Class.CourseShorthand -
-
- - - - - - @if (hasElevatedPermissions) - { - - } - - - - @if (Model.Class.ClassesTaken.Any()) - { - foreach (var s in Model.Class.ClassesTaken - .OrderByDescending(c => c.Semester.DateEnd).ThenBy(c => c.Member.LastName)) - { - - - - @if (hasElevatedPermissions) - { - var enrollmentInfo = new { ctid = s.ClassTakenId }; - - } - - } - } - else - { - var columns = hasElevatedPermissions ? 3 : 2; - - - - - } - -
MemberSemester
- - @(s.Member.FirstName + " " + s.Member.LastName) - - @s.Semester - - Edit | - Delete - -
No one has taken this class yet
-
- -
-
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Classes/Edit.cshtml b/src/Dsp.Web/Areas/Edu/Views/Classes/Edit.cshtml deleted file mode 100644 index e455a288..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Classes/Edit.cshtml +++ /dev/null @@ -1,52 +0,0 @@ -@model Dsp.Web.Areas.Edu.Models.CreateClassModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Class"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.Class.ClassId) - -
- @Html.LabelFor(model => model.Class.DepartmentId, "DepartmentId", htmlAttributes: new { @class = "control-label" }) - @Html.DropDownListFor(model => Model.Class.DepartmentId, Model.Departments, null, htmlAttributes: new { @class = "form-control selectpicker", data_live_search = "true" }) - @Html.ValidationMessageFor(model => model.Class.DepartmentId, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Class.CourseShorthand, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Class.CourseShorthand, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Class.CourseShorthand, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Class.CourseName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Class.CourseName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Class.CourseName, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Class.CreditHours, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Class.CreditHours, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Class.CreditHours, "", new { @class = "text-danger" }) -
-
- -
- } -
-
- @Html.Partial("~/Areas/Edu/Views/Classes/_ClassInstructions.cshtml") -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Classes/EditEnrollment.cshtml b/src/Dsp.Web/Areas/Edu/Views/Classes/EditEnrollment.cshtml deleted file mode 100644 index 287ee7dd..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Classes/EditEnrollment.cshtml +++ /dev/null @@ -1,68 +0,0 @@ -@model Dsp.Web.Areas.Edu.Models.EditEnrollmentModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Class Enrollment"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.Enrollment.UserId) - @Html.HiddenFor(model => model.Enrollment.ClassId) - @Html.HiddenFor(model => model.Enrollment.SemesterId) - @Html.HiddenFor(model => model.Enrollment.Member.UserName) - @Html.HiddenFor(model => model.Enrollment.Member.FirstName) - @Html.HiddenFor(model => model.Enrollment.Member.LastName) - -
-
-
Member
-
- - @Model.Enrollment.Member.FirstName @Model.Enrollment.Member.LastName - -
-
Class
-
- - @Model.Enrollment.Class.CourseName - -
-
Semester
-
- @(Model.Enrollment.IsSummerClass - ? "Summer " + Model.Enrollment.Semester.DateStart.Year - : Model.Enrollment.Semester.ToString()) -
-
-
-
-
-
- -
-
-
- -
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Classes/Index.cshtml b/src/Dsp.Web/Areas/Edu/Views/Classes/Index.cshtml deleted file mode 100644 index 7110c836..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Classes/Index.cshtml +++ /dev/null @@ -1,301 +0,0 @@ -@using Dsp.Web.Models; -@using Dsp.Web.Areas.Edu.Models; -@model ClassIndexModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Classes"; - - var isAdmin = User.IsInRole("Administrator"); - var isAcademics = User.IsInRole("Academics"); - - const string sortNumberAscText = "number-asc"; - const string sortNumberDescText = "number-desc"; - const string sortNameAscText = "name-asc"; - const string sortNameDescText = "name-desc"; - const string sortTakenAscText = "taken-asc"; - const string sortTakenDescText = "taken-desc"; - const string sortTakingAscText = "taking-asc"; - const string sortTakingDescText = "taking-desc"; - const string selectMeAllText = "me-all"; - const string selectMeNowText = "me-now"; - const string selectBeingTakenText = "being-taken"; - const string selectNoneTakingText = "none-taking"; - - var sortNumberAscFilter = new ClassesIndexFilterModel(Model.Filter); - var sortNumberDescFilter = new ClassesIndexFilterModel(Model.Filter); - var sortNameAscFilter = new ClassesIndexFilterModel(Model.Filter); - var sortNameDescFilter = new ClassesIndexFilterModel(Model.Filter); - var sortTakenAscFilter = new ClassesIndexFilterModel(Model.Filter); - var sortTakenDescFilter = new ClassesIndexFilterModel(Model.Filter); - var sortTakingAscFilter = new ClassesIndexFilterModel(Model.Filter); - var sortTakingDescFilter = new ClassesIndexFilterModel(Model.Filter); - var previousPageFilter = new ClassesIndexFilterModel(Model.Filter); - var nextPageFilter = new ClassesIndexFilterModel(Model.Filter); - var selectMeAllFilter = new ClassesIndexFilterModel(Model.Filter); - var selectMeNowFilter = new ClassesIndexFilterModel(Model.Filter); - var selectBeingTakenFilter = new ClassesIndexFilterModel(Model.Filter); - var selectNoneTakingFilter = new ClassesIndexFilterModel(Model.Filter); - - sortNumberAscFilter.sort = Model.Filter.sort == sortNumberAscText ? "" : sortNumberAscText; - sortNumberDescFilter.sort = Model.Filter.sort == sortNumberDescText ? "" : sortNumberDescText; - sortNameAscFilter.sort = Model.Filter.sort == sortNameAscText ? "" : sortNameAscText; - sortNameDescFilter.sort = Model.Filter.sort == sortNameDescText ? "" : sortNameDescText; - sortTakenAscFilter.sort = Model.Filter.sort == sortTakenAscText ? "" : sortTakenAscText; - sortTakenDescFilter.sort = Model.Filter.sort == sortTakenDescText ? "" : sortTakenDescText; - sortTakingAscFilter.sort = Model.Filter.sort == sortTakingAscText ? "" : sortTakingAscText; - sortTakingDescFilter.sort = Model.Filter.sort == sortTakingDescText ? "" : sortTakingDescText; - previousPageFilter.page = Model.Filter.page - 1; - nextPageFilter.page = Model.Filter.page + 1; - selectMeAllFilter.select = Model.Filter.select == selectMeAllText ? "" : selectMeAllText; - selectMeNowFilter.select = Model.Filter.select == selectMeNowText ? "" : selectMeNowText; - selectBeingTakenFilter.select = Model.Filter.select == selectBeingTakenText ? "" : selectBeingTakenText; - selectNoneTakingFilter.select = Model.Filter.select == selectNoneTakingText ? "" : selectNoneTakingText; - - var pagerModel = new PagerModel - { - Previous = previousPageFilter, - Incrementer = Model.Filter, - Next = nextPageFilter, - CurrentPage = Model.Filter.page, - PageSize = Model.Filter.pageSize, - TotalPages = Model.TotalPages, - ResultCount = Model.ResultCount - }; -} - -
- -
-
- @if (Model.Classes.Any()) - { -
-
-
-
- @Model.ResultCount Results - @if (!string.IsNullOrEmpty(Model.Filter.select)) - { - string selection = Model.Filter.select; - var text = string.Empty; - switch (selection) - { - case "me-all": - text = "All of my classes"; - break; - case "me-now": - text = "My current classes"; - break; - case "being-taken": - text = "Classes currently being taken"; - break; - case "none-taking": - text = "Classes no one is taking"; - break; - } - | Selection: @text - } - @if (!string.IsNullOrEmpty(Model.Filter.s)) - { - | Searched for: @Model.Filter.s - } -
- @if (isAdmin || isAcademics) - { - @Html.ActionLink("Duplicates", "Duplicates", null, new { @class = "btn btn-xs btn-default" }) - } - @Html.ActionLink("Add Class", "Create", null, new { @class = "btn btn-xs btn-success" }) -
-
-
-
- - @Html.Partial("~/Views/Shared/_PagerPartial.cshtml", pagerModel) -
- } - else - { -
- No classes found. -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Edu/Views/Departments/Create.cshtml b/src/Dsp.Web/Areas/Edu/Views/Departments/Create.cshtml deleted file mode 100644 index da25a287..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Departments/Create.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@model Dsp.Data.Entities.Department -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Department"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Departments/Delete.cshtml b/src/Dsp.Web/Areas/Edu/Views/Departments/Delete.cshtml deleted file mode 100644 index 3bb4dbd2..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Departments/Delete.cshtml +++ /dev/null @@ -1,31 +0,0 @@ -@model Dsp.Data.Entities.Department -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Department"; -} - -
- -
-
-
-

Are you sure you want to delete the @Model.Name department?

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Edu/Views/Departments/Details.cshtml b/src/Dsp.Web/Areas/Edu/Views/Departments/Details.cshtml deleted file mode 100644 index dcdcafc0..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Departments/Details.cshtml +++ /dev/null @@ -1,94 +0,0 @@ -@model Dsp.Data.Entities.Department -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Department"; - ViewBag.Subtitle = Model.Name; - var hasElevatedPermissions = User.IsInRole("Administrator") || User.IsInRole("Academics"); -} - -
- -
-
-
-
Classes
-
- - - - - - @if (hasElevatedPermissions) - { - - } - - - - @foreach (var d in Model.Classes.OrderBy(o => o.CourseShorthand)) - { - - - - @if (hasElevatedPermissions) - { - - } - - } - -
NumberName
- - @d.CourseShorthand - - @d.CourseName - Edit -
-
- -
-
-
-
-
Majors
-
- - - - - - @if (hasElevatedPermissions) - { - - } - - - - @foreach (var m in Model.Majors.OrderBy(o => o.MajorName)) - { - - - - @if (hasElevatedPermissions) - { - - } - - } - -
NameEnrolled
@m.MajorName@m.MajorToMembers.Count - Edit -
-
- -
-
-
-
- diff --git a/src/Dsp.Web/Areas/Edu/Views/Departments/Edit.cshtml b/src/Dsp.Web/Areas/Edu/Views/Departments/Edit.cshtml deleted file mode 100644 index 81e67d75..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Departments/Edit.cshtml +++ /dev/null @@ -1,34 +0,0 @@ -@model Dsp.Data.Entities.Department -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Department"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => Model.DepartmentId) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Departments/Index.cshtml b/src/Dsp.Web/Areas/Edu/Views/Departments/Index.cshtml deleted file mode 100644 index a6dbcf09..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Departments/Index.cshtml +++ /dev/null @@ -1,70 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Departments"; - var hasElevatedPermissions = User.IsInRole("Administrator") || User.IsInRole("Academics"); -} - -
-
-
-
- @{ Html.RenderPartial("~/Areas/Edu/Views/Shared/_EduNavPartial.cshtml"); } -
-
-
-
-
-
-
-
-
- @Html.ActionLink("Add Department", "Create", null, new { @class = "btn btn-xs btn-success" }) -
-
-
-
- - - - - - - @if (hasElevatedPermissions) - { - - } - - - - @foreach (var item in Model.OrderBy(o => o.Name)) - { - - - - - @if (hasElevatedPermissions) - { - - } - - } - -
NameClassesMajors
- - @item.Name - - @item.Classes.Count@item.Majors.Count - @Html.ActionLink("Edit", "Edit", new { id = item.DepartmentId }) - @if (!item.Majors.Any() && !item.Classes.Any()) - { - @: | - @Html.ActionLink("Delete", "Delete", new { id = item.DepartmentId }) - } -
-
- -
-
-
-
diff --git a/src/Dsp.Web/Areas/Edu/Views/Majors/Create.cshtml b/src/Dsp.Web/Areas/Edu/Views/Majors/Create.cshtml deleted file mode 100644 index 08ad69f8..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Majors/Create.cshtml +++ /dev/null @@ -1,38 +0,0 @@ -@model Dsp.Data.Entities.Major -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Major"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.DepartmentId, htmlAttributes: new { @class = "control-label" }) - @Html.DropDownList("DepartmentId", null, htmlAttributes: new { @class = "form-control" }) - @Html.ValidationMessageFor(model => model.DepartmentId, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.MajorName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.MajorName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.MajorName, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Majors/Delete.cshtml b/src/Dsp.Web/Areas/Edu/Views/Majors/Delete.cshtml deleted file mode 100644 index e4a01612..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Majors/Delete.cshtml +++ /dev/null @@ -1,31 +0,0 @@ -@model Dsp.Data.Entities.Major -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Major"; -} - -
- -
-
-
-

Are you sure you want to delete the @Model.MajorName major?

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Edu/Views/Majors/Edit.cshtml b/src/Dsp.Web/Areas/Edu/Views/Majors/Edit.cshtml deleted file mode 100644 index c2485e89..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Majors/Edit.cshtml +++ /dev/null @@ -1,39 +0,0 @@ -@model Dsp.Data.Entities.Major -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Major"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => Model.MajorId) - -
- @Html.LabelFor(model => model.DepartmentId, htmlAttributes: new { @class = "control-label" }) - @Html.DropDownList("DepartmentId", null, htmlAttributes: new { @class = "form-control" }) - @Html.ValidationMessageFor(model => model.DepartmentId, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.MajorName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.MajorName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.MajorName, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/Majors/Index.cshtml b/src/Dsp.Web/Areas/Edu/Views/Majors/Index.cshtml deleted file mode 100644 index 9f59c856..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Majors/Index.cshtml +++ /dev/null @@ -1,74 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Majors"; - var hasElevatedPermissions = User.IsInRole("Administrator") || User.IsInRole("Academics"); -} - -
-
-
-
- @{ Html.RenderPartial("~/Areas/Edu/Views/Shared/_EduNavPartial.cshtml"); } -
-
-
-
-
-
-
-
-
- @if (hasElevatedPermissions) - { - @Html.ActionLink("Add Major", "Create", null, new { @class = "btn btn-xs btn-success" }) - } - @Html.ActionLink("Assign Major", "Assign", null, new { @class = "btn btn-xs btn-success" }) -
-
-
-
- - - - - - - @if (hasElevatedPermissions) - { - - } - - - - @foreach (var item in Model.OrderBy(o => o.MajorName)) - { - - - - - @if (hasElevatedPermissions) - { - - } - - } - -
NameDepartmentMembers
@item.MajorName - - @item.Department.Name - - @item.MajorToMembers.Count - @if (!item.MajorToMembers.Any()) - { - @Html.ActionLink("Edit", "Edit", new { id = item.MajorId }) - @: | - @Html.ActionLink("Delete", "Delete", new { id = item.MajorId }) - } -
-
- -
-
-
-
diff --git a/src/Dsp.Web/Areas/Edu/Views/Majors/Unassign.cshtml b/src/Dsp.Web/Areas/Edu/Views/Majors/Unassign.cshtml deleted file mode 100644 index adc10cf8..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Majors/Unassign.cshtml +++ /dev/null @@ -1,32 +0,0 @@ -@model Dsp.Data.Entities.MajorToMember -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Unassign Member from Major"; -} - -
- -
-
-
-

Are you sure you want to take @Model.Member.FirstName out of the @Model.Major.MajorName (@Model.DegreeLevel) major?

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Edu/Views/Shared/_EduNavPartial.cshtml b/src/Dsp.Web/Areas/Edu/Views/Shared/_EduNavPartial.cshtml deleted file mode 100644 index 0743d588..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/Shared/_EduNavPartial.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@using Microsoft.AspNet.Identity -@if (Request.IsAuthenticated) -{ - @Html.ActionLink("Classes", "Index", "Classes", null, new - { - @class = "btn btn-default " + (ViewBag.Title.Contains("Class") ? "active" : "") - }) - @Html.ActionLink("Majors", "Index", "Majors", null, new - { - @class = "btn btn-default " + (ViewBag.Title.Contains("Major") ? "active" : "") - }) - if (User.IsInRole("Administrator") || User.IsInRole("Academics")) - { - @Html.ActionLink("Departments", "Index", "Departments", null, new - { - @class = "btn btn-default " + (ViewBag.Title.Contains("Department") ? "active" : "") - }) - } - @Html.ActionLink("Schedule", "Schedule", "Classes", new - { - userName = ViewBag.UserName ?? User.Identity.GetUserName() - }, new - { - @class = "btn btn-default " + (ViewBag.Title.Contains("Schedule") ? "active" : "") - }) -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Edu/Views/web.config b/src/Dsp.Web/Areas/Edu/Views/web.config deleted file mode 100644 index 0a5a7def..00000000 --- a/src/Dsp.Web/Areas/Edu/Views/web.config +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Controllers/RoomsController.cs b/src/Dsp.Web/Areas/House/Controllers/RoomsController.cs deleted file mode 100644 index de0b4beb..00000000 --- a/src/Dsp.Web/Areas/House/Controllers/RoomsController.cs +++ /dev/null @@ -1,251 +0,0 @@ -namespace Dsp.Web.Areas.House.Controllers -{ - using Dsp.Data.Entities; - using Dsp.Web.Controllers; - using Models; - using System; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public class RoomsController : BaseController - { - public async Task Index(int? sid) - { - var model = new RoomIndexModel(); - if (sid == null) - { - model.Semester = await base.GetThisSemesterAsync(); - } - else - { - model.Semester = await _db.Semesters.FindAsync(sid); - } - - var semesters = await _db.Semesters.OrderByDescending(s => s.DateStart).ToListAsync(); - model.SemesterList = base.GetSemesterSelectList(semesters); - model.sid = model.Semester.Id; - model.Members = (await base.GetRosterForSemester(model.Semester)).ToList(); - model.Rooms = model.Semester.Rooms; - - return View(model); - } - - [Authorize(Roles = "Administrator, House Manager")] - public async Task Create(int? sid) - { - if (sid == null) - { - var thisSemester = await base.GetThisSemesterAsync(); - sid = thisSemester.Id; - ViewBag.Semester = thisSemester.ToString(); - } - else - { - var semester = await _db.Semesters.FindAsync((int)sid); - sid = semester.Id; - ViewBag.Semester = semester.ToString(); - } - var room = new Room { SemesterId = (int)sid }; - return View(room); - } - - [Authorize(Roles = "Administrator, House Manager")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(Room room) - { - if (!ModelState.IsValid) return View(room); - - _db.Rooms.Add(room); - await _db.SaveChangesAsync(); - return RedirectToAction("Index", new { sid = room.SemesterId }); - } - - [Authorize(Roles = "Administrator, House Manager")] - public async Task Edit(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var room = await _db.Rooms.FindAsync(id); - if (room == null) - { - return HttpNotFound(); - } - return View(room); - } - - [Authorize(Roles = "Administrator, House Manager")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(Room room) - { - if (!ModelState.IsValid) return View(room); - - _db.Entry(room).State = EntityState.Modified; - await _db.SaveChangesAsync(); - return RedirectToAction("Index", new { sid = room.SemesterId }); - } - - [Authorize(Roles = "Administrator, House Manager")] - public async Task Delete(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var room = await _db.Rooms.FindAsync(id); - if (room == null) - { - return HttpNotFound(); - } - return View(room); - } - - [Authorize(Roles = "Administrator, House Manager")] - [HttpPost, ValidateAntiForgeryToken, ActionName("Delete")] - public async Task DeleteConfirmed(int id) - { - var room = await _db.Rooms.FindAsync(id); - var sid = room.SemesterId; - _db.Rooms.Remove(room); - await _db.SaveChangesAsync(); - return RedirectToAction("Index", new { sid }); - } - - [Authorize(Roles = "Administrator, House Manager")] - [HttpPost, ValidateAntiForgeryToken] - public async Task GenerateRooms(int? sid) - { - if (sid == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Provided 'sid' did not match an existing semester."); - } - var semester = await _db.Semesters.FindAsync(sid); - - // See if rooms already exist. - if (semester.Rooms.Any()) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Semester already has rooms entered. Delete all existing rooms before generating."); - } - - // First let's try to copy the previous semesters room entries for convenience. - var previousSemester = (await _db.Semesters - .Where(s => s.DateEnd < semester.DateStart) - .OrderByDescending(s => s.DateStart) - .ToListAsync()) - .FirstOrDefault(); - if (previousSemester != null && previousSemester.Rooms.Any()) - { - foreach (var r in previousSemester.Rooms) - { - var newRoom = new Room - { - SemesterId = semester.Id, - Name = r.Name, - MaxCapacity = r.MaxCapacity - }; - _db.Rooms.Add(newRoom); - } - - await _db.SaveChangesAsync(); - return new HttpStatusCodeResult(HttpStatusCode.Accepted); - } - - // No historical data, we'll just go with the hard-coded values. - // Add out-of-house - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "Out of House", MaxCapacity = 0 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "RC1", MaxCapacity = 0 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "RC2", MaxCapacity = 0 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "Quad", MaxCapacity = 0 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "TJ", MaxCapacity = 0 }); - // First floor - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "101", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "102", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "103", MaxCapacity = 1 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "104", MaxCapacity = 3 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "105", MaxCapacity = 4 }); - // Second floor - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "201", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "202", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "203", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "204", MaxCapacity = 3 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "205", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "206", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "207", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "208", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "209", MaxCapacity = 3 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "210", MaxCapacity = 3 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "211", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "212", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "213", MaxCapacity = 3 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "214", MaxCapacity = 2 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "215", MaxCapacity = 3 }); - _db.Rooms.Add(new Room { SemesterId = (int)sid, Name = "216", MaxCapacity = 3 }); - - await _db.SaveChangesAsync(); - return new HttpStatusCodeResult(HttpStatusCode.Accepted, "Rooms generated successfully."); - } - - [Authorize(Roles = "Administrator, House Manager")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Assign(int sid, int mid, int rid, DateTime moveIn, DateTime moveOut) - { - var semester = await _db.Semesters.FindAsync(sid); - if (semester == null) - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Provided 'sid' did not match an existing semester."); - - var member = await UserManager.FindByIdAsync(mid); - if (member == null) - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Provided 'mid' did not match an existing member."); - - var room = await _db.Rooms.FindAsync(rid); - if (room == null) - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Provided 'rid' did not match an existing room."); - - var roomAssignment = new RoomToMember - { - RoomId = rid, - UserId = mid, - MovedIn = base.ConvertCstToUtc(moveIn), - MovedOut = base.ConvertCstToUtc(moveOut) - }; - - try - { - _db.RoomsToMembers.Add(roomAssignment); - await _db.SaveChangesAsync(); - } - catch (Exception e) - { - return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, e.InnerException.Message); - } - - return new HttpStatusCodeResult(HttpStatusCode.Accepted); - } - - [Authorize(Roles = "Administrator, House Manager")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Unassign(int aid, int sid) - { - var roomAssignment = await _db.RoomsToMembers.FindAsync(aid); - if (roomAssignment == null) - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Provided 'aid' did not match an existing room assignment."); - - try - { - _db.RoomsToMembers.Remove(roomAssignment); - await _db.SaveChangesAsync(); - } - catch (Exception e) - { - return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, e.InnerException.Message); - } - - return RedirectToAction("Index", new { sid }); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Controllers/WorkOrderPrioritiesController.cs b/src/Dsp.Web/Areas/House/Controllers/WorkOrderPrioritiesController.cs deleted file mode 100644 index 336358bf..00000000 --- a/src/Dsp.Web/Areas/House/Controllers/WorkOrderPrioritiesController.cs +++ /dev/null @@ -1,77 +0,0 @@ -namespace Dsp.Web.Areas.House.Controllers -{ - using Dsp.Web.Controllers; - using Dsp.Data.Entities; - using System.Data.Entity; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, House Manager")] - public class WorkOrderPrioritiesController : BaseController - { - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(await _db.WorkOrderPriorities.Include(w => w.PriorityChanges).ToListAsync()); - } - - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(WorkOrderPriority model) - { - if (!ModelState.IsValid) return View(model); - - _db.WorkOrderPriorities.Add(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " created successfully."; - return RedirectToAction("Index"); - } - - public async Task Edit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.WorkOrderPriorities.FindAsync(id); - if (model == null) return HttpNotFound(); - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(WorkOrderPriority model) - { - if (!ModelState.IsValid) return View(model); - - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " priority updated successfully."; - return RedirectToAction("Index"); - } - - public async Task Delete(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.WorkOrderPriorities.FindAsync(id); - if (model == null) return HttpNotFound(); - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - var model = await _db.WorkOrderPriorities.FindAsync(id); - _db.WorkOrderPriorities.Remove(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " priority deleted successfully."; - return RedirectToAction("Index"); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Controllers/WorkOrderStatusesController.cs b/src/Dsp.Web/Areas/House/Controllers/WorkOrderStatusesController.cs deleted file mode 100644 index 6d2fc0de..00000000 --- a/src/Dsp.Web/Areas/House/Controllers/WorkOrderStatusesController.cs +++ /dev/null @@ -1,77 +0,0 @@ -namespace Dsp.Web.Areas.House.Controllers -{ - using Dsp.Web.Controllers; - using Dsp.Data.Entities; - using System.Data.Entity; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, House Manager")] - public class WorkOrderStatusesController : BaseController - { - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(await _db.WorkOrderStatuses.Include(w => w.StatusChanges).ToListAsync()); - } - - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(WorkOrderStatus model) - { - if (!ModelState.IsValid) return View(model); - - _db.WorkOrderStatuses.Add(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " created successfully."; - return RedirectToAction("Index"); - } - - public async Task Edit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.WorkOrderStatuses.FindAsync(id); - if (model == null) return HttpNotFound(); - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(WorkOrderStatus model) - { - if (!ModelState.IsValid) return View(model); - - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " updated successfully."; - return RedirectToAction("Index"); - } - - public async Task Delete(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.WorkOrderStatuses.FindAsync(id); - if (model == null) return HttpNotFound(); - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - var model = await _db.WorkOrderStatuses.FindAsync(id); - _db.WorkOrderStatuses.Remove(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = model.Name + " deleted successfully."; - return RedirectToAction("Index"); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Controllers/WorkOrdersController.cs b/src/Dsp.Web/Areas/House/Controllers/WorkOrdersController.cs deleted file mode 100644 index 0d4657b6..00000000 --- a/src/Dsp.Web/Areas/House/Controllers/WorkOrdersController.cs +++ /dev/null @@ -1,440 +0,0 @@ -namespace Dsp.Web.Areas.House.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Extensions; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Net.Mail; - using System.Text; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Administrator, ACB House Manager")] - public class WorkOrdersController : BaseController - { - private readonly IPositionService _positionService; - - public WorkOrdersController() - { - var repo = new Repository(_db); - _positionService = new PositionService(repo); - } - - public WorkOrdersController(IPositionService positionService) - { - _positionService = positionService; - } - - [HttpGet] - public async Task Index(WorkOrderIndexFilterModel filter) - { - var workOrders = await _db.WorkOrders.ToListAsync(); - var filterResults = GetFilteredWorkOrderList( - workOrders, - filter.s, - filter.sort, - filter.page, - filter.open, - filter.closed - ); - var currentUserId = User.Identity.GetUserId(); - var usersWorkOrders = workOrders - .Where(x => x.GetCurrentStatus() != "Closed" && x.UserId == currentUserId); - var totalPages = ViewBag.Pages; - var openCount = ViewBag.OpenResultCount; - var closedCount = ViewBag.ClosedResultCount; - - var model = new WorkOrderIndexModel( - filterResults, - usersWorkOrders, - filter, - totalPages, - openCount, - closedCount - ); - - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(model); - } - - [HttpGet] - public async Task View(int? id) - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var workOrder = await _db.WorkOrders.FindAsync(id); - if (workOrder == null) return HttpNotFound(); - - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "House Manager"); - if (hasElevatedPermissions && workOrder.GetCurrentStatus() == "Unread") - { - var underReviewStatus = await _db.WorkOrderStatuses.SingleAsync(s => s.Name == "Under Review"); - await UpdateWorkOrderStatus(workOrder, underReviewStatus); - TempData["SuccessMessage"] = "Work order has been placed under review."; - return RedirectToAction("View", new { id }); - } - - var workOrders = await _db.WorkOrders.ToListAsync(); - var model = new WorkOrderViewModel - { - WorkOrder = workOrder, - UsersWorkOrders = workOrders.Where(x => x.GetCurrentStatus() != "Closed" && x.UserId == userId) - }; - - return View(model); - } - - [HttpPost] - public async Task ChangeWorkOrderStatus(string typeName, int? id) - { - if (string.IsNullOrEmpty(typeName) || id == null) - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var status = await _db.WorkOrderStatuses.SingleOrDefaultAsync(w => w.Name == typeName); - if (status == null) - return HttpNotFound(); - - var workOrder = await _db.WorkOrders.FindAsync(id); - if (workOrder == null) - return HttpNotFound(); - - var newStatus = new WorkOrderStatusChange - { - UserId = User.Identity.GetUserId(), - ChangedOn = DateTime.UtcNow, - WorkOrderId = (int)id, - WorkOrderStatusId = status.WorkOrderStatusId - }; - - _db.WorkOrderStatusChanges.Add(newStatus); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = "Work order status successfully changed to " + status.Name + "."; - return RedirectToAction("View", new { id }); - } - - [HttpPost] - public async Task ChangeWorkOrderPriority(string typeName, int? id) - { - if (string.IsNullOrEmpty(typeName) || id == null) - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var priority = await _db.WorkOrderPriorities.SingleOrDefaultAsync(w => w.Name == typeName); - if (priority == null) - return HttpNotFound(); - - var workOrder = await _db.WorkOrders.FindAsync(id); - if (workOrder == null) - return HttpNotFound(); - - var newPriority = new WorkOrderPriorityChange - { - UserId = User.Identity.GetUserId(), - ChangedOn = DateTime.UtcNow, - WorkOrderId = (int)id, - WorkOrderPriorityId = priority.WorkOrderPriorityId - }; - - _db.WorkOrderPriorityChanges.Add(newPriority); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = "Work order priority successfully changed to " + priority.Name + "."; - return RedirectToAction("View", new { id }); - } - - [HttpPost] - public async Task Comment(int? workOrderId, string comment, bool close) - { - var userId = User.Identity.GetUserId(); - // Perform some crucial server-side validation. - if (workOrderId == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - if (close && string.IsNullOrEmpty(comment)) - { - TempData["FailureMessage"] = "A comment is required when closing a work order."; - return RedirectToAction("View", new { id = workOrderId }); - } - if (string.IsNullOrEmpty(comment)) - { - TempData["FailureMessage"] = "Empty comments are not allowed."; - return RedirectToAction("View", new { id = workOrderId }); - } - var workOrder = await _db.WorkOrders.FindAsync(workOrderId); - if (workOrder == null) return HttpNotFound(); - if (workOrder.GetCurrentStatus() == "Closed") - { - TempData["FailureMessage"] = "This work order is already closed."; - return RedirectToAction("View", new { id = workOrderId }); - } - - var commentTime = DateTime.UtcNow; - if (close) - { - workOrder.Result = comment; - var closedStatus = await _db.WorkOrderStatuses.SingleAsync(w => w.Name == "Closed"); - var statusChange = new WorkOrderStatusChange - { - WorkOrderStatusId = closedStatus.WorkOrderStatusId, - ChangedOn = commentTime.AddSeconds(1), - WorkOrderId = (int)workOrderId, - UserId = userId - }; - - _db.Entry(workOrder).State = EntityState.Modified; - _db.WorkOrderStatusChanges.Add(statusChange); - await _db.SaveChangesAsync(); - } - - var newComment = new WorkOrderComment - { - WorkOrderId = (int)workOrderId, - SubmittedOn = commentTime, - UserId = userId, - Text = comment - }; - - _db.WorkOrderComments.Add(newComment); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = close - ? "Work order closed successfully." - : "Comment posted successfully."; - return RedirectToAction("View", new { id = workOrderId }); - } - - [HttpGet] - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(WorkOrder model) - { - if (!ModelState.IsValid) return View(model); - - // Get initial status and priority values; add them if not in Db. - var initialStatus = await _db.WorkOrderStatuses.SingleOrDefaultAsync(w => w.Name == "Unread"); - if (initialStatus == null) - { - initialStatus = new WorkOrderStatus { Name = "Unread" }; - _db.WorkOrderStatuses.Add(initialStatus); - await _db.SaveChangesAsync(); - } - var initialPriority = await _db.WorkOrderPriorities.SingleOrDefaultAsync(w => w.Name == "Low"); - if (initialPriority == null) - { - initialPriority = new WorkOrderPriority { Name = "Low" }; - _db.WorkOrderPriorities.Add(initialPriority); - await _db.SaveChangesAsync(); - } - - // Insert work item. Doing this after we make sure we have the status and priority Ids. - var member = await UserManager.FindByIdAsync(User.Identity.GetUserId()); - model.UserId = member.Id; - model.Title = ToTitleCaseString(model.Title); - _db.WorkOrders.Add(model); - await _db.SaveChangesAsync(); - - var initialStatusChange = new WorkOrderStatusChange - { - UserId = model.UserId, - WorkOrderId = model.WorkOrderId, - ChangedOn = DateTime.UtcNow, - WorkOrderStatusId = initialStatus.WorkOrderStatusId - }; - var initialPriorityChange = new WorkOrderPriorityChange - { - UserId = model.UserId, - WorkOrderId = model.WorkOrderId, - ChangedOn = DateTime.UtcNow, - WorkOrderPriorityId = initialPriority.WorkOrderPriorityId - }; - _db.WorkOrderStatusChanges.Add(initialStatusChange); - _db.WorkOrderPriorityChanges.Add(initialPriorityChange); - await _db.SaveChangesAsync(); - - // Send email to house manager. - var houseMan = await GetCurrentLeader("House Manager"); - if (houseMan == null) - { - - TempData["SuccessMessage"] = "Work order created successfully but no email was " + - "sent to the house manager because no one is currently appointed."; - return RedirectToAction("View", new { id = model.WorkOrderId }); - } - model.Member = member; - var body = RenderRazorViewToString("~/Views/Emails/NewWorkOrder.cshtml", model); - var bytes = Encoding.Default.GetBytes(body); - body = Encoding.UTF8.GetString(bytes); - - var message = new IdentityMessage - { - Subject = "New Work Order - " + model.Title, - Body = body, - Destination = houseMan.Member.Email - }; - - try - { - var emailService = new EmailService(); - await emailService.SendAsync(message); - } - catch (SmtpException e) - { - Elmah.ErrorSignal.FromCurrentContext().Raise(e); - } - - TempData["SuccessMessage"] = "Work order created successfully."; - return RedirectToAction("View", new { id = model.WorkOrderId }); - } - - [HttpGet] - public ActionResult CreateOld() - { - var model = new WorkOrderArchiveModel - { - WorkOrder = new WorkOrder(), - SubmittedOn = ConvertUtcToCst(DateTime.UtcNow).AddDays(-1), - ClosedOn = ConvertUtcToCst(DateTime.UtcNow) - }; - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task CreateOld(WorkOrderArchiveModel model) - { - if (!ModelState.IsValid) return View(model); - - // Get initial status and priority values; add them if not in Db. - var initialStatus = await _db.WorkOrderStatuses.SingleOrDefaultAsync(w => w.Name == "Unread"); - if (initialStatus == null) - { - initialStatus = new WorkOrderStatus { Name = "Unread" }; - _db.WorkOrderStatuses.Add(initialStatus); - await _db.SaveChangesAsync(); - } - var finalStatus = await _db.WorkOrderStatuses.SingleOrDefaultAsync(w => w.Name == "Closed"); - if (finalStatus == null) - { - finalStatus = new WorkOrderStatus { Name = "Closed" }; - _db.WorkOrderStatuses.Add(finalStatus); - await _db.SaveChangesAsync(); - } - var initialPriority = await _db.WorkOrderPriorities.SingleOrDefaultAsync(w => w.Name == "Low"); - if (initialPriority == null) - { - initialPriority = new WorkOrderPriority { Name = "Low" }; - _db.WorkOrderPriorities.Add(initialPriority); - await _db.SaveChangesAsync(); - } - - // Insert work item. Doing this after we make sure we have the status and priority Ids. - model.WorkOrder.UserId = User.Identity.GetUserId(); - model.WorkOrder.Title = ToTitleCaseString(model.WorkOrder.Title); - _db.WorkOrders.Add(model.WorkOrder); - await _db.SaveChangesAsync(); - - var initialStatusChange = new WorkOrderStatusChange - { - UserId = model.WorkOrder.UserId, - WorkOrderId = model.WorkOrder.WorkOrderId, - ChangedOn = model.SubmittedOn, - WorkOrderStatusId = initialStatus.WorkOrderStatusId - }; - var finalStatusChange = new WorkOrderStatusChange - { - UserId = model.WorkOrder.UserId, - WorkOrderId = model.WorkOrder.WorkOrderId, - ChangedOn = model.ClosedOn, - WorkOrderStatusId = finalStatus.WorkOrderStatusId - }; - _db.WorkOrderStatusChanges.Add(initialStatusChange); - _db.WorkOrderStatusChanges.Add(finalStatusChange); - - var initialPriorityChange = new WorkOrderPriorityChange - { - UserId = model.WorkOrder.UserId, - WorkOrderId = model.WorkOrder.WorkOrderId, - ChangedOn = model.SubmittedOn, - WorkOrderPriorityId = initialPriority.WorkOrderPriorityId - }; - _db.WorkOrderPriorityChanges.Add(initialPriorityChange); - - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = "Past work order created and archived successfuly."; - return RedirectToAction("View", new { id = model.WorkOrder.WorkOrderId }); - } - - [HttpGet] - public async Task Edit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.WorkOrders.FindAsync(id); - if (model == null) return HttpNotFound(); - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(WorkOrder model) - { - if (!ModelState.IsValid) return View(model); - - _db.Entry(model).State = EntityState.Modified; - model.Title = ToTitleCaseString(model.Title); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = "Work order updated successfully."; - return RedirectToAction("View", new { id = model.WorkOrderId }); - } - - [HttpGet] - public async Task Delete(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.WorkOrders.FindAsync(id); - if (model == null) return HttpNotFound(); - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - var model = await _db.WorkOrders.FindAsync(id); - _db.WorkOrders.Remove(model); - await _db.SaveChangesAsync(); - - TempData["SuccessMessage"] = "Work order deleted successfully."; - return RedirectToAction("Index"); - } - - private async Task UpdateWorkOrderStatus(WorkOrder workOrder, WorkOrderStatus newStatus) - { - var statusChange = new WorkOrderStatusChange - { - ChangedOn = DateTime.UtcNow, - UserId = User.Identity.GetUserId(), - WorkOrderId = workOrder.WorkOrderId, - WorkOrderStatusId = newStatus.WorkOrderStatusId - }; - - _db.Entry(workOrder).State = EntityState.Modified; - _db.WorkOrderStatusChanges.Add(statusChange); - await _db.SaveChangesAsync(); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/HouseAreaRegistration.cs b/src/Dsp.Web/Areas/House/HouseAreaRegistration.cs deleted file mode 100644 index 65e1c042..00000000 --- a/src/Dsp.Web/Areas/House/HouseAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.House -{ - public class HouseAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "House"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "House_default", - "House/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Models/RoomIndexModel.cs b/src/Dsp.Web/Areas/House/Models/RoomIndexModel.cs deleted file mode 100644 index 9eeab2af..00000000 --- a/src/Dsp.Web/Areas/House/Models/RoomIndexModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Dsp.Web.Areas.House.Models -{ - using System.Collections.Generic; - using Dsp.Data.Entities; - using System.Web.Mvc; - - public class RoomIndexModel - { - public IEnumerable Rooms { get; set; } - public IEnumerable Members { get; set; } - public Semester Semester { get; set; } - public int sid { get; set; } - public IEnumerable SemesterList { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Models/WorkOrderArchiveModel.cs b/src/Dsp.Web/Areas/House/Models/WorkOrderArchiveModel.cs deleted file mode 100644 index 9e232628..00000000 --- a/src/Dsp.Web/Areas/House/Models/WorkOrderArchiveModel.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Dsp.Web.Areas.House.Models -{ - using System; - using System.ComponentModel.DataAnnotations; - using Dsp.Data.Entities; - - public class WorkOrderArchiveModel - { - public WorkOrder WorkOrder { get; set; } - - [Required] - [DataType(DataType.Date)] - [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] - [Display(Name = "Submitted On")] - public DateTime SubmittedOn { get; set; } - - [Required] - [DataType(DataType.Date)] - [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] - [Display(Name = "Closed On")] - public DateTime ClosedOn { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Models/WorkOrderDiscussionEntry.cs b/src/Dsp.Web/Areas/House/Models/WorkOrderDiscussionEntry.cs deleted file mode 100644 index 1758d3ca..00000000 --- a/src/Dsp.Web/Areas/House/Models/WorkOrderDiscussionEntry.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Dsp.Web.Areas.House.Models -{ - using System; - - public class WorkOrderDiscussionEntry - { - public DateTime OccurredOn { get; set; } - public int UserId { get; set; } - public string Name { get; set; } - public string Title { get; set; } - public string Text { get; set; } - public string AvatarPath { get; set; } - public string UserName { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Models/WorkOrderIndexFilterModel.cs b/src/Dsp.Web/Areas/House/Models/WorkOrderIndexFilterModel.cs deleted file mode 100644 index 583fce6a..00000000 --- a/src/Dsp.Web/Areas/House/Models/WorkOrderIndexFilterModel.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Dsp.Web.Areas.House.Models -{ - using Dsp.Web.Models; - - public class WorkOrderIndexFilterModel : Pager - { - public bool open { get; set; } - public bool closed { get; set; } - public string sort { get; set; } - public string s { get; set; } - - public WorkOrderIndexFilterModel() - { - this.open = true; - this.closed = false; - this.sort = "newest"; - this.s = string.Empty; - - base.page = 1; - base.pageSize = 10; - } - - public WorkOrderIndexFilterModel(WorkOrderIndexFilterModel original) - { - this.open = original.open; - this.closed = original.closed; - this.sort = original.sort; - this.s = original.s; - - base.page = original.page; - base.pageSize = original.pageSize; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Models/WorkOrderIndexModel.cs b/src/Dsp.Web/Areas/House/Models/WorkOrderIndexModel.cs deleted file mode 100644 index c0ca6e1a..00000000 --- a/src/Dsp.Web/Areas/House/Models/WorkOrderIndexModel.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace Dsp.Web.Areas.House.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class WorkOrderIndexModel - { - public IEnumerable WorkOrders { get; set; } - public IEnumerable UsersWorkOrders { get; set; } - public WorkOrderIndexFilterModel Filter { get; set; } - public int TotalPages { get; set; } - public int OpenCount { get; set; } - public int ClosedCount { get; set; } - public int ResultCount { get; set; } - - public WorkOrderIndexModel( - IEnumerable workOrders, - IEnumerable usersWorkOrders, - WorkOrderIndexFilterModel filter, - int totalPages, - int openCount, - int closedCount) - { - WorkOrders = workOrders; - UsersWorkOrders = usersWorkOrders; - Filter = filter; - TotalPages = totalPages; - OpenCount = openCount; - ClosedCount = closedCount; - ResultCount = OpenCount + ClosedCount; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Models/WorkOrderViewModel.cs b/src/Dsp.Web/Areas/House/Models/WorkOrderViewModel.cs deleted file mode 100644 index ddfbf64a..00000000 --- a/src/Dsp.Web/Areas/House/Models/WorkOrderViewModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dsp.Web.Areas.House.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class WorkOrderViewModel - { - public WorkOrder WorkOrder { get; set; } - public IEnumerable UsersWorkOrders { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/Rooms/Create.cshtml b/src/Dsp.Web/Areas/House/Views/Rooms/Create.cshtml deleted file mode 100644 index e10b4762..00000000 --- a/src/Dsp.Web/Areas/House/Views/Rooms/Create.cshtml +++ /dev/null @@ -1,94 +0,0 @@ -@model Dsp.Data.Entities.Room -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Room"; - ViewBag.Subtitle = ViewBag.Semester; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new {@class = "text-danger"}) - @Html.HiddenFor(model => Model.SemesterId) - -
- @Html.LabelFor(model => model.Name, new {@class = "control-label"}) - @Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control", autocomplete = "off"}}) - @Html.ValidationMessageFor(model => model.Name, "", new {@class = "text-danger"}) -
-
- @Html.LabelFor(model => model.MaxCapacity, new {@class = "control-label"}) - @Html.EditorFor(model => model.MaxCapacity, new {htmlAttributes = new {@class = "form-control", autocomplete = "off"}}) - @Html.ValidationMessageFor(model => model.MaxCapacity, "", new {@class = "text-danger"}) -
- -
- -
- } -
-
-
- - - Semester Selection - -
-

- Rooms are tied to a particular semester. This enables the website to track changes in capacity by room and semester. - The semester you're creating a room for is selected on the rooms page prior to navigating here. - You can check the page subtitle above to verify which semester for which you're creating a room. -

-
-
- - - Generation - -
-

- Whenever you encounter a semester that has no rooms, you should let the website the generate the defaults for you - and then modify from there. This will safe you time as the generation feature will just copy the previous semester's - room information, or if that's not available, generate them based on some predetermined logic. -

-
-
- - - Name - -
-

- All of the house names should be generated already if you followed the other instructions. - - Entering names that are only numerical will not work so talk to - your administrator if you need this. - - Adding additional rooms such as "Rugby House", "Bungalow", or "Xi House" is fine. -

-
-
- - - Maximum Capacity - -
-

- Capacity values range from 0 to 10. Enter a value of 0 if the room capacity is unknown or if it does not matter. -

-
-
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/Rooms/Delete.cshtml b/src/Dsp.Web/Areas/House/Views/Rooms/Delete.cshtml deleted file mode 100644 index 59d1cd7c..00000000 --- a/src/Dsp.Web/Areas/House/Views/Rooms/Delete.cshtml +++ /dev/null @@ -1,41 +0,0 @@ -@model Dsp.Data.Entities.Room -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Room"; -} - -
- -
-
-
-

Are you sure you want to delete this Room?

-
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
-
@Html.DisplayNameFor(model => model.MaxCapacity)
-
@Html.DisplayFor(model => model.MaxCapacity)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/Rooms/Edit.cshtml b/src/Dsp.Web/Areas/House/Views/Rooms/Edit.cshtml deleted file mode 100644 index c9a8ca7c..00000000 --- a/src/Dsp.Web/Areas/House/Views/Rooms/Edit.cshtml +++ /dev/null @@ -1,44 +0,0 @@ -@model Dsp.Data.Entities.Room -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Room"; - ViewBag.Subtitle = Model.Semester; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.RoomId) - @Html.HiddenFor(model => model.SemesterId) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.MaxCapacity, new { @class = "control-label" }) - @Html.EditorFor(model => model.MaxCapacity, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.MaxCapacity, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/Rooms/Index.cshtml b/src/Dsp.Web/Areas/House/Views/Rooms/Index.cshtml deleted file mode 100644 index ec51ed2f..00000000 --- a/src/Dsp.Web/Areas/House/Views/Rooms/Index.cshtml +++ /dev/null @@ -1,622 +0,0 @@ -@using Dsp.Data.Entities -@model Dsp.Web.Areas.House.Models.RoomIndexModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Rooms"; - ViewBag.Subtitle = Model.Semester.ToString(); - ViewBag.Print = true; - var isAdmin = User.IsInRole("Administrator"); - var isHousing = User.IsInRole("House Manager"); - - var room101 = Model.Rooms.SingleOrDefault(r => r.Name == "101"); - var room102 = Model.Rooms.SingleOrDefault(r => r.Name == "102"); - var room103 = Model.Rooms.SingleOrDefault(r => r.Name == "103"); - var room104 = Model.Rooms.SingleOrDefault(r => r.Name == "104"); - var room105 = Model.Rooms.SingleOrDefault(r => r.Name == "105"); - var room201 = Model.Rooms.SingleOrDefault(r => r.Name == "201"); - var room202 = Model.Rooms.SingleOrDefault(r => r.Name == "202"); - var room203 = Model.Rooms.SingleOrDefault(r => r.Name == "203"); - var room204 = Model.Rooms.SingleOrDefault(r => r.Name == "204"); - var room205 = Model.Rooms.SingleOrDefault(r => r.Name == "205"); - var room206 = Model.Rooms.SingleOrDefault(r => r.Name == "206"); - var room207 = Model.Rooms.SingleOrDefault(r => r.Name == "207"); - var room208 = Model.Rooms.SingleOrDefault(r => r.Name == "208"); - var room209 = Model.Rooms.SingleOrDefault(r => r.Name == "209"); - var room210 = Model.Rooms.SingleOrDefault(r => r.Name == "210"); - var room211 = Model.Rooms.SingleOrDefault(r => r.Name == "211"); - var room212 = Model.Rooms.SingleOrDefault(r => r.Name == "212"); - var room213 = Model.Rooms.SingleOrDefault(r => r.Name == "213"); - var room214 = Model.Rooms.SingleOrDefault(r => r.Name == "214"); - var room215 = Model.Rooms.SingleOrDefault(r => r.Name == "215"); - var room216 = Model.Rooms.SingleOrDefault(r => r.Name == "216"); - - // Get all out of house locations to generate buttons for them. - var nonHouseLocations = new List(); - var houseRooms = new List(); - var remainingMembers = Model.Members.Count(m => !m.HasLivingAssignment(Model.sid)); - var membersLivingInHouse = Model.Members.Count(m => m.WasLivingInHouse(Model.sid)); - foreach (var room in Model.Rooms) - { - int value; - if (!int.TryParse(room.Name, out value)) - { - nonHouseLocations.Add(room); - } - else - { - houseRooms.Add(room); - } - } - -} - -@section styles{ - - @Styles.Render("~/content/datetimepicker") -} - -
-
-
- @using (Html.BeginForm("Index", "Rooms", new { area = "House" }, FormMethod.Get, new { @class = "form-inline", role = "form" })) - { -
- @Html.DropDownListFor(m => m.sid, Model.SemesterList, - new - { - @class = "selectpicker", - autocomplete = "off", - id = "semester-dd", - data_live_search = "true" - }) - -
- } -
-
- @if (isAdmin || isHousing) - { - - Add Room - - - if (!Model.Rooms.Any()) - { - - } - using (Html.BeginForm("GenerateRooms", "Rooms", new { area = "House" }, - FormMethod.Post, new { @class = "form-inline", role = "form", id = "generation-form" })) - { - @Html.AntiForgeryToken() - @Html.Hidden("sid", Model.sid) - } - } -
-
-
-
-
-
- Step 1: Select a Member -
-
- Step 2: Set Move In/Out (optional) -
-
- Step 3: Select a Location -
-
-
-
-
-
-
-
- Members - - @remainingMembers|@Model.Members.Count() - - -
-
    - @foreach (var m in Model.Members.OrderBy(m => m.LastName).ThenBy(m => m.FirstName)) - { - var isAssigned = m.Rooms.Any(r => r.Room.SemesterId == Model.Semester.Id); - var color = isAssigned ? "list-group-item-info" : ""; - -
  • - @m.FirstName @m.LastName @m.PledgeClass.PledgeClassName -
  • - } -
-
-
-
-
-
-
- -
- - - - -
-
-
- -
- - - - -
-
-
- @Html.AntiForgeryToken() - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 101 - 102 - 103 - 104 - 105 - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 201 - 202 - 203 - 204 - 205 - 206 - 207 - 208 - 209 - 210 - 211 - 212 - 213 - 214 - 215 - 216 - -
-
-
-
- -
- @foreach (var room in nonHouseLocations) - { - - } -
-
-
-
-
-
- Current Room Assignments - @{ - var remainingSpots = (houseRooms.Sum(r => r.MaxCapacity) - membersLivingInHouse); - } - @if (remainingSpots >= 0) - { - - @remainingSpots - - } - else - { - - +@(remainingSpots*-1) - - } -
-
- - - - - - - @if (isAdmin || isHousing) - { - - } - - - - @if(Model.Rooms.Any()) - { - foreach (var r in Model.Rooms.OrderBy(r => r.Name)) - { - var rowColor = r.Members.Count >= r.MaxCapacity ? "success" : ""; - var overCapacity = r.Members.Count - r.MaxCapacity; - rowColor = r.MaxCapacity == 0 ? "" : rowColor; - - - - - - @if (isAdmin || isHousing) - { - - } - - } - } - else - { - var cols = isAdmin || isHousing ? 4 : 3; - - - - } - -
LocationCapacityMembers
@r.Name - @if (r.MaxCapacity <= 0) - { - n/a - } - else - { - @r.MaxCapacity - if (overCapacity > 0) - { - +@overCapacity - } - } - - @foreach (var m in r.Members.OrderBy(m => m.Member.LastName)) - { - var allSemester = (m.MovedIn == Model.Semester.DateStart && m.MovedOut == Model.Semester.DateEnd); - -
- @m.Member.ToString() - - - @if (allSemester) - { - @: All semester - } - else - { - @m.MovedIn.ToShortDateString() @: to - @(m.MovedOut == null ? "" : m.MovedOut.ToShortDateString()) - } - - - @if (isAdmin || isHousing) - { - using (Html.BeginForm("Unassign", "Rooms", new { aid = m.RoomToMemberId, sid = m.Room.SemesterId }, - FormMethod.Post, new { @class = "pull-right" })) - { - @Html.AntiForgeryToken() - - - } - } -
- } - @if (r.MaxCapacity > 0) - { - for (var i = 0; i < r.MaxCapacity - r.Members.Count; i++) - { -
- Vacancy -
- } - } -
- @Html.ActionLink("Edit", "Edit", new { id = r.RoomId }) - @if (!r.Members.Any()) - { - @: | - @Html.ActionLink("Delete", "Delete", new { id = r.RoomId }) - } -
- No rooms have been created! - @if(isAdmin || isHousing) - { - @: Try auto-generating them with the button above. - } -
-
-
-
-
-
- -@section scripts -{ - @Scripts.Render("~/bundles/datetimepicker") - -} diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Create.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Create.cshtml deleted file mode 100644 index 21b406c9..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Create.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@model Dsp.Data.Entities.WorkOrderPriority -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Work Order Priority"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Delete.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Delete.cshtml deleted file mode 100644 index 65af253e..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Delete.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@model Dsp.Data.Entities.WorkOrderPriority -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Work Order Priority"; -} - -
- -
-
-
-

- Are you sure you want to delete the @Model.Name priority? -

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Edit.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Edit.cshtml deleted file mode 100644 index c046fa7b..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Edit.cshtml +++ /dev/null @@ -1,35 +0,0 @@ -@model Dsp.Data.Entities.WorkOrderPriority -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Work Order Priority"; - ViewBag.Subtitle = Model.Name; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.WorkOrderPriorityId) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Index.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Index.cshtml deleted file mode 100644 index 639d2fe6..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderPriorities/Index.cshtml +++ /dev/null @@ -1,52 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Work Order Priorities"; -} - -
- -
-
-
-
- - - - - - - - - @foreach (var w in Model.OrderBy(p => p.Name == "Low").ThenBy(p => p.Name == "Moderate").ThenBy(p => p.Name == "High").ThenBy(p => p.Name)) - { - - - - - } - -
Name
@w.Name - @Html.ActionLink("Edit", "Edit", new { id = w.WorkOrderPriorityId }) - @if (!w.PriorityChanges.Any()) - { - @: | - @Html.ActionLink("Delete", "Delete", new { id = w.WorkOrderPriorityId }) - } -
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Create.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Create.cshtml deleted file mode 100644 index 5b819797..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Create.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@model Dsp.Data.Entities.WorkOrderStatus -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Work Order Status"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Delete.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Delete.cshtml deleted file mode 100644 index a90130c1..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Delete.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@model Dsp.Data.Entities.WorkOrderStatus -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Work Order Status"; -} - -
- -
-
-
-

- Are you sure you want to delete the @Model.Name status? -

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Edit.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Edit.cshtml deleted file mode 100644 index c00e0722..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Edit.cshtml +++ /dev/null @@ -1,35 +0,0 @@ -@model Dsp.Data.Entities.WorkOrderStatus -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Work Order Status"; - ViewBag.Subtitle = Model.Name; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.WorkOrderStatusId) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Index.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Index.cshtml deleted file mode 100644 index 7e3754ab..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrderStatuses/Index.cshtml +++ /dev/null @@ -1,52 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Work Order Statuses"; -} - -
- -
-
-
-
- - - - - - - - - @foreach (var w in Model.OrderBy(p => p.Name)) - { - - - - - } - -
Name
@w.Name - @Html.ActionLink("Edit", "Edit", new { id = w.WorkOrderStatusId }) - @if (!w.StatusChanges.Any()) - { - @: | - @Html.ActionLink("Delete", "Delete", new { id = w.WorkOrderStatusId }) - } -
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrders/Create.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrders/Create.cshtml deleted file mode 100644 index 90e281a8..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrders/Create.cshtml +++ /dev/null @@ -1,59 +0,0 @@ -@model Dsp.Data.Entities.WorkOrder -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Work Order"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new {@class = "text-danger"}) - -
- @Html.LabelFor(model => model.Title, new {@class = "control-label"}) - @Html.EditorFor(model => model.Title, new {htmlAttributes = new - { - @class = "form-control", autocomplete = "off", - placeholder = "What needs to be done or fixed?" - }}) - @Html.ValidationMessageFor(model => model.Title, "", new {@class = "text-danger"}) -
-
- @Html.LabelFor(model => model.Description, new {@class = "control-label"}) - @Html.EditorFor(model => model.Description, new {htmlAttributes = new {@class = "form-control", rows = 5, autocomplete = "off"}}) - @Html.ValidationMessageFor(model => model.Description, "", new {@class = "text-danger"}) -
- -
- -
- } -
-
-
- Description -
-

- The description should contain as many of the following details as possible: -

    -
  • what is broken
  • -
  • where it is located
  • -
  • why it was broken
  • -
  • what can be done to resolve this (if known)
  • -
  • level of urgency
  • -
-

-
-
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrders/Delete.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrders/Delete.cshtml deleted file mode 100644 index 2cfbbe76..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrders/Delete.cshtml +++ /dev/null @@ -1,31 +0,0 @@ -@model Dsp.Data.Entities.WorkOrder -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Work Order"; -} - -
- -
-
-
-

Are you sure you want to delete the work order "@Model.Title"?

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrders/Edit.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrders/Edit.cshtml deleted file mode 100644 index dd61e6fc..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrders/Edit.cshtml +++ /dev/null @@ -1,45 +0,0 @@ -@model Dsp.Data.Entities.WorkOrder -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Work Order"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.WorkOrderId) - @Html.HiddenFor(model => model.UserId) - -
- @Html.LabelFor(model => model.Title, new { @class = "control-label" }) - @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Description, new { @class = "control-label" }) - @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", rows = 5, autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.Result, new { @class = "control-label" }) - @Html.EditorFor(model => model.Result, new { htmlAttributes = new { @class = "form-control", rows = 5, autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Result, "", new { @class = "text-danger" }) -
-
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrders/Index.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrders/Index.cshtml deleted file mode 100644 index d4487995..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrders/Index.cshtml +++ /dev/null @@ -1,270 +0,0 @@ -@model WorkOrderIndexModel -@using System.Web.Mvc.Html -@using Dsp.Web.Areas.House.Models; -@using Dsp.Web.Extensions; -@using Dsp.Web.Models -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Work Orders"; - - const string newestSortText = "newest"; - const string oldestSortText = "oldest"; - const string mostCommentedSortText = "most-commented"; - const string leastCommentedSortText = "least-commented"; - const string recentlyUpdatedSortText = "recently-updated"; - const string leastRecentlyUpdatedSortText = "least-recently-updated"; - - var sortNewestFilter = new WorkOrderIndexFilterModel(Model.Filter); - var sortOldestFilter = new WorkOrderIndexFilterModel(Model.Filter); - var sortMostCommentedFilter = new WorkOrderIndexFilterModel(Model.Filter); - var sortLeastCommentedFilter = new WorkOrderIndexFilterModel(Model.Filter); - var sortRecentlyUpdatedFilter = new WorkOrderIndexFilterModel(Model.Filter); - var sortLeastRecentlyUpdatedFilter = new WorkOrderIndexFilterModel(Model.Filter); - var previousPageFilter = new WorkOrderIndexFilterModel(Model.Filter); - var nextPageFilter = new WorkOrderIndexFilterModel(Model.Filter); - var openFilter = new WorkOrderIndexFilterModel(Model.Filter); - var closedFilter = new WorkOrderIndexFilterModel(Model.Filter); - - sortNewestFilter.sort = Model.Filter.sort == newestSortText ? "" : newestSortText; - sortOldestFilter.sort = Model.Filter.sort == oldestSortText ? "" : oldestSortText; - sortMostCommentedFilter.sort = Model.Filter.sort == mostCommentedSortText ? "" : mostCommentedSortText; - sortLeastCommentedFilter.sort = Model.Filter.sort == leastCommentedSortText ? "" : leastCommentedSortText; - sortRecentlyUpdatedFilter.sort = Model.Filter.sort == recentlyUpdatedSortText ? "" : recentlyUpdatedSortText; - sortLeastRecentlyUpdatedFilter.sort = Model.Filter.sort == leastRecentlyUpdatedSortText ? "" : leastRecentlyUpdatedSortText; - previousPageFilter.page--; - nextPageFilter.page++; - openFilter.open = !Model.Filter.open; - closedFilter.closed = !Model.Filter.closed; - - var pagerModel = new PagerModel - { - Previous = previousPageFilter, - Incrementer = Model.Filter, - Next = nextPageFilter, - CurrentPage = Model.Filter.page, - PageSize = Model.Filter.pageSize, - ResultCount = Model.ResultCount, - TotalPages = Model.TotalPages - }; - - var elevatedPermissions = - User.IsInRole("Administrator") || - User.IsInRole("House Manager") || - User.IsInRole("ACB House Manager"); -} - -
-
-
-
-
- @using (Html.BeginForm("Index", "WorkOrders", FormMethod.Get, new { @class = "form-inline" })) - { -
- @Html.ActionLink("Open", "Index", "WorkOrders", openFilter, new - { - @class = "btn btn-default " + (ViewBag.Title == "WorkOrders" ? "active" : "") + (Model.Filter.open ? " active" : "") - }) - @Html.ActionLink("Closed", "Index", "WorkOrders", closedFilter, new - { - @class = "btn btn-default " + (ViewBag.Title == "WorkOrders" ? "active" : "") + (Model.Filter.closed ? " active" : "") - }) - -
-
-
- - - - - - -
- } -
-
-
-
- - Create New W.O. - - @if (elevatedPermissions) - { - - - } -
-
-
- @if (Model.WorkOrders.Any()) - { -
-
-
-
- @Model.OpenCount Open - @Model.ClosedCount Closed -
-
- @if (!string.IsNullOrEmpty(Model.Filter.s)) - { - Searched for: @Model.Filter.s - } -
-
-
- - @Html.Partial("~/Views/Shared/_PagerPartial.cshtml", pagerModel) -
- } - else - { -
- No work orders found. -
- } -
-
- @Html.Partial("UsersWorkOrders", Model.UsersWorkOrders) -
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrders/UsersWorkOrders.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrders/UsersWorkOrders.cshtml deleted file mode 100644 index 8f31ca9c..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrders/UsersWorkOrders.cshtml +++ /dev/null @@ -1,31 +0,0 @@ -@using Dsp.Web.Extensions -@using Dsp.Data.Entities -@model IEnumerable - -@if (Model.Any()) -{ -
-
- My open work orders -
- -
-} diff --git a/src/Dsp.Web/Areas/House/Views/WorkOrders/View.cshtml b/src/Dsp.Web/Areas/House/Views/WorkOrders/View.cshtml deleted file mode 100644 index 21fe61b6..00000000 --- a/src/Dsp.Web/Areas/House/Views/WorkOrders/View.cshtml +++ /dev/null @@ -1,244 +0,0 @@ -@using System.Web.Mvc.Html -@using Dsp.Web.Areas.House.Models -@using Dsp.Web.Extensions -@using Microsoft.AspNet.Identity -@model WorkOrderViewModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Work Order"; - ViewBag.Subtitle = "ID: " + Model.WorkOrder.WorkOrderId; - ViewBag.Print = true; - - var currentUserId = User.Identity.GetUserId(); - var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - var createdOn = TimeZoneInfo.ConvertTimeFromUtc(Model.WorkOrder.GetDateTimeCreated(), cstZone); - var elevatedPermissions = - User.IsInRole("Administrator") || - User.IsInRole("House Manager") || - User.IsInRole("ACB House Manager") || - Model.WorkOrder.UserId == currentUserId; - - var comments = Model.WorkOrder.Comments.OrderBy(o => o.SubmittedOn); - var statusChanges = Model.WorkOrder.StatusChanges.OrderBy(o => o.ChangedOn).Skip(1); - var priorityChanges = Model.WorkOrder.PriorityChanges.OrderBy(o => o.ChangedOn); - var discussion = new List(); - discussion.AddRange(comments.Select(c => new WorkOrderDiscussionEntry - { - OccurredOn = c.SubmittedOn, - UserId = c.UserId ?? 0, - Name = c.Member.ToString(), - Title = (DateTime.UtcNow - c.SubmittedOn).ToUserFriendlyString(), - Text = c.Text, - AvatarPath = c.Member.GetAvatarString(), - UserName = c.Member.UserName - })); - discussion.AddRange(statusChanges.Select(s => new WorkOrderDiscussionEntry - { - OccurredOn = s.ChangedOn, - UserId = s.UserId ?? 0, - Name = s.Member.ToString(), - Title = (DateTime.UtcNow - s.ChangedOn).ToUserFriendlyString(), - Text = "Changed status to " + s.Status.Name + ".", - AvatarPath = s.Member.GetAvatarString(), - UserName = s.Member.UserName - })); - discussion.AddRange(priorityChanges.Select(p => new WorkOrderDiscussionEntry - { - OccurredOn = p.ChangedOn, - UserId = p.UserId ?? 0, - Name = p.Member.ToString(), - Title = (DateTime.UtcNow - p.ChangedOn).ToUserFriendlyString(), - Text = "Changed priority to " + p.Priority.Name + ".", - AvatarPath = p.Member.GetAvatarString(), - UserName = p.Member.UserName - })); - - var inProgressPost = new { typeName = "In Progress", id = Model.WorkOrder.WorkOrderId }; - var onHoldPost = new { typeName = "On Hold", id = Model.WorkOrder.WorkOrderId }; - var lowPost = new { typeName = "Low", id = Model.WorkOrder.WorkOrderId }; - var moderatePost = new { typeName = "Moderate", id = Model.WorkOrder.WorkOrderId }; - var highPost = new { typeName = "High", id = Model.WorkOrder.WorkOrderId }; - - var statuses = Model.WorkOrder.StatusChanges.OrderBy(o => o.ChangedOn); - var status = statuses.Last().Status.Name; - var priorities = Model.WorkOrder.PriorityChanges.OrderBy(o => o.ChangedOn); - var priority = priorities.Last().Priority.Name; - var statusLabelColor = status == "On-Hold" - ? "label-default" - : status == "Closed" - ? "label-success" - : status == "Under Review" - ? "label-info" - : status == "In Progress" - ? "label-warning" - : "label-default"; - var priorityLabelColor = priority == "Moderate" - ? "label-warning" - : priority == "High" - ? "label-danger" - : "label-default"; - var timeSinceCreation = (DateTime.UtcNow - Model.WorkOrder.GetDateTimeCreated()).ToUserFriendlyString(); -} - -
-
-
-
- -
- @if (elevatedPermissions) - { -
-
-
- - -
- @if (Model.WorkOrder.GetCurrentStatus() != "Closed") - { -
- - -
- } - - Edit - -
- } -
-
-
-
-
-

- @Model.WorkOrder.Title -
- - - @status - - - @priority Priority - - -

-
-
-

Description

-
-
-
- -
-
-

- - @Model.WorkOrder.Member.ToString() - - created this work order @timeSinceCreation -

-

@Html.Raw(Model.WorkOrder.Description)

-
-
-
-

Discussion

-
-
-

- @discussion.Count comments and changes -

- @if (Model.WorkOrder.GetCurrentStatus() != "Closed") - { -
-
- -
-
- @using (Html.BeginForm("Comment", "WorkOrders", FormMethod.Post)) - { - -
- -
-
- - -
- } -
-
- } - @foreach (var d in discussion.OrderByDescending(o => o.OccurredOn)) - { -
-
- -
-
-

- - @d.Name - - @d.Name - @d.Title -

-

- @Html.Raw(d.Text) -

-
-
- } -
-
-
-
- @Html.Partial("UsersWorkOrders", Model.UsersWorkOrders) -
-
-
diff --git a/src/Dsp.Web/Areas/House/Views/web.config b/src/Dsp.Web/Areas/House/Views/web.config deleted file mode 100644 index b14f78b9..00000000 --- a/src/Dsp.Web/Areas/House/Views/web.config +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Controllers/MealItemsController.cs b/src/Dsp.Web/Areas/Kitchen/Controllers/MealItemsController.cs deleted file mode 100644 index b2045830..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Controllers/MealItemsController.cs +++ /dev/null @@ -1,128 +0,0 @@ -namespace Dsp.Web.Areas.Kitchen.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Exceptions; - using Dsp.Services.Interfaces; - using Dsp.Web.Areas.Kitchen.Models; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using System.Threading.Tasks; - using System.Web.Mvc; - using System.Web.UI; - - [Authorize(Roles = "Alumnus, Active, Neophyte, New")] - public class MealItemsController : BaseController - { - private readonly IMealService _mealService; - private readonly IPositionService _positionService; - - public MealItemsController() - { - var repo = new Repository(_db); - _mealService = new MealService(repo); - _positionService = new PositionService(repo); - } - - public MealItemsController(IMealService mealService, IPositionService positionService) - { - _mealService = mealService; - _positionService = positionService; - } - - [OutputCache(Duration = 2592000, VaryByParam = "none", Location = OutputCacheLocation.Server)] - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailMessage = TempData["FailureMessage"]; - - var mealItems = await _mealService.GetAllItemsAsync(); - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "House Steward"); - var model = new MealItemIndexModel(mealItems, hasElevatedPermissions); - - return View(model); - } - - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(MealItem model) - { - if (!ModelState.IsValid) - { - ViewBag.FailMessage = "There was an error with your submission."; - return View(model); - } - - try - { - await _mealService.CreateItem(model); - - TempData["SuccessMessage"] = $"{model.Name} meal item created!"; - Response.RemoveOutputCacheItem(Url.Action("Index")); - } - catch (MealItemAlreadyExistsException ex) - { - TempData["FailureMessage"] = ex.Message; - } - - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, House Steward")] - public async Task Edit(int id) - { - var model = await _mealService.GetItemByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, House Steward")] - public async Task Edit(MealItem model) - { - if (!ModelState.IsValid) - { - ViewBag.FailMessage = "There was an error with your submission."; - return View(model); - } - - await _mealService.UpdateItem(model); - - TempData["SuccessMessage"] = $"{model.Name} meal item updated!"; - Response.RemoveOutputCacheItem(Url.Action("Index")); - - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, House Steward")] - public async Task Delete(int id) - { - var model = await _mealService.GetItemByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, ActionName("Delete")] - [Authorize(Roles = "Administrator, House Steward")] - public async Task DeleteConfirmed(int id) - { - await _mealService.DeleteItem(id); - - TempData["SuccessMessage"] = $"Meal item deleted!"; - Response.RemoveOutputCacheItem(Url.Action("Index")); - - return RedirectToAction("Index"); - } - } -} diff --git a/src/Dsp.Web/Areas/Kitchen/Controllers/MealPeriodsController.cs b/src/Dsp.Web/Areas/Kitchen/Controllers/MealPeriodsController.cs deleted file mode 100644 index 232a62b5..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Controllers/MealPeriodsController.cs +++ /dev/null @@ -1,116 +0,0 @@ -namespace Dsp.Web.Areas.Kitchen.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Areas.Kitchen.Models; - using Dsp.Web.Controllers; - using Dsp.Web.Extensions; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, House Steward")] - public class MealPeriodsController : BaseController - { - private IMealService _mealService; - - public MealPeriodsController() - { - _mealService = new MealService(new Repository(_db)); - } - - public MealPeriodsController(IMealService mealService) - { - _mealService = mealService; - } - - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailMessage = TempData["FailureMessage"]; - - var mealPeriods = await _mealService.GetAllPeriodsAsync(); - var model = new MealPeriodIndexModel(mealPeriods); - - return View(model); - } - - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(MealPeriod model) - { - if (!ModelState.IsValid) - { - ViewBag.FailMessage = "There was an error with your submission."; - return View(model); - } - - model.StartTime = model.StartTime.FromUtcToCst(); - model.EndTime = model.EndTime.FromUtcToCst(); - - await _mealService.CreatePeriod(model); - - TempData["SuccessMessage"] = $"Meal period created!"; - - return RedirectToAction("Index"); - } - - public async Task Edit(int id) - { - var model = await _mealService.GetPeriodByIdAsync(id); - - if (model == null) return HttpNotFound(); - - model.StartTime = model.StartTime.FromUtcToCst(); - model.EndTime = model.EndTime.FromUtcToCst(); - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(MealPeriod model) - { - if (!ModelState.IsValid) - { - ViewBag.FailMessage = "There was an error with your submission."; - return View(model); - } - - model.StartTime = model.StartTime.FromUtcToCst(); - model.EndTime = model.EndTime.FromUtcToCst(); - - await _mealService.UpdatePeriod(model); - - TempData["SuccessMessage"] = $"{model.Name} meal period updated!"; - - return RedirectToAction("Index"); - } - - public async Task Delete(int id) - { - var model = await _mealService.GetPeriodByIdAsync(id); - - if (model == null) return HttpNotFound(); - - model.StartTime = model.StartTime.FromUtcToCst(); - model.EndTime = model.EndTime.FromUtcToCst(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, ActionName("Delete")] - public async Task DeleteConfirmed(int id) - { - await _mealService.DeletePeriod(id); - - TempData["SuccessMessage"] = $"Meal period deleted!"; - - return RedirectToAction("Index"); - } - } -} diff --git a/src/Dsp.Web/Areas/Kitchen/Controllers/MealsController.cs b/src/Dsp.Web/Areas/Kitchen/Controllers/MealsController.cs deleted file mode 100644 index 28136318..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Controllers/MealsController.cs +++ /dev/null @@ -1,183 +0,0 @@ -namespace Dsp.Web.Areas.Kitchen.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Exceptions; - using Dsp.Services.Interfaces; - using Dsp.Web.Areas.Kitchen.Models; - using Dsp.Web.Controllers; - using Dsp.Web.Extensions; - using Microsoft.AspNet.Identity; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - using System.Web.Security; - - [Authorize(Roles = "Alumnus, Active, Neophyte, New, Affiliate")] - public class MealsController : BaseController - { - private readonly IMealService _mealService; - private readonly IPositionService _positionService; - - public MealsController() - { - var repo = new Repository(_db); - _mealService = new MealService(repo); - _positionService = new PositionService(repo); - } - - public MealsController(IMealService mealService, IPositionService positionService) - { - _mealService = mealService; - _positionService = positionService; - } - - public async Task Index(int week = 0) - { - var nowUtc = DateTime.UtcNow.AddDays(week * 7); - var weekOfYear = DateTimeExtensions.GetWeekOfYear(nowUtc); - var startDate = DateTimeExtensions.FirstDateOfWeek(nowUtc.Year, weekOfYear); - var endDate = startDate.AddDays(7); - - var periods = await _mealService.GetAllPeriodsAsync(); - var mpItems = await _mealService.GetMealItemToPeriodsAsync(startDate, endDate); - var plates = await _mealService.GetMealPlatesAsync(startDate, endDate); - var userRoles = Roles.GetRolesForUser(); - var hasElevatedPermissions = userRoles.Any(r => r == "Administrator" || r == "House Steward"); - - var model = new MealIndexModel(periods, mpItems, plates, startDate, hasElevatedPermissions) - { - WeekOffset = week - }; - if (hasElevatedPermissions) - { - model.MealItems = await _mealService.GetAllItemsAsync(); - } - - return View(model); - } - - public async Task Upvote(int id, int week = 0) - { - var vote = new MealItemVote - { - UserId = User.Identity.GetUserId(), - MealItemId = id, - IsUpvote = true - }; - await _mealService.ProcessVote(vote); - - return new HttpStatusCodeResult(HttpStatusCode.OK); - } - - public async Task Downvote(int id, int week = 0) - { - var vote = new MealItemVote - { - UserId = User.Identity.GetUserId(), - MealItemId = id, - IsUpvote = false - }; - await _mealService.ProcessVote(vote); - - return new HttpStatusCodeResult(HttpStatusCode.OK); - } - - [HttpPost] - public async Task AddPlate(DateTime dateTime, string type, int week = 0) - { - var plate = new MealPlate - { - PlateDateTime = dateTime, - SignedUpOn = DateTime.UtcNow, - UserId = User.Identity.GetUserId(), - Type = type - }; - - await _mealService.CreatePlate(plate); - - return RedirectToAction("Index", new { week }); - } - - [HttpPost] - public async Task RemovePlate(int id, int week = 0) - { - var plate = await _mealService.GetPlateByIdAsync(id); - - if (plate == null) return HttpNotFound(); - - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "House Steward"); - if (!hasElevatedPermissions && plate.UserId != userId) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - - await _mealService.DeletePlate(id); - - return RedirectToAction("Index", new { week }); - } - - [HttpPost, Authorize(Roles = "Administrator, House Steward")] - public async Task AddMealItemsToPeriod(MealItemToPeriod[] model) - { - var response = new List(); - var itemsWereRemoved = false; - try - { - foreach (var mealItemToPeriod in model) - { - try - { - await _mealService.CreateItemToPeriod(mealItemToPeriod); - var mealItem = await _mealService.GetItemByIdAsync(mealItemToPeriod.MealItemId); - - var responseData = new MealItemToPeriodModel - { - Id = mealItemToPeriod.Id, - MealItemId = mealItemToPeriod.MealItemId, - MealPeriodId = mealItemToPeriod.MealPeriodId, - MealItemName = mealItem.Name, - }; - response.Add(responseData); - itemsWereRemoved = true; - } - catch (MealItemAlreadyAssignedException) - { - - } - } - - if (itemsWereRemoved) Response.RemoveOutputCacheItem(Url.Action("Index")); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Failed to add meal items to period!"); - } - - return Json(response); - } - - [HttpDelete, Authorize(Roles = "Administrator, House Steward")] - public async Task DeleteMealItemFromPeriod(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Improper id received!"); - - try - { - await _mealService.DeleteItemFromPeriod(id); - } - catch (Exception) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Failed to delete meal item from period!"); - } - - return new HttpStatusCodeResult(HttpStatusCode.OK); - } - } -} diff --git a/src/Dsp.Web/Areas/Kitchen/KitchenAreaRegistration.cs b/src/Dsp.Web/Areas/Kitchen/KitchenAreaRegistration.cs deleted file mode 100644 index f20ff718..00000000 --- a/src/Dsp.Web/Areas/Kitchen/KitchenAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Kitchen -{ - public class KitchenAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Kitchen"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Kitchen_default", - "Kitchen/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Models/CreateMealModel.cs b/src/Dsp.Web/Areas/Kitchen/Models/CreateMealModel.cs deleted file mode 100644 index 5579a8b3..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Models/CreateMealModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dsp.Web.Areas.Kitchen.Models -{ - using System.Collections.Generic; - using System.Web.Mvc; - - public class CreateMealModel - { - public int[] SelectedMealItemIds { get; set; } - public IEnumerable MealItems { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Models/EditMealModel.cs b/src/Dsp.Web/Areas/Kitchen/Models/EditMealModel.cs deleted file mode 100644 index 6b202f85..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Models/EditMealModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Dsp.Web.Areas.Kitchen.Models -{ - using System.Collections.Generic; - using System.Web.Mvc; - - public class EditMealModel - { - public int MealId { get; set; } - public int[] SelectedMealItemIds { get; set; } - public IEnumerable MealItems { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Models/MealIndexModel.cs b/src/Dsp.Web/Areas/Kitchen/Models/MealIndexModel.cs deleted file mode 100644 index 6a0a0dda..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Models/MealIndexModel.cs +++ /dev/null @@ -1,135 +0,0 @@ -namespace Dsp.Web.Areas.Kitchen.Models -{ - using Dsp.Data.Entities; - using Dsp.Web.Extensions; - using System; - using System.Collections.Generic; - using System.Linq; - - public class MealIndexModel - { - public int WeekOffset { get; set; } - public DateTime StartOfWeek { get; set; } - public IEnumerable MealPeriods { get; set; } - public IEnumerable MealPeriodItems { get; set; } - public IEnumerable Plates { get; set; } - public IEnumerable MealItems { get; set; } - public IList Rows { get; set; } - public IList DistinctDates { get; set; } - public DateTime StartDate { get; set; } - - public bool HasElevatedPermissions { get; set; } - public bool ShowEditScheduleLink { get; set; } - public bool ShowMealItemsLink { get; set; } - public bool ShowMealPeriodsLink { get; set; } - - public bool ShowSunday { get; set; } - public bool ShowSaturday { get; set; } - - public MealIndexModel( - IEnumerable mealPeriods, - IEnumerable mealPeriodItems, - IEnumerable plates, - DateTime startDate, - bool hasElevatedPermissions = false) - { - MealPeriods = mealPeriods; - MealPeriodItems = mealPeriodItems; - Plates = plates; - Rows = new List(); - DistinctDates = new List(); - MealItems = new List(); - StartDate = startDate; - - HasElevatedPermissions = hasElevatedPermissions; - ShowEditScheduleLink = HasElevatedPermissions; - ShowMealItemsLink = false; - ShowMealPeriodsLink = HasElevatedPermissions; - - if (!mealPeriods.Any()) return; - - var orderedMealPeriods = MealPeriods.OrderBy(m => m.StartTime).ToList(); - var orderedMealPeriodItems = mealPeriodItems.OrderBy(m => m.Date).ThenBy(m => m.MealPeriod.StartTime).ToList(); - var firstMpi = orderedMealPeriodItems.FirstOrDefault(); - var lastMpi = orderedMealPeriodItems.LastOrDefault(); - if (firstMpi != null) ShowSunday = firstMpi.Date.DayOfWeek == DayOfWeek.Sunday; - if (lastMpi != null) ShowSaturday = lastMpi.Date.DayOfWeek == DayOfWeek.Saturday; - - for (var c = 0; c < 7; c++) - { - var date = startDate.AddDays(c); - if (!ShowSunday && date.DayOfWeek == DayOfWeek.Sunday) continue; - if (!ShowSaturday && date.DayOfWeek == DayOfWeek.Saturday) continue; - DistinctDates.Add(startDate.AddDays(c)); - } - - // Just enumerate all table placeholders - for (var p = 0; p < orderedMealPeriods.Count; p++) - { - var period = orderedMealPeriods[p]; - var row = new MealScheduleRow(this, period); - - for (var d = 0; d < DistinctDates.Count; d++) - { - var entry = new MealScheduleEntry(row, DistinctDates[d]); - row.Columns.Add(entry); - } - Rows.Add(row); - } - - // Fill in meal items iterating across each column, then down through each period, to follow ordering of meal items - var i = 0; - for (var d = 0; d < DistinctDates.Count; d++) - { - for (var p = 0; p < orderedMealPeriods.Count; p++) - { - var period = orderedMealPeriods[p]; - while (i < orderedMealPeriodItems.Count) - { - var pItem = orderedMealPeriodItems[i]; - - if (pItem.MealPeriodId != period.Id || pItem.Date != DistinctDates[d]) break; - - Rows[p].Columns[d].Items.Add(pItem); - i++; - } - } - } - } - } - - public class MealScheduleRow - { - private readonly MealIndexModel _parent; - - public MealPeriod Period { get; set; } - public IList Columns { get; set; } - - public MealScheduleRow( - MealIndexModel parent, - MealPeriod period) - { - _parent = parent; - Period = period; - Columns = new List(); - - Period.StartTime = Period.StartTime.FromUtcToCst(); - Period.EndTime = Period.EndTime.FromUtcToCst(); - } - } - - public class MealScheduleEntry - { - private readonly MealScheduleRow _parent; - - public DateTime Date { get; set; } - public IList Items { get; set; } - - public MealScheduleEntry(MealScheduleRow parent, DateTime date) - { - _parent = parent; - Date = date; - Items = new List(); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Models/MealItemIndexModel.cs b/src/Dsp.Web/Areas/Kitchen/Models/MealItemIndexModel.cs deleted file mode 100644 index cda82e83..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Models/MealItemIndexModel.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Dsp.Data.Entities; -using Dsp.Web.Models; -using System.Collections.Generic; -using System.Linq; - -namespace Dsp.Web.Areas.Kitchen.Models -{ - public class MealItemIndexModel : BaseViewModel - { - public IEnumerable MealItems { get; set; } - public IList TableContents { get; set; } - public bool AllowCreate { get; set; } - - public MealItemIndexModel( - IEnumerable mealItems, - bool hasElevatedPermissions = false) - { - MealItems = mealItems; - HasElevatedPermissions = hasElevatedPermissions; - TableContents = new List(); - foreach (var e in MealItems) - { - TableContents.Add(new MealItemContent(this, e)); - } - TableContents = TableContents - .OrderByDescending(e => e.VoteDifferential) - .ThenBy(e => e.Entity.Name) - .ToList(); - AllowCreate = true; - } - - public class MealItemContent - { - private readonly MealItemIndexModel _parent; - - public MealItem Entity { get; set; } - public bool AllowEdit { get; set; } - public bool AllowDelete { get; set; } - public int Upvotes { get; set; } - public int Downvotes { get; set; } - public int VoteDifferential { get; set; } - - public MealItemContent(MealItemIndexModel parent, MealItem entity) - { - _parent = parent; - - Entity = entity; - AllowEdit = true; - AllowDelete = !entity.MealPeriods.Any(); - Upvotes = entity.Upvotes; - Downvotes = entity.Downvotes; - VoteDifferential = Upvotes - Downvotes; - } - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Models/MealItemToPeriodModel.cs b/src/Dsp.Web/Areas/Kitchen/Models/MealItemToPeriodModel.cs deleted file mode 100644 index f0d26696..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Models/MealItemToPeriodModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Dsp.Web.Areas.Kitchen.Models -{ - internal class MealItemToPeriodModel - { - public int Id { get; set; } - public int MealItemId { get; set; } - public int MealPeriodId { get; set; } - public string MealItemName { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Models/MealPeriodIndexModel.cs b/src/Dsp.Web/Areas/Kitchen/Models/MealPeriodIndexModel.cs deleted file mode 100644 index bcd4add7..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Models/MealPeriodIndexModel.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Dsp.Data.Entities; -using Dsp.Web.Extensions; -using System.Collections.Generic; -using System.Linq; - -namespace Dsp.Web.Areas.Kitchen.Models -{ - public class MealPeriodIndexModel - { - public IEnumerable MealPeriods { get; set; } - public IList TableContents { get; set; } - - public MealPeriodIndexModel(IEnumerable mealPeriods) - { - MealPeriods = mealPeriods; - TableContents = new List(); - foreach (var e in MealPeriods) - { - TableContents.Add(new MealPeriodContent(e)); - } - } - - public class MealPeriodContent - { - public MealPeriod Entity { get; set; } - public bool AllowEdit { get; set; } - public bool AllowDelete { get; set; } - - public MealPeriodContent(MealPeriod entity) - { - Entity = entity; - entity.StartTime = entity.StartTime.FromUtcToCst(); - entity.EndTime = entity.StartTime.FromUtcToCst(); - AllowEdit = true; - AllowDelete = !entity.MealItems.Any(); - } - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Create.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Create.cshtml deleted file mode 100644 index 260d1e23..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Create.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@model Dsp.Data.Entities.MealItem -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Meal Item"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- - - } -
-
- -
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Delete.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Delete.cshtml deleted file mode 100644 index ffc48af9..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Delete.cshtml +++ /dev/null @@ -1,36 +0,0 @@ -@model Dsp.Data.Entities.MealItem -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Meal Item"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
-
-
Name
-
@Model.Name
-
-
- - - } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Edit.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Edit.cshtml deleted file mode 100644 index 8bc0b31b..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Edit.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@model Dsp.Data.Entities.MealItem -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Meal Item"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.Id) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- - - } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Index.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Index.cshtml deleted file mode 100644 index d016104d..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealItems/Index.cshtml +++ /dev/null @@ -1,74 +0,0 @@ -@model MealItemIndexModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Meal Items"; -} - -
-
- -
- @if (Model.AllowCreate) - { -

- @Html.ActionLink("Create New", "Create", "MealItems", new { area = "Kitchen" }, new { @class = "btn btn-sm btn-success" }) -

- } -
-
-
-
-
-
- - - - - - @if (Model.HasElevatedPermissions) - { - - } - - - - @foreach (var item in Model.TableContents) - { - var entity = item.Entity; - - - - @if (Model.HasElevatedPermissions) - { - - } - - } - -
NameScore
@entity.Name - - @item.VoteDifferential - - - @if (item.AllowEdit) - { - @Html.ActionLink("Edit", "Edit", new { id = entity.Id }) - } - @if (item.AllowEdit && item.AllowDelete) - { - @: | - } - @if (item.AllowDelete) - { - @Html.ActionLink("Delete", "Delete", new { id = entity.Id }) - } -
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Create.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Create.cshtml deleted file mode 100644 index c7edc06d..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Create.cshtml +++ /dev/null @@ -1,82 +0,0 @@ -@model Dsp.Data.Entities.MealPeriod -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Meal Period"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.StartTime, new { @class = "control-label" }) -
- @Html.EditorFor(model => model.StartTime, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.StartTime, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.EndTime, new { @class = "control-label" }) -
- @Html.EditorFor(model => model.EndTime, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.EndTime, "", new { @class = "text-danger" }) -
- - - } -
-
-
-
- Regarding Start and End Times -
-
- Ignore setting the date portion of the Start and End Times, as it is NOT used. - You only need to worry about the time portion.

- The times are used to just inform members looking at the meal schedule what time a specific meal period starts.

- I.e., Breakfast (name) may be served from 8AM (start time) to 10AM (end time). -
-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Delete.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Delete.cshtml deleted file mode 100644 index 9becf2cf..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Delete.cshtml +++ /dev/null @@ -1,40 +0,0 @@ -@model Dsp.Data.Entities.MealPeriod -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Meal Period"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
-
-
Name
-
@Model.Name
-
Start Time
-
@Model.StartTime
-
End Time
-
@Model.EndTime
-
-
- - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Edit.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Edit.cshtml deleted file mode 100644 index 4d13cd3d..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Edit.cshtml +++ /dev/null @@ -1,83 +0,0 @@ -@model Dsp.Data.Entities.MealPeriod -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Meal Period"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.Id) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.StartTime, new { @class = "control-label" }) -
- @Html.EditorFor(model => model.StartTime, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.StartTime, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.EndTime, new { @class = "control-label" }) -
- @Html.EditorFor(model => model.EndTime, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.EndTime, "", new { @class = "text-danger" }) -
- - - } -
-
-
-
- Regarding Start and End Times -
-
- Ignore setting the date portion of the Start and End Times, as it is NOT used. - You only need to worry about the time portion.

- The times are used to just inform members looking at the meal schedule what time a specific meal period starts.

- I.e., Breakfast (name) may be served from 8AM (start time) to 10AM (end time). -
-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Index.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Index.cshtml deleted file mode 100644 index 15031283..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/MealPeriods/Index.cshtml +++ /dev/null @@ -1,63 +0,0 @@ -@model MealPeriodIndexModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Meal Periods"; -} - -
-
- -
-

- @Html.ActionLink("Create New", "Create", "MealPeriods", new { area = "Kitchen" }, new { @class = "btn btn-sm btn-success" }) -

-
-
-
-
-
-
- - - - - - - - - - - @foreach (var item in Model.TableContents) - { - var entity = item.Entity; - - - - - - - } - -
NameStart TimeEnd Time
@entity.Name@entity.StartTime.ToShortTimeString()@entity.EndTime.ToShortTimeString() - @if (item.AllowEdit) - { - @Html.ActionLink("Edit", "Edit", new { id = entity.Id }) - } - @if (item.AllowEdit && item.AllowDelete) - { - @: | - } - @if (item.AllowDelete) - { - @Html.ActionLink("Delete", "Delete", new { id = entity.Id }) - } -
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Kitchen/Views/Meals/Index.cshtml b/src/Dsp.Web/Areas/Kitchen/Views/Meals/Index.cshtml deleted file mode 100644 index fba9bd7e..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/Meals/Index.cshtml +++ /dev/null @@ -1,358 +0,0 @@ -@using Microsoft.AspNet.Identity -@model MealIndexModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Meal Schedule"; -} -@Scripts.Render("~/bundles/mustache") - -
-
-
- -
-
- @if (Model.HasElevatedPermissions) - { -

- Items - Periods -

- } -
-
-
-
-
-
- - - @Model.StartDate.ToShortDateString() to - @Model.StartDate.AddDays(6).ToShortDateString() - - - - - - - - - -
-
- - - - - @foreach (var c in Model.DistinctDates) - { - - } - - - - @foreach (var r in Model.Rows) - { - var counter = 0; - - - @foreach (var c in r.Columns) - { - var entryDateTime = new DateTime(c.Date.Year, c.Date.Month, c.Date.Day, r.Period.StartTime.Hour, r.Period.StartTime.Minute, 0); - - counter++; - - } - - } - -
- - @c.ToShortDateString() - (@c.ToString("ddd")) - -
- - @r.Period.Name
- @r.Period.StartTime.ToShortTimeString() - @r.Period.EndTime.ToShortTimeString() -
-
- @foreach (var i in c.Items) - { -
-
- @i.MealItem.Name - @if (Model.HasElevatedPermissions) - { - - } -
-
- } -
-
-
- @using (Html.BeginForm("AddPlate", "Meals", new { dateTime = entryDateTime, type = "Late", week = Model.WeekOffset }, - FormMethod.Post, new { style = "display:inline" })) - { - - } - @using (Html.BeginForm("AddPlate", "Meals", new { dateTime = entryDateTime, type = "+1", week = Model.WeekOffset }, - FormMethod.Post, new { style = "display:inline" })) - { - - } - @using (Html.BeginForm("AddPlate", "Meals", new { dateTime = entryDateTime, type = "Guest", week = Model.WeekOffset }, - FormMethod.Post, new { style = "display:inline" })) - { - - } - @if (Model.HasElevatedPermissions) - { - - } -
-
-
-
-
-
-
-
-
-
-
- Plate Signups -
-
- - - - - @foreach (var c in Model.DistinctDates) - { - - } - - - - @foreach (var r in Model.Rows) - { - - - @foreach (var c in r.Columns) - { - var entryDateTime = new DateTime(c.Date.Year, c.Date.Month, c.Date.Day, r.Period.StartTime.Hour, r.Period.StartTime.Minute, 0); - var plates = Model.Plates.Where(p => p.PlateDateTime == entryDateTime).OrderBy(o => o.Member.FirstName); - - - } - - } - -
- - @c.ToShortDateString() - (@c.ToString("ddd")) - -
- - @r.Period.Name
- @r.Period.StartTime.ToShortTimeString() - @r.Period.EndTime.ToShortTimeString() -
-
- @foreach (var p in plates) - { -
-
- - @p.Member.FirstName @p.Member.LastName[0]. (@p.Type) - @if (!string.IsNullOrEmpty(p.Member.DietaryInstructions)) - { - @:(: - @p.Member.DietaryInstructions@:) - } - - @if (User.Identity.GetUserId() == p.UserId) - { - using (Html.BeginForm("RemovePlate", "Meals", new { id = p.Id, week = Model.WeekOffset }, - FormMethod.Post, new { style = "display:inline" })) - { - @Html.AntiForgeryToken() - - } - } -
-
- } -
-
- -
-
-
-
- - - - - - -@section scripts { - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Kitchen/Views/web.config b/src/Dsp.Web/Areas/Kitchen/Views/web.config deleted file mode 100644 index 35de88a0..00000000 --- a/src/Dsp.Web/Areas/Kitchen/Views/web.config +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Laundry/Controllers/ScheduleController.cs b/src/Dsp.Web/Areas/Laundry/Controllers/ScheduleController.cs deleted file mode 100644 index 6a223f02..00000000 --- a/src/Dsp.Web/Areas/Laundry/Controllers/ScheduleController.cs +++ /dev/null @@ -1,103 +0,0 @@ -namespace Dsp.Web.Areas.Laundry.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Exceptions; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Threading.Tasks; - using System.Web.Mvc; - - public class ScheduleController : BaseController - { - private ILaundryService _laundryService; - private IPositionService _positionService; - - public ScheduleController() - { - _laundryService = new LaundryService(new Repository(_db)); - _positionService = new PositionService(new Repository(_db)); - } - - public ScheduleController(ILaundryService laundryService) - { - _laundryService = laundryService; - } - - [HttpGet, Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailMessage = TempData["FailureMessage"]; - - // Build Laundry Schedule - var nowCst = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, "Central Standard Time"); - var existingSignups = await _laundryService.GetSignups(nowCst); - var schedule = new LaundrySchedule(nowCst, 7, 2, existingSignups); - - var model = new LaundryIndexModel - { - Schedule = schedule - }; - return View(model); - } - - [HttpPost, Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public async Task Reserve(LaundrySignup entity) - { - if (!ModelState.IsValid) - { - TempData["FailureMessage"] = "There was an unknown error with your reservation. " + - "Contact your administrator if the problem persists."; - Response.RemoveOutputCacheItem(Url.Action("Index")); - return RedirectToAction("Index"); - } - - entity.UserId = User.Identity.GetUserId(); - try - { - bool isHouseSteward = await _positionService.UserHasPositionPowerAsync(entity.UserId, "House Steward"); - await _laundryService.Reserve(entity, isHouseSteward ? 4 : 2); - TempData["SuccessMessage"] = "You have reserved the laundry room for the following time: " + entity.DateTimeShift; - } - catch (LaundrySignupsExceededException ex) - { - TempData["FailureMessage"] = ex.Message; - } - catch (LaundrySignupAlreadyExistsException ex) - { - TempData["FailureMessage"] = ex.Message; - } - - Response.RemoveOutputCacheItem(Url.Action("Index")); - return RedirectToAction("Index"); - } - - [HttpPost, Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public async Task Cancel(LaundrySignup entity) - { - entity.UserId = User.Identity.GetUserId(); - try - { - await _laundryService.Cancel(entity); - TempData["SuccessMessage"] = "You cancelled your reservation for: " + entity.DateTimeShift; - } - catch (LaundrySignupNotFoundException ex) - { - TempData["FailureMessage"] = ex.Message; - } - catch (LaundrySignupPermissionException ex) - { - TempData["FailureMessage"] = ex.Message; - } - - Response.RemoveOutputCacheItem(Url.Action("Index")); - return RedirectToAction("Index"); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Laundry/LaundryAreaRegistration.cs b/src/Dsp.Web/Areas/Laundry/LaundryAreaRegistration.cs deleted file mode 100644 index 2732abd4..00000000 --- a/src/Dsp.Web/Areas/Laundry/LaundryAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Laundry -{ - public class LaundryAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Laundry"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Laundry_default", - "Laundry/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Laundry/Models/LaundryIndexModel.cs b/src/Dsp.Web/Areas/Laundry/Models/LaundryIndexModel.cs deleted file mode 100644 index 741003f6..00000000 --- a/src/Dsp.Web/Areas/Laundry/Models/LaundryIndexModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Dsp.Web.Areas.Laundry.Models -{ - public class LaundryIndexModel - { - public LaundrySchedule Schedule { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Laundry/Models/LaundrySchedule.cs b/src/Dsp.Web/Areas/Laundry/Models/LaundrySchedule.cs deleted file mode 100644 index 217b4b46..00000000 --- a/src/Dsp.Web/Areas/Laundry/Models/LaundrySchedule.cs +++ /dev/null @@ -1,69 +0,0 @@ -namespace Dsp.Web.Areas.Laundry.Models -{ - using Dsp.Data.Entities; - using System; - using System.Collections.Generic; - using System.Linq; - - public class LaundrySchedule - { - private const int DayLength = 24; - private readonly IEnumerable _existingSignups; - - public int WindowSize { get; set; } - public int SlotSize { get; set; } - public DateTime Now { get; set; } - public DateTime StartOfToday { get; set; } - public List Rows { get; set; } - - public LaundrySchedule(DateTime now, int windowSize, int slotSize, IEnumerable existingSignups) - { - Now = now; - StartOfToday = now.Date; - // Ensure that windowSize is from 1-7 days. - WindowSize = windowSize >= 1 && windowSize <= 7 ? windowSize : 7; - // Ensure that slotSize is from 2-24 and a multiple of 2. - SlotSize = slotSize % 2 == 0 && slotSize <= 24 && slotSize >= 2 ? slotSize : 2; - _existingSignups = existingSignups; - Rows = new List(); - PopulateSchedule(); - } - - private void PopulateSchedule() - { - var rowCount = DayLength / SlotSize; - for (var h = 0; h < rowCount; h++) // Hours in day = DayLength/SlotSize = # of rows - { - var row = new LaundryRow(); - var firstTimeSlot = StartOfToday.AddHours(h * SlotSize); - row.Label = firstTimeSlot.ToString("hh:mm tt") + " to " + - firstTimeSlot.AddHours(SlotSize).AddMinutes(-1).ToString("hh:mm tt"); - for (var d = 0; d < WindowSize; d++) // Days of week = WindowSize = # of signups in row - { - var slot = StartOfToday.AddHours(h * SlotSize + d * DayLength); - var signup = new LaundrySignup { DateTimeShift = slot }; - var existingSignup = _existingSignups.SingleOrDefault(s => s.DateTimeShift == slot); - if (existingSignup != null) - { - signup.DateTimeSignedUp = existingSignup.DateTimeSignedUp; - signup.UserId = existingSignup.UserId; - signup.Member = existingSignup.Member; - } - row.Signups.Add(signup); - } - Rows.Add(row); - } - } - - public class LaundryRow - { - public string Label { get; set; } - public List Signups { get; set; } - - public LaundryRow() - { - Signups = new List(); - } - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Laundry/Views/Schedule/Index.cshtml b/src/Dsp.Web/Areas/Laundry/Views/Schedule/Index.cshtml deleted file mode 100644 index a126c42f..00000000 --- a/src/Dsp.Web/Areas/Laundry/Views/Schedule/Index.cshtml +++ /dev/null @@ -1,121 +0,0 @@ -@using Dsp.Data.Entities -@using Dsp.Web.Areas.Laundry.Models -@using Microsoft.AspNet.Identity -@using System.Web.Mvc.Html -@model LaundryIndexModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Laundry Schedule"; - var currentUserId = User.Identity.GetUserId(); -} -@section AdditionalMeta{ - -} - -
-
-
-
-
- - - @Model.Schedule.StartOfToday.ToShortDateString() to - @Model.Schedule.StartOfToday.AddDays(Model.Schedule.WindowSize).ToShortDateString() - | - - - @Model.Schedule.Now.ToShortTimeString() CST - -
-
- - @if (Model.Schedule.Rows.Any()) - { - - - - @foreach (var timeSlot in Model.Schedule.Rows.First().Signups) - { - - } - - - } - @foreach (var row in Model.Schedule.Rows) - { - - - - @foreach (var slot in row.Signups) - { - var isDstChange = slot.DstChangeOccursDuringSlot(Model.Schedule.SlotSize); - var dstMessage = "Due to DST changes, this slot is actually " + - slot.GetSlotSizeActualSize(Model.Schedule.SlotSize) + " hour(s) long."; - var cellColor = - slot.DateTimeShift <= Model.Schedule.Now && - Model.Schedule.Now < slot.DateTimeShift.AddHours(Model.Schedule.SlotSize) - ? "warning" : ""; - - - } - - } -
Time Slot - @timeSlot.DateTimeShift.DayOfWeek.ToString().Substring(0, 3) -
- @row.Label - - @if (slot.Member != null) - { - - - // Reserved by current user - if (slot.UserId == currentUserId && (slot.DateTimeShift - Model.Schedule.Now).TotalHours >= 0) - { - using (Html.BeginForm("Cancel", "Schedule", slot, FormMethod.Post, new { style="display:inline" })) - { - - } - } - if (isDstChange) - { - - } - } - // Unreserved; allows sign ups up to an hour into the slot. - else if ((slot.DateTimeShift - Model.Schedule.Now).TotalHours > -1) - { - using (Html.BeginForm("Reserve", "Schedule", new LaundrySignup { DateTimeShift = slot.DateTimeShift }, FormMethod.Post, new { @class = "form-inline" })) - { - - } - } -
-
- -
-
-
-
diff --git a/src/Dsp.Web/Areas/Laundry/Views/web.config b/src/Dsp.Web/Areas/Laundry/Views/web.config deleted file mode 100644 index 8dae3941..00000000 --- a/src/Dsp.Web/Areas/Laundry/Views/web.config +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Controllers/AccountController.cs b/src/Dsp.Web/Areas/Members/Controllers/AccountController.cs deleted file mode 100644 index 99d5bd36..00000000 --- a/src/Dsp.Web/Areas/Members/Controllers/AccountController.cs +++ /dev/null @@ -1,1138 +0,0 @@ -namespace Dsp.Web.Areas.Members.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using Microsoft.AspNet.Identity.Owin; - using Microsoft.Owin.Security; - using Models; - using System; - using System.Drawing; - using System.Drawing.Drawing2D; - using System.Drawing.Imaging; - using System.IO; - using System.Linq; - using System.Net; - using System.Text.RegularExpressions; - using System.Threading.Tasks; - using System.Web; - using System.Web.Mvc; - using System.Web.Security; - - [Authorize, RequireHttps] - public class AccountController : BaseController - { - private readonly IPositionService _positionService; - - public AccountController() - { - var repo = new Repository(_db); - _positionService = new PositionService(repo); - } - - public AccountController(IPositionService positionService) - { - _positionService = positionService; - } - - [HttpGet] - public async Task Index(string userName, ManageMessageId? accountMessage) - { - switch (accountMessage) - { - case ManageMessageId.ExternalLoginAddSuccess: - case ManageMessageId.ChangePasswordSuccess: - case ManageMessageId.ExternalLoginRemoveSuccess: - case ManageMessageId.SetPasswordSuccess: - ViewBag.SuccessMessage = GetManageMessage(accountMessage); - break; - case ManageMessageId.ChangePasswordFailure: - case ManageMessageId.ChangePasswordMismatch: - case ManageMessageId.ChangePasswordWrongOriginal: - case ManageMessageId.SetPasswordFailure: - ViewBag.FailMessage = GetManageMessage(accountMessage); - break; - } - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - if (string.IsNullOrEmpty(userName)) userName = User.Identity.GetUserName(); - - var member = await UserManager.FindByNameAsync(userName); - var thisSemester = await GetThisSemesterAsync(); - var model = new AccountInformationModel - { - Member = member, - CurrentSemester = thisSemester, - ThisSemesterCourses = member.ClassesTaken - .Where(c => c.SemesterId == thisSemester.Id) - }; - ViewBag.UserName = userName; - - return View(model); - } - - public async Task Manage(ManageMessageId? message, string userName) - { - ViewBag.FailMessage = - message == ManageMessageId.ExternalLoginRemoveFailure ? "Failed to remove external login." - : message == ManageMessageId.ExternalLoginInfoNotFound ? "External login info not found." - : message == ManageMessageId.ExternalLoginAddFailure ? "Failed to link external login to local account." - : message == ManageMessageId.ChangePasswordWrongOriginal ? GetManageMessage(message) - : message == ManageMessageId.ChangePasswordMismatch ? GetManageMessage(message) - : message == ManageMessageId.ChangePasswordMissingInfo ? GetManageMessage(message) - : message == ManageMessageId.ChangePasswordFailure ? GetManageMessage(message) - : message == ManageMessageId.ResetPasswordFailure ? GetManageMessage(message) - : message == ManageMessageId.ResendConfirmationAlreadyConfirmed ? GetManageMessage(message) - : ""; - ViewBag.SuccessMessage = - message == ManageMessageId.ExternalLoginRemoveSuccess ? "The external login was successfully removed." - : message == ManageMessageId.ExternalLoginAddSuccess ? "The external login was successfully added." - : message == ManageMessageId.ChangePasswordSuccess ? GetManageMessage(message) - : message == ManageMessageId.ResetPasswordSuccess ? GetManageMessage(message) - : message == ManageMessageId.ResendConfirmationSuccess ? GetManageMessage(message) - : ""; - - if (string.IsNullOrEmpty(userName)) userName = User.Identity.GetUserName(); - - var user = await UserManager.FindByNameAsync(userName); - var userLogins = await UserManager.GetLoginsAsync(user.Id); - var otherLogins = AuthenticationManager.GetExternalAuthenticationTypes() - .Where(auth => userLogins.All(ul => auth.AuthenticationType != ul.LoginProvider)) - .ToList(); - - ViewBag.UserName = userName; - - return View(new AccountManagementModel - { - Member = user, - CurrentLogins = userLogins, - OtherLogins = otherLogins - }); - } - - [HttpGet] - public async Task Edit(string userName, AccountChangeMessageId? message) - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailMessage = TempData["FailureMessage"]; - - if (string.IsNullOrEmpty(userName)) - { - userName = User.Identity.GetUserName(); - } - - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Secretary"); - if (!hasElevatedPermissions && User.Identity.Name != userName) - { - return new HttpStatusCodeResult(HttpStatusCode.NotFound); - } - var member = string.IsNullOrEmpty(userName) - ? await UserManager.FindByNameAsync(User.Identity.Name) - : await UserManager.FindByNameAsync(userName); - var model = new EditMemberInfoModel - { - Member = member, - Semesters = await GetAllSemesterListAsync(), - PledgeClasses = await GetPledgeClassListAsync(), - Statuses = await GetStatusListAsync(), - Members = await GetAllUserIdsSelectListAsFullNameWithNoneAsync(), - ShirtSizes = GetShirtSizesSelectList() - }; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(EditMemberInfoModel model) - { - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Secretary"); - if (!hasElevatedPermissions && User.Identity.Name != model.Member.UserName) - { - return new HttpStatusCodeResult(HttpStatusCode.NotFound); - } - - model.Semesters = await GetAllSemesterListAsync(); - model.PledgeClasses = await GetPledgeClassListAsync(); - model.Statuses = await GetStatusListAsync(); - model.Members = await GetAllUserIdsSelectListAsFullNameWithNoneAsync(); - model.ShirtSizes = GetShirtSizesSelectList(); - - if (!ModelState.IsValid) - { - ViewBag.FailMessage = GetAccountChangeMessage(AccountChangeMessageId.UpdateFailed); - return View(model); - } - - var member = await UserManager.FindByIdAsync(model.Member.Id); - member.FirstName = model.Member.FirstName; - member.LastName = model.Member.LastName; - member.Email = model.Member.Email; - member.Pin = model.Member.Pin; - member.StatusId = model.Member.StatusId; - member.PledgeClassId = model.Member.PledgeClassId; - member.ExpectedGraduationId = model.Member.ExpectedGraduationId; - member.BigBroId = model.Member.BigBroId == 0 ? null : model.Member.BigBroId; - member.DietaryInstructions = model.Member.DietaryInstructions; - member.ShirtSize = model.Member.ShirtSize; - member.LastUpdatedOn = DateTime.UtcNow; - - UserManager.Update(member); - - ViewBag.SuccessMessage = GetAccountChangeMessage(AccountChangeMessageId.UpdateSuccess); - - return View(model); - } - - [HttpPost] - public async Task Avatar(FormCollection formCollection) - { - var userId = int.Parse(formCollection["Member.Id"]); - var member = await UserManager.FindByIdAsync(userId); - var file = Request.Files[0]; - if (file == null || file.ContentLength <= 0) - { - TempData["FailureMessage"] = "Upload failure (no file received)."; - return RedirectToAction("Edit", new { userName = member.UserName }); - } - if (file.ContentLength > 1000000) - { - TempData["FailureMessage"] = "Upload failure (file too large; max upload size is 1mb)."; - return RedirectToAction("Edit", new { userName = member.UserName }); - } - - var imageUpload = new ImageUpload { Width = 300, Height = 300 }; - var imageResult = imageUpload.RenameUploadFile(file, member.UserName); - if (imageResult.Success) - { - member.AvatarPath = imageResult.ImageName; - UserManager.Update(member); - TempData["SuccessMessage"] = "Successfully uploaded new image."; - } - else - { - TempData["FailureMessage"] = imageResult.ErrorMessage; - } - - return RedirectToAction("Edit", new { userName = member.UserName }); - } - - [HttpGet, AllowAnonymous] - public ActionResult SignIn() - { - return View(new LoginModel()); - } - - [HttpPost, AllowAnonymous, ValidateAntiForgeryToken] - public async Task SignIn(LoginModel model) - { - if (!ModelState.IsValid) - { - ViewBag.FailMessage = "The information provided was invalid."; - return View(model); - } - var user = await UserManager.FindByNameAsync(model.UserName); - if (user == null) - { - ViewBag.FailMessage = "The information provided was invalid."; - return View(model); - } - if (!await UserManager.IsEmailConfirmedAsync(user.Id)) - { - ViewBag.FailMessage = "The information provided was for an unconfirmed account. " + - "Please see the original registration email or email an administrator for another one."; - return View(model); - } - - var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, true); - switch (result) - { - case SignInStatus.Success: - if (string.IsNullOrEmpty(model.ReturnUrl)) - return RedirectToAction("Sphinx", "Home", new { area = "" }); - return Redirect(model.ReturnUrl); - case SignInStatus.LockedOut: - return View("Lockout"); - case SignInStatus.Failure: - default: - ViewBag.FailMessage = "The information provided was either invalid or for an inactive account."; - return View(model); - } - } - - [HttpPost, ValidateAntiForgeryToken] - public ActionResult SignOut() - { - AuthenticationManager.SignOut(); - return RedirectToAction("SignIn", "Account"); - } - - [HttpGet, Authorize(Roles = "Administrator, Secretary, Director of Recruitment, New Member Education")] - public async Task Registration() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailMessage = TempData["FailureMessage"]; - - var model = new RegistrationModel - { - RegisterModel = new RegisterModel - { - StatusList = await GetStatusListAsync(), - PledgeClassList = await GetPledgeClassListWithNoneAsync(), - SemesterList = await GetAllSemesterListWithNoneAsync() - }, - UnregisterModel = new UnregisterModel - { - Users = await GetUsersAsFullNameAsync( - u => - u.MemberStatus.StatusName == "New" || - u.MemberStatus.StatusName == "Affiliate", - u => - u.CreatedOn != null && - (DateTime.UtcNow - u.CreatedOn.Value).TotalDays < 30) - } - }; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, Authorize(Roles = "Administrator, Secretary, Director of Recruitment, New Member Education")] - public async Task Register(RegisterModel model) - { - try - { - if (!ModelState.IsValid) - { - throw new ArgumentException("Registration failed because the format of some of the provided data was invalid."); - } - var existingUser = await UserManager.FindByEmailAsync(model.Email); - if (existingUser != null) - { - throw new ArgumentException("This email is already in use, please select another."); - } - - var tempPassword = Membership.GeneratePassword(10, 5); - var pledgeClassId = int.Parse(model.PledgeClassId); - var expectedGraduationId = int.Parse(model.ExpectedGraduationId); - var user = new Member - { - UserName = model.UserName.ToLower(), - Email = model.Email.ToLower(), - FirstName = model.FirstName, - LastName = model.LastName, - StatusId = int.Parse(model.StatusId), - CreatedOn = DateTime.UtcNow - }; - if (pledgeClassId > 0) user.PledgeClassId = pledgeClassId; - if (expectedGraduationId > 0) user.ExpectedGraduationId = expectedGraduationId; - - var result = await UserManager.CreateAsync(user, tempPassword); - if (result.Succeeded) - { - user = await UserManager.FindByNameAsync(user.UserName); - - _db.Addresses.Add(new Address { UserId = user.Id, Type = "Mailing" }); - _db.Addresses.Add(new Address { UserId = user.Id, Type = "Permanent" }); - _db.PhoneNumbers.Add(new PhoneNumber { UserId = user.Id, Type = "Mobile" }); - _db.PhoneNumbers.Add(new PhoneNumber { UserId = user.Id, Type = "Emergency" }); - await _db.SaveChangesAsync(); - - // Send confirmation email. - await SendConfirmationEmailAsync(user.Id, model.UserName, tempPassword); - - TempData["SuccessMessage"] = user + " was successfully registered and emailed for confirmation."; - } - else - { - var msg = "Something unexpected went wrong. Please contact your administrator."; - if (result.Errors.Any()) - { - msg = string.Join(" ", result.Errors); - } - throw new Exception(msg); - } - } - catch (ArgumentException e) - { - TempData["FailureMessage"] = e.Message; - } - catch (MembershipCreateUserException e) - { - TempData["FailureMessage"] = ErrorCodeToString(e.StatusCode); - } - catch (Exception e) - { - TempData["FailureMessage"] = e.Message; - } - return RedirectToAction("Registration"); - } - - private async Task SendConfirmationEmailAsync(int userId, string username, string tempPassword) - { - var code = await UserManager.GenerateEmailConfirmationTokenAsync(userId); - var callbackUrl = Url.Action("ConfirmEmail", "Account", new - { - area = "Members", - userId = userId, - code - }, protocol: Request.Url.Scheme); - - var confirmationModel = new RegistrationConfirmationModel - { - UserName = username, - TemporaryPassword = tempPassword, - CallbackUrl = callbackUrl - }; - var body = RenderRazorViewToString("~/Views/Emails/RegistrationConfirmation.cshtml", confirmationModel); - await UserManager.SendEmailAsync(userId, "Account Registration Successful!", body); - } - - [AllowAnonymous] - public async Task ConfirmEmail(int userId, string code) - { - if (code == null) - { - return View("Error"); - } - var result = await UserManager.ConfirmEmailAsync(userId, code); - return View(result.Succeeded ? "ConfirmEmail" : "Error"); - } - - [AllowAnonymous] - public ActionResult ResendConfirmationEmail() - { - return View(); - } - - [HttpPost] - [AllowAnonymous] - [ValidateAntiForgeryToken] - public async Task ResendConfirmationEmail(ResendConfirmationEmailModel model) - { - if (ModelState.IsValid) - { - var user = await UserManager.FindByEmailAsync(model.Email); - if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id))) - { - // Don't reveal that the user does not exist or is not confirmed - return View("ResendConfirmationEmailConfirmation"); - } - - // Resend email - var tempPassword = Membership.GeneratePassword(10, 5); - var resetToken = await UserManager.GeneratePasswordResetTokenAsync(user.Id); - await UserManager.ResetPasswordAsync(user.Id, resetToken, tempPassword); - await SendConfirmationEmailAsync(user.Id, user.UserName, tempPassword); - return RedirectToAction("ResendConfirmationEmailConfirmation", "Account"); - } - - // If we got this far, something failed, redisplay form - return View(model); - } - - [AllowAnonymous] - public ActionResult ResendConfirmationEmailConfirmation() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken, Authorize(Roles = "Administrator")] - public async Task Unregister(UnregisterModel model) - { - if (ModelState.IsValid) - { - // Attempt to remove the user from the system - try - { - var user = await UserManager.FindByIdAsync(model.SelectedUserId); - - // Disallow unregistration if someone has meaninfully interacted with the system. - var userInteractedWithSystem = false; - var interactionMessage = ""; - if (user.ClassesTaken.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Classes"; - } - else if (user.BigBroId != null) - { - userInteractedWithSystem = true; - interactionMessage = "Big Brother"; - } - else if (user.LittleBrothers.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Little Brothers"; - } - else if (user.LaundrySignups.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Laundry Signups"; - } - else if (user.ServiceHours.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Service Hours"; - } - else if (user.SoberSignups.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Sober Signups"; - } - else if (user.PositionsHeld.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Positions"; - } - else if (user.IncidentReports.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Incident Reports"; - } - else if (user.MealPlates.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Meal Plates"; - } - else if (user.Rooms.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Rooms"; - } - else if (user.MealItemVotes.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Meal Item Votes"; - } - else if (user.ServiceHourAmendments.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Service Hour Amendments"; - } - else if (user.ServiceEventAmendments.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Service Event Amendments"; - } - else if (user.SubmittedEvents.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Event Submission"; - } - else if (user.WorkOrders.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Work Orders"; - } - else if (user.WorkOrderComments.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Work Order Comments"; - } - else if (user.WorkOrderPriorityChanges.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Work Order Priority Changes"; - } - else if (user.WorkOrderStatusChanges.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Work Order Status Changes"; - } - else if (user.ChoreGroups.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Chore Groups"; - } - else if (user.ChoreSignOffs.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Chore Sign Offs"; - } - else if (user.ChoresEnforced.Any()) - { - userInteractedWithSystem = true; - interactionMessage = "Chores Enforced"; - } - - if (!userInteractedWithSystem) - { - await UserManager.DeleteAsync(user); - TempData["SuccessMessage"] = "Successfully removed the user."; - } - else - { - TempData["FailureMessage"] = "Could not remove user because they have interacted with the system. " + - $"Interaction: {interactionMessage}"; - } - } - catch (MembershipCreateUserException e) - { - TempData["FailureMessage"] = $"Error, please contact your administrator. {e.Message}"; - } - catch (InvalidOperationException e) - { - TempData["FailureMessage"] = $"Error, please contact your administrator. {e.Message}"; - } - catch (Exception e) - { - TempData["FailureMessage"] = $"Error, please contact your administrator. {e.Message}"; - } - } - return RedirectToAction("Registration"); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task ChangePassword(AccountManagementModel model) - { - if (model.OldPassword == null || model.NewPassword == null || model.ConfirmPassword == null) - return RedirectToAction("Manage", new { message = ManageMessageId.ChangePasswordMissingInfo }); - if (model.NewPassword != model.ConfirmPassword) - return RedirectToAction("Manage", new { message = ManageMessageId.ChangePasswordMismatch }); - - var userId = User.Identity.GetUserId(); - var result = await UserManager.ChangePasswordAsync(userId, model.OldPassword, model.NewPassword); - - return RedirectToAction("Manage", result.Succeeded - ? new { message = ManageMessageId.ChangePasswordSuccess } - : new { message = ManageMessageId.ChangePasswordWrongOriginal }); - } - - [AllowAnonymous] - public ActionResult ForgotUsername() - { - return View(); - } - - [HttpPost] - [AllowAnonymous] - [ValidateAntiForgeryToken] - public async Task ForgotUsername(ForgotUsernameModel model) - { - if (ModelState.IsValid) - { - var user = await UserManager.FindByEmailAsync(model.Email); - if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id))) - { - // Don't reveal that the user does not exist or is not confirmed - return View("ForgotUsernameConfirmation"); - } - - await UserManager.SendEmailAsync(user.Id, "Sphinx Username", "Your username is: " + user.UserName); - return RedirectToAction("ForgotUsernameConfirmation", "Account"); - } - - // If we got this far, something failed, redisplay form - return View(model); - } - - [AllowAnonymous] - public ActionResult ForgotUsernameConfirmation() - { - return View(); - } - - [AllowAnonymous] - public ActionResult ForgotPassword() - { - return View(); - } - - [HttpPost] - [AllowAnonymous] - [ValidateAntiForgeryToken] - public async Task ForgotPassword(ForgotPasswordModel model) - { - if (ModelState.IsValid) - { - var user = await UserManager.FindByEmailAsync(model.Email); - if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id))) - { - // Don't reveal that the user does not exist or is not confirmed - return View("ForgotPasswordConfirmation"); - } - - // Send email with link - string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); - var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); - await UserManager.SendEmailAsync(user.Id, "Sphinx Password Reset", "Please reset your password by clicking here"); - return RedirectToAction("ForgotPasswordConfirmation", "Account"); - } - - // If we got this far, something failed, redisplay form - return View(model); - } - - [AllowAnonymous] - public ActionResult ForgotPasswordConfirmation() - { - return View(); - } - - [AllowAnonymous] - public ActionResult ResetPassword(string code) - { - return code == null ? View("Error") : View(); - } - - [HttpPost] - [AllowAnonymous] - [ValidateAntiForgeryToken] - public async Task ResetPassword(ResetPasswordViewModel model) - { - if (!ModelState.IsValid) - { - return View(model); - } - var user = await UserManager.FindByEmailAsync(model.Email); - if (user == null) - { - // Don't reveal that the user does not exist - return RedirectToAction("ResetPasswordConfirmation", "Account"); - } - var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password); - if (result.Succeeded) - { - return RedirectToAction("ResetPasswordConfirmation", "Account"); - } - AddErrors(result); - return View(); - } - - [AllowAnonymous] - public ActionResult ResetPasswordConfirmation() - { - return View(); - } - - #region External Authentication - - [HttpPost, AllowAnonymous, ValidateAntiForgeryToken] - public ActionResult ExternalLogin(string provider, string returnUrl) - { - // Request a redirect to the external login provider - return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl })); - } - - [AllowAnonymous] - public async Task ExternalLoginCallback(string returnUrl) - { - var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); - if (loginInfo == null) - { - return RedirectToAction("SignIn"); - } - - // Sign in the user with this external login provider if the user already has a login - var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false); - switch (result) - { - case SignInStatus.Success: - return RedirectToLocal(returnUrl); - case SignInStatus.LockedOut: - return View("Lockout"); - case SignInStatus.RequiresVerification: - return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false }); - case SignInStatus.Failure: - default: - // If the user does not have an account, then they can't sign in. - return RedirectToAction("ExternalLoginFailure"); - } - } - - [HttpPost, AllowAnonymous, ValidateAntiForgeryToken] - public async Task ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) - { - if (User.Identity.IsAuthenticated) - { - return RedirectToAction("Sphinx", "Home", new { area = "" }); - } - - if (ModelState.IsValid) - { - // Get the information about the user from the external login provider - var info = await AuthenticationManager.GetExternalLoginInfoAsync(); - if (info == null) - { - return View("ExternalLoginFailure"); - } - var user = new Member { UserName = model.Email, Email = model.Email }; - var result = await UserManager.CreateAsync(user); - if (result.Succeeded) - { - result = await UserManager.AddLoginAsync(user.Id, info.Login); - if (result.Succeeded) - { - await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); - return RedirectToLocal(returnUrl); - } - } - AddErrors(result); - } - - ViewBag.ReturnUrl = returnUrl; - return View(model); - } - - [AllowAnonymous] - public ActionResult ExternalLoginFailure() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public ActionResult LinkLogin(string provider) - { - // Request a redirect to the external login provider to link a login for the current user - return new ChallengeResult(provider, Url.Action("LinkLoginCallback", "Account"), User.Identity.GetUserId()); - } - - public async Task LinkLoginCallback() - { - var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId()); - if (loginInfo == null) - { - return RedirectToAction("Manage", new { Message = ManageMessageId.ExternalLoginInfoNotFound }); - } - var result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login); - return result.Succeeded - ? RedirectToAction("Manage", new { Message = ManageMessageId.ExternalLoginAddSuccess }) - : RedirectToAction("Manage", new { Message = ManageMessageId.ExternalLoginAddFailure }); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task RemoveLogin(string loginProvider, string providerKey) - { - ManageMessageId? message; - var result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey)); - if (result.Succeeded) - { - var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); - if (user != null) - { - await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); - } - message = ManageMessageId.ExternalLoginRemoveSuccess; - } - else - { - message = ManageMessageId.ExternalLoginRemoveFailure; - } - return RedirectToAction("Manage", new { Message = message }); - } - - #endregion - - #region Error Messages - - private static dynamic GetRegistrationMessage(RegistrationMessageId? message) - { - return message == RegistrationMessageId.RegistrationSuccess ? "The new account has been successfully registered." - : message == RegistrationMessageId.RegistrationFailed ? "Account registration failed. Please contact the system administrator." - : message == RegistrationMessageId.UnregisterSuccess ? "The account has been successfully removed." - : message == RegistrationMessageId.UnregisterFailed ? "Account removal failed. This could be because the user has records in the system tied to them and can't be deleted." - : ""; - } - private static dynamic GetManageMessage(ManageMessageId? message) - { - return message == ManageMessageId.ChangePasswordSuccess ? "The password change for this account was successful." - : message == ManageMessageId.ChangePasswordWrongOriginal ? "The password change failed because the wrong original password was entered." - : message == ManageMessageId.ChangePasswordMismatch ? "The password change failed because the new password fields did not match." - : message == ManageMessageId.ChangePasswordMissingInfo ? "The password change failed because one of the fields did not contain any information." - : message == ManageMessageId.ChangePasswordFailure ? "The password change failed for an unknown reason. Please contact your administrator." - - : message == ManageMessageId.SetPasswordSuccess ? "The password for this account password has been set." - : message == ManageMessageId.SetPasswordFailure ? "The current password is incorrect or the new password is invalid." - - : message == ManageMessageId.ResetPasswordSuccess ? "The password for this account has been reset." - : message == ManageMessageId.ResetPasswordFailure ? "The password for this account could not be reset for some unknown reason." - : message == ManageMessageId.ResendConfirmationSuccess ? "The confirmation email for this account was sent and the password was reset." - : message == ManageMessageId.ResendConfirmationAlreadyConfirmed ? "This account is already confirmed. Try just resetting their passwored." - - : message == ManageMessageId.ExternalLoginRemoveSuccess ? "The external login was removed." - : message == ManageMessageId.ExternalLoginAddSuccess ? "External login was added." - : ""; - } - private static dynamic GetAccountChangeMessage(AccountChangeMessageId? message) - { - return message == AccountChangeMessageId.UpdateSuccess ? "This account has been updated." - : message == AccountChangeMessageId.UpdateFailed ? "Update failed, please verify that the data you entered is valid." - : ""; - } - - private static string ErrorCodeToString(MembershipCreateStatus createStatus) - { - // See http://go.microsoft.com/fwlink/?LinkID=177550 for - // a full list of status codes. - switch (createStatus) - { - case MembershipCreateStatus.DuplicateUserName: - return "User name already exists. Please enter a different user name."; - - case MembershipCreateStatus.DuplicateEmail: - return "A user name for that e-mail address already exists. Please enter a different e-mail address."; - - case MembershipCreateStatus.InvalidPassword: - return "The password provided is invalid. Please enter a valid password value."; - - case MembershipCreateStatus.InvalidEmail: - return "The e-mail address provided is invalid. Please check the value and try again."; - - case MembershipCreateStatus.InvalidAnswer: - return "The password retrieval answer provided is invalid. Please check the value and try again."; - - case MembershipCreateStatus.InvalidQuestion: - return "The password retrieval question provided is invalid. Please check the value and try again."; - - case MembershipCreateStatus.InvalidUserName: - return "The user name provided is invalid. Please check the value and try again."; - - case MembershipCreateStatus.ProviderError: - return "The authentication provider returned an error. Please verify your entry and try again. If the problem persists, please contact your system administrator."; - - case MembershipCreateStatus.UserRejected: - return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact your system administrator."; - - default: - return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact your system administrator."; - } - } - - public enum ManageMessageId - { - ChangePasswordSuccess, - ChangePasswordMismatch, - ChangePasswordWrongOriginal, - ChangePasswordFailure, - ResetPasswordSuccess, - ResetPasswordFailure, - SetPasswordSuccess, - SetPasswordFailure, - ExternalLoginRemoveSuccess, - ExternalLoginRemoveFailure, - ExternalLoginAddSuccess, - ExternalLoginInfoNotFound, - ExternalLoginAddFailure, - ChangePasswordMissingInfo, - ResendConfirmationSuccess, - ResendConfirmationAlreadyConfirmed - } - public enum RegistrationMessageId - { - RegistrationSuccess, - UnregisterSuccess, - RegistrationFailed, - UnregisterFailed - } - public enum AccountChangeMessageId - { - UpdateSuccess, - UpdateFailed - } - - #endregion - - private IAuthenticationManager AuthenticationManager - { - get - { - return HttpContext.GetOwinContext().Authentication; - } - } - - private void AddErrors(IdentityResult result) - { - foreach (var error in result.Errors) - { - ModelState.AddModelError("", error); - } - } - - private ActionResult RedirectToLocal(string returnUrl) - { - if (Url.IsLocalUrl(returnUrl)) - { - return Redirect(returnUrl); - } - return RedirectToAction("Sphinx", "Home", new { area = "" }); - } - - private const string XsrfKey = "XsrfId"; - - internal class ChallengeResult : HttpUnauthorizedResult - { - public ChallengeResult(string provider, string redirectUri) - : this(provider, redirectUri, null) - { - } - - public ChallengeResult(string provider, string redirectUri, string userId) - { - LoginProvider = provider; - RedirectUri = redirectUri; - UserId = userId; - } - - public string LoginProvider { get; set; } - public string RedirectUri { get; set; } - public string UserId { get; set; } - - public override void ExecuteResult(ControllerContext context) - { - var properties = new AuthenticationProperties { RedirectUri = RedirectUri }; - if (UserId != null) - { - properties.Dictionary[XsrfKey] = UserId; - } - context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider); - } - } - - public class ImageResult - { - public bool Success { get; set; } - public string ImageName { get; set; } - public string ErrorMessage { get; set; } - } - - public class ImageUpload - { - public int Width { get; set; } - public int Height { get; set; } - private const string UploadPath = "~/Images/Avatars/"; - - public static string GetUploadPath(string fileName) - { - if (fileName == null) - { - fileName = string.Empty; - } - return System.Web.HttpContext.Current.Server.MapPath(Path.Combine(UploadPath, fileName)); - } - - public ImageResult RenameUploadFile(HttpPostedFileBase file, string userName) - { - var imageResult = new ImageResult { Success = true, ErrorMessage = null }; - var fileExtension = Path.GetExtension(file.FileName); - var finalFileName = Regex.Replace(userName, @"\s+", "") + fileExtension; - var folderPath = System.Web.HttpContext.Current.Server.MapPath(UploadPath); - var imagePath = GetUploadPath(finalFileName); - - // Create image directory if it does not exist. - var directoryExists = Directory.Exists(folderPath); - if (!directoryExists) - { - Directory.CreateDirectory(folderPath); - } - // Validate extension. - if (!ValidateExtension(fileExtension)) - { - imageResult.Success = false; - imageResult.ErrorMessage = "Invalid Extension."; - return imageResult; - } - // Delete old file if one exists. - var fileExists = System.IO.File.Exists(imagePath); - if (fileExists) - { - System.IO.File.Delete(imagePath); - } - - return UploadFile(file, finalFileName, imageResult); - } - - private ImageResult UploadFile(HttpPostedFileBase file, string fileName, ImageResult imageResult) - { - var path = System.Web.HttpContext.Current.Server.MapPath(Path.Combine(UploadPath, fileName)); - - try - { - file.SaveAs(path); - var imgOriginal = Image.FromFile(path); - var imgActual = Scale(imgOriginal); - imgOriginal.Dispose(); - imgActual.Save(path); - imgActual.Dispose(); - - imageResult.ImageName = fileName; - return imageResult; - } - catch (Exception ex) - { - // you might NOT want to show the exception error for the user - // this is generally logging or testing - imageResult.Success = false; - imageResult.ErrorMessage = ex.Message; - return imageResult; - } - } - - private bool ValidateExtension(string extension) - { - extension = extension.ToLower(); - switch (extension) - { - case ".jpg": - return true; - case ".png": - return true; - case ".jpeg": - return true; - default: - return false; - } - } - - private Image Scale(Image imgPhoto) - { - float sourceWidth = imgPhoto.Width; - float sourceHeight = imgPhoto.Height; - float destHeight = 0; - float destWidth = 0; - var sourceX = 0; - var sourceY = 0; - var destX = 0; - var destY = 0; - - // For resize, possible distortion - if (Width != 0 && Height != 0) - { - destWidth = Width; - destHeight = Height; - } - // Change size proportionally - else if (Height != 0) - { - destWidth = (float)(Height * sourceWidth) / sourceHeight; - destHeight = Height; - } - else - { - destWidth = Width; - destHeight = (float)(sourceHeight * Width / sourceWidth); - } - - var bmPhoto = new Bitmap((int)destWidth, (int)destHeight, PixelFormat.Format32bppPArgb); - bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); - - var grPhoto = Graphics.FromImage(bmPhoto); - grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic; - - grPhoto.DrawImage(imgPhoto, - new Rectangle(destX, destY, (int)destWidth, (int)destHeight), - new Rectangle(sourceX, sourceY, (int)sourceWidth, (int)sourceHeight), - GraphicsUnit.Pixel); - - grPhoto.Dispose(); - - return bmPhoto; - } - } - } -} diff --git a/src/Dsp.Web/Areas/Members/Controllers/AddressesController.cs b/src/Dsp.Web/Areas/Members/Controllers/AddressesController.cs deleted file mode 100644 index 30ec5b09..00000000 --- a/src/Dsp.Web/Areas/Members/Controllers/AddressesController.cs +++ /dev/null @@ -1,109 +0,0 @@ -namespace Dsp.Web.Areas.Members.Controllers -{ - using Dsp.Data.Entities; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using System.Collections.Generic; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Text; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public class AddressesController : BaseController - { - public async Task Index(string s) - { - var model = new List(); - - if (!string.IsNullOrEmpty(s)) - { - if (s == ":all") - { - model = await _db.Users - .OrderBy(m => m.LastName) - .ThenBy(m => m.FirstName) - .ToListAsync(); - ViewBag.SearchTerm = "everyone"; - } - else - { - model = await _db.Users - .Where(m => - m.FirstName.Contains(s) || - m.LastName.Contains(s) || - m.Addresses.Any(a => a.Address1.Contains(s)) || - m.Addresses.Any(a => a.Address2.Contains(s)) || - m.Addresses.Any(a => a.City.Contains(s)) || - m.Addresses.Any(a => a.State.Contains(s)) || - m.Addresses.Any(a => a.PostalCode.ToString().Contains(s)) || - m.Addresses.Any(a => a.Country.Contains(s))) - .ToListAsync(); - ViewBag.SearchTerm = s; - } - } - - return View(model); - } - - public async Task Edit(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var address = await _db.Addresses.FindAsync(id); - if (address == null) - { - return HttpNotFound(); - } - ViewBag.UserId = new SelectList(await UserManager.Users.ToListAsync(), "UserId", "UserName", address.UserId); - return View(address); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task Edit([Bind(Include = "AddressId,UserId,Type,Address1,Address2,City,State,PostalCode,Country")] Address address) - { - if (ModelState.IsValid) - { - _db.Entry(address).State = EntityState.Modified; - await _db.SaveChangesAsync(); - return User.Identity.GetUserId() == address.UserId - ? RedirectToAction("Index", "Account") : RedirectToAction("Index"); - } - ViewBag.UserId = new SelectList(await UserManager.Users.ToListAsync(), "UserId", "UserName", address.UserId); - return View(address); - } - - public async Task Download() - { - var addresses = await _db.Addresses - .OrderBy(a => a.Member.MemberStatus.StatusId) - .ThenBy(a => a.Member.LastName) - .ToListAsync(); - const string header = "First Name, Last Name, Member Status, Address Type, Address 1, Address 2, City, State, Postal Code, Country"; - var sb = new StringBuilder(); - sb.AppendLine(header); - foreach (var a in addresses) - { - var line = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", - a.Member.FirstName, - a.Member.LastName, - a.Member.MemberStatus.StatusName, - a.Type, - a.Address1, - a.Address2, - a.City, - a.State, - a.PostalCode, - a.Country); - sb.AppendLine(line); - } - - return File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", "dsp-addresses.csv"); - } - } -} diff --git a/src/Dsp.Web/Areas/Members/Controllers/IncidentsController.cs b/src/Dsp.Web/Areas/Members/Controllers/IncidentsController.cs deleted file mode 100644 index e2fcf060..00000000 --- a/src/Dsp.Web/Areas/Members/Controllers/IncidentsController.cs +++ /dev/null @@ -1,183 +0,0 @@ -namespace Dsp.Web.Areas.Members.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; -#if !DEBUG - using System.Net.Mail; - using Dsp.Web.Extensions; -#endif - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Administrator")] - public class IncidentsController : BaseController - { - private IIncidentService _incidentService; - private IPositionService _positionService; - private ISemesterService _semesterService; - private IMemberService _memberService; - - public IncidentsController() - { - _incidentService = new IncidentService(new Repository(_db)); - _positionService = new PositionService(new Repository(_db)); - _semesterService = new SemesterService(new Repository(_db)); - _memberService = new MemberService(new Repository(_db)); - } - - public async Task Index(IncidentsIndexFilterModel filter) - { - var serviceResult = await _incidentService.GetIncidentReportsAsync( - filter.page, - filter.pageSize, - filter.resolved, - filter.unresolved, - filter.sort, - filter.s - ); - var filterResults = serviceResult.Item1; - var totalPages = serviceResult.Item2; - var unresolvedCount = serviceResult.Item3; - var resolvedCount = serviceResult.Item4; - - var model = new IncidentsIndexModel( - filterResults, - filter, - totalPages, - unresolvedCount, - resolvedCount - ); - - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(model); - } - - public async Task Details(int id) - { - if (id < 1) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var incidentReport = await _incidentService.GetIncidentReportByIdAsync(id); - - if (incidentReport == null) return HttpNotFound(); - - var eBoardPositions = await _positionService.GetEboardPositionsAsync(); - var eBoardPositionNames = eBoardPositions.Select(x => x.Name); - var userId = User.Identity.GetUserId(); - var userRoles = await _positionService.GetCurrentPositionsByUserAsync(userId); - var model = new IncidentReportDetailsModel - { - Report = incidentReport, - CanEditReport = await _positionService.UserHasAtLeastOnePositionPowerAsync( - userId, - new[] { "Sergeant-at-Arms", "President" } - ) - }; - model.CanViewOriginalReport = await _positionService.UserHasAtLeastOnePositionPowerAsync( - userId, - new[] { "Sergeant-at-Arms", "President", "Chapter Advisor" } - ); - model.CanViewInvestigationNotes = await _positionService.UserHasAtLeastOnePositionPowerAsync( - userId, - eBoardPositionNames.Concat(new string[] { "Chapter Advisor" }).ToArray() - ); - - return View(model); - } - - public ActionResult Submit() - { - return View(); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task Submit(IncidentReport model) - { - if (!ModelState.IsValid) - { - TempData["FailureMessage"] = "Something went wrong while submitting the incident report."; - return View(model); - } - - model.DateTimeSubmitted = DateTime.UtcNow; - var submitter = await _memberService.GetMemberByUserNameAsync(User.Identity.Name); - model.ReportedBy = submitter.Id; - await _incidentService.CreateIncidentReportAsync(model); - - // Send notification emails to Sergeant-at-Arms and President. -#if !DEBUG - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - var saa = await _positionService.GetUserInPositionAsync("Sergeant-at-Arms", currentSemester.Id); - var president = await _positionService.GetUserInPositionAsync("President", currentSemester.Id); - var body = RenderRazorViewToString("~/Views/Emails/NewIncidentReport.cshtml", model); - var message = new IdentityMessage - { - Subject = "New Incident Report Submitted: " + model.DateTimeSubmitted.ToString("G"), - Body = body - }; - - try - { - var emailService = new EmailService(); - if (saa != null) - { - message.Destination = saa.Email; - await emailService.SendAsync(message); - } - if (president != null) - { - message.Destination = president.Email; - await emailService.SendAsync(message); - } - } - catch (SmtpException e) - { - Elmah.ErrorSignal.FromCurrentContext().Raise(e); - return new HttpStatusCodeResult(HttpStatusCode.InternalServerError); - } -#endif - TempData["SuccessMessage"] = "Incident report submitted."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task Edit(int id) - { - if (id < 1) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _incidentService.GetIncidentReportByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost] - [ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task Edit(IncidentReport model) - { - if (!ModelState.IsValid) - { - TempData["FailureMessage"] = "Something went wrong while updating the incident report."; - return View(model); - } - - await _incidentService.UpdateIncidentReportAsync(model); - - TempData["SuccessMessage"] = "Incident report updated."; - return RedirectToAction("Index"); - } - } -} diff --git a/src/Dsp.Web/Areas/Members/Controllers/PhoneNumbersController.cs b/src/Dsp.Web/Areas/Members/Controllers/PhoneNumbersController.cs deleted file mode 100644 index 18022225..00000000 --- a/src/Dsp.Web/Areas/Members/Controllers/PhoneNumbersController.cs +++ /dev/null @@ -1,99 +0,0 @@ -namespace Dsp.Web.Areas.Members.Controllers -{ - using Dsp.Data.Entities; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using System.Collections.Generic; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Text; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public class PhoneNumbersController : BaseController - { - public async Task Index(string s) - { - var model = new List(); - - if (!string.IsNullOrEmpty(s)) - { - if (s == ":all") - { - model = await _db.Users - .OrderBy(m => m.LastName) - .ThenBy(m => m.FirstName) - .ToListAsync(); - ViewBag.SearchTerm = "everyone"; - } - else - { - model = await _db.Users - .Where(m => - m.FirstName.Contains(s) || - m.LastName.Contains(s) || - m.PhoneNumbers.Any(p => p.Number.Contains(s))) - .ToListAsync(); - ViewBag.SearchTerm = s; - } - } - - return View(model); - } - - public async Task Edit(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var phoneNumber = await _db.PhoneNumbers.FindAsync(id); - if (phoneNumber == null) - { - return HttpNotFound(); - } - ViewBag.UserId = new SelectList(await UserManager.Users.ToListAsync(), "UserId", "UserName", phoneNumber.UserId); - return View(phoneNumber); - } - - [HttpPost] - [ValidateAntiForgeryToken] - public async Task Edit([Bind(Include = "PhoneNumberId,UserId,Number,Type")] PhoneNumber phoneNumber) - { - if (ModelState.IsValid) - { - _db.Entry(phoneNumber).State = EntityState.Modified; - await _db.SaveChangesAsync(); - return User.Identity.GetUserId() == phoneNumber.UserId - ? RedirectToAction("Index", "Account") : RedirectToAction("Index"); - } - ViewBag.UserId = new SelectList(await UserManager.Users.ToListAsync(), "UserId", "UserName", phoneNumber.UserId); - return View(phoneNumber); - } - - public async Task Download() - { - var numbers = await _db.PhoneNumbers - .OrderBy(a => a.Member.MemberStatus.StatusId) - .ThenBy(a => a.Member.LastName) - .ToListAsync(); - const string header = "First Name, Last Name, Member Status, Phone Type, Phone Number"; - var sb = new StringBuilder(); - sb.AppendLine(header); - foreach (var n in numbers) - { - var line = string.Format("{0},{1},{2},{3},{4}", - n.Member.FirstName, - n.Member.LastName, - n.Member.MemberStatus.StatusName, - n.Type, - n.Number); - sb.AppendLine(line); - } - - return File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", "dsp-phone-numbers.csv"); - } - } -} diff --git a/src/Dsp.Web/Areas/Members/Controllers/RosterController.cs b/src/Dsp.Web/Areas/Members/Controllers/RosterController.cs deleted file mode 100644 index 86e67add..00000000 --- a/src/Dsp.Web/Areas/Members/Controllers/RosterController.cs +++ /dev/null @@ -1,151 +0,0 @@ -namespace Dsp.Web.Areas.Members.Controllers -{ - using Dsp.Data.Entities; - using Dsp.Web.Controllers; - using Models; - using System.Data.Entity; - using System.Linq; - using System.Text; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public class RosterController : BaseController - { - [HttpGet] - public async Task Index(RosterFilterModel filter) - { - Semester semester; - if (filter.sem == null) - { - semester = await base.GetThisSemesterAsync(); - filter.sem = semester.Id; - } - else - { - semester = await _db.Semesters.FindAsync(filter.sem); - } - - var members = await base.GetRosterForSemester(semester); - ViewBag.Sort = filter.sort; - ViewBag.Order = filter.order; - ViewBag.SearchTerm = filter.s; - var filteredResults = base.GetFilteredMembersList(members, filter.s, filter.sort, filter.order); - - var model = new RosterIndexModel - { - SelectedSemester = semester.Id, - Semester = semester, - Semesters = await base.GetSemesterListAsync(), - Members = filteredResults - }; - - return View(model); - } - - [HttpGet, Authorize(Roles = "Administrator, Secretary")] - public async Task InitiateNewMembers(string message) - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - - var model = new InitiateNewMembersModel - { - NewMembers = await GetNewMemberUserIdListAsFullNameAsync() - }; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, Authorize(Roles = "Administrator, Secretary")] - public async Task InitiateNewMembers(InitiateNewMembersModel model) - { - var newMembers = await _db.Users - .Where(m => - model.SelectedMemberIds.Contains(m.Id)) - .ToListAsync(); - var activeId = (await _db.MemberStatuses.SingleAsync(s => s.StatusName == "Active")).StatusId; - - foreach (var m in newMembers) - { - m.StatusId = activeId; - _db.Entry(m).State = EntityState.Modified; - } - - await _db.SaveChangesAsync(); - TempData["SuccessMessage"] = "New members successfully moved to active status."; - return RedirectToAction("InitiatePledges"); - } - - [HttpGet, Authorize(Roles = "Administrator, Secretary")] - public async Task GraduateActives(string message) - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - - var model = new GraduateActivesModel - { - Actives = await GetGraduatingActiveUserIdListAsFullNameAsync() - }; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, Authorize(Roles = "Administrator, Secretary")] - public async Task GraduateActives(GraduateActivesModel model) - { - var actives = await _db.Users - .Where(m => - model.SelectedMemberIds.Contains(m.Id)) - .ToListAsync(); - var alumnusId = (await _db.MemberStatuses.SingleAsync(s => s.StatusName == "Alumnus")).StatusId; - - foreach (var p in actives) - { - p.StatusId = alumnusId; - _db.Entry(p).State = EntityState.Modified; - } - - await _db.SaveChangesAsync(); - TempData["SuccessMessage"] = "Actives successfully moved to alumni status."; - return RedirectToAction("GraduateActives"); - } - - [HttpGet] - public async Task Download() - { - var members = await UserManager.Users - .OrderBy(m => m.MemberStatus.StatusId) - .ThenBy(m => m.LastName) - .ToListAsync(); - const string header = "First Name, Last Name, Mobile, Email, Member Status, Pledge Class, Pin, Graduation, Location, Big Bro"; - var sb = new StringBuilder(); - sb.AppendLine(header); - foreach (var m in members) - { - var firstName = m.FirstName; - var lastName = m.LastName; - var phone = m.PhoneNumbers.SingleOrDefault(p => p.Type == "Mobile")?.Number ?? "None"; - var email = m.Email; - var status = m.MemberStatus.StatusName; - var pledgeClass = m.PledgeClass?.PledgeClassName ?? "None"; - var pin = m.Pin?.ToString() ?? "None"; - var graduationSemester = m.GraduationSemester?.ToString() ?? "None"; - var location = m.RoomString(); - var bigBro = m.BigBrother == null ? "None" : m.BigBrother.FirstName + " " + m.BigBrother.LastName; - var line = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", - firstName, - lastName, - phone, - email, - status, - pledgeClass, - pin, - graduationSemester, - location, - bigBro); - sb.AppendLine(line); - } - - return File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", "dsp-roster.csv"); - } - } -} diff --git a/src/Dsp.Web/Areas/Members/MembersAreaRegistration.cs b/src/Dsp.Web/Areas/Members/MembersAreaRegistration.cs deleted file mode 100644 index 281ad537..00000000 --- a/src/Dsp.Web/Areas/Members/MembersAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Members -{ - public class MembersAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Members"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Members_default", - "Members/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/AccountInformationModel.cs b/src/Dsp.Web/Areas/Members/Models/AccountInformationModel.cs deleted file mode 100644 index cbc8a9bd..00000000 --- a/src/Dsp.Web/Areas/Members/Models/AccountInformationModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class AccountInformationModel - { - public Member Member { get; set; } - public Semester CurrentSemester { get; set; } - public IEnumerable ThisSemesterCourses { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/AccountManagementModel.cs b/src/Dsp.Web/Areas/Members/Models/AccountManagementModel.cs deleted file mode 100644 index 91d17575..00000000 --- a/src/Dsp.Web/Areas/Members/Models/AccountManagementModel.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Data.Entities; - using Microsoft.AspNet.Identity; - using Microsoft.Owin.Security; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - - public class AccountManagementModel - { - public Member Member { get; set; } - public IList CurrentLogins { get; set; } - public IList OtherLogins { get; set; } - - [Required] - [DataType(DataType.Password)] - [Display(Name = "Current Password")] - public string OldPassword { get; set; } - - [Required] - [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] - [DataType(DataType.Password)] - [Display(Name = "New Password")] - public string NewPassword { get; set; } - - [DataType(DataType.Password)] - [Display(Name = "Confirm New Password")] - [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] - public string ConfirmPassword { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/AddressIndexFilterModel.cs b/src/Dsp.Web/Areas/Members/Models/AddressIndexFilterModel.cs deleted file mode 100644 index e2f32245..00000000 --- a/src/Dsp.Web/Areas/Members/Models/AddressIndexFilterModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class AddressIndexFilterModel : MemberStatusFilter - { - public IEnumerable
Addresses { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/EditMemberInfoModel.cs b/src/Dsp.Web/Areas/Members/Models/EditMemberInfoModel.cs deleted file mode 100644 index b89f6e41..00000000 --- a/src/Dsp.Web/Areas/Members/Models/EditMemberInfoModel.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class EditMemberInfoModel - { - public Member Member { get; set; } - - public IEnumerable Statuses { get; set; } - public IEnumerable PledgeClasses { get; set; } - public IEnumerable Semesters { get; set; } - public IEnumerable Members { get; set; } - public IEnumerable ShirtSizes { get; set; } - } -} diff --git a/src/Dsp.Web/Areas/Members/Models/ExternalLoginConfirmationViewModel.cs b/src/Dsp.Web/Areas/Members/Models/ExternalLoginConfirmationViewModel.cs deleted file mode 100644 index b39491b8..00000000 --- a/src/Dsp.Web/Areas/Members/Models/ExternalLoginConfirmationViewModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using System.ComponentModel.DataAnnotations; - - public class ExternalLoginConfirmationViewModel - { - [Required, Display(Name = "Email")] - public string Email { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/ExternalLoginListViewModel.cs b/src/Dsp.Web/Areas/Members/Models/ExternalLoginListViewModel.cs deleted file mode 100644 index 14a3a909..00000000 --- a/src/Dsp.Web/Areas/Members/Models/ExternalLoginListViewModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - public class ExternalLoginListViewModel - { - public string ReturnUrl { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/ForgotPasswordModel.cs b/src/Dsp.Web/Areas/Members/Models/ForgotPasswordModel.cs deleted file mode 100644 index b3e5f8e4..00000000 --- a/src/Dsp.Web/Areas/Members/Models/ForgotPasswordModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace Dsp.Web.Areas.Members.Models -{ - public class ForgotPasswordModel - { - [Required] - [EmailAddress] - [Display(Name = "Email")] - public string Email { get; set; } - } -} diff --git a/src/Dsp.Web/Areas/Members/Models/ForgotUsernameModel.cs b/src/Dsp.Web/Areas/Members/Models/ForgotUsernameModel.cs deleted file mode 100644 index 24f80f7d..00000000 --- a/src/Dsp.Web/Areas/Members/Models/ForgotUsernameModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace Dsp.Web.Areas.Members.Models -{ - public class ForgotUsernameModel - { - [Required] - [EmailAddress] - [Display(Name = "Email")] - public string Email { get; set; } - } -} diff --git a/src/Dsp.Web/Areas/Members/Models/GraduateActivesModel.cs b/src/Dsp.Web/Areas/Members/Models/GraduateActivesModel.cs deleted file mode 100644 index eb13f1f7..00000000 --- a/src/Dsp.Web/Areas/Members/Models/GraduateActivesModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using System.Collections.Generic; - using System.Web.Mvc; - - public class GraduateActivesModel - { - public int[] SelectedMemberIds { get; set; } - public IEnumerable Actives { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/IncidentReportDetailsModel.cs b/src/Dsp.Web/Areas/Members/Models/IncidentReportDetailsModel.cs deleted file mode 100644 index e059fd19..00000000 --- a/src/Dsp.Web/Areas/Members/Models/IncidentReportDetailsModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Data.Entities; - - public class IncidentReportDetailsModel - { - public IncidentReport Report { get; set; } - public bool CanEditReport { get; set; } - public bool CanViewOriginalReport { get; set; } - public bool CanViewInvestigationNotes { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/IncidentsIndexFilterModel.cs b/src/Dsp.Web/Areas/Members/Models/IncidentsIndexFilterModel.cs deleted file mode 100644 index d7fe4528..00000000 --- a/src/Dsp.Web/Areas/Members/Models/IncidentsIndexFilterModel.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Web.Models; - - public class IncidentsIndexFilterModel : Pager - { - public bool unresolved { get; set; } - public bool resolved { get; set; } - public string sort { get; set; } - public string s { get; set; } - - public IncidentsIndexFilterModel() - { - this.unresolved = true; - this.resolved = false; - this.sort = "newest"; - this.s = string.Empty; - - base.page = 1; - base.pageSize = 10; - } - public IncidentsIndexFilterModel(IncidentsIndexFilterModel original) - { - this.unresolved = original.unresolved; - this.resolved = original.resolved; - this.sort = original.sort; - this.s = original.s; - - base.page = original.page; - base.pageSize = original.pageSize; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/IncidentsIndexModel.cs b/src/Dsp.Web/Areas/Members/Models/IncidentsIndexModel.cs deleted file mode 100644 index 1d099d3c..00000000 --- a/src/Dsp.Web/Areas/Members/Models/IncidentsIndexModel.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class IncidentsIndexModel - { - public IEnumerable Incidents { get; set; } - public IncidentsIndexFilterModel Filter { get; set; } - public int TotalPages { get; set; } - public int UnresolvedCount { get; set; } - public int ResolvedCount { get; set; } - public int ResultCount { get; set; } - - public IncidentsIndexModel( - IEnumerable incidents, - IncidentsIndexFilterModel filter, - int totalPages, - int unresolvedCount, - int resolvedCount) - { - Incidents = incidents; - Filter = filter; - TotalPages = totalPages; - UnresolvedCount = unresolvedCount; - ResolvedCount = resolvedCount; - ResultCount = UnresolvedCount + ResolvedCount; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/InitiateNewMembersModel.cs b/src/Dsp.Web/Areas/Members/Models/InitiateNewMembersModel.cs deleted file mode 100644 index 2580723b..00000000 --- a/src/Dsp.Web/Areas/Members/Models/InitiateNewMembersModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using System.Collections.Generic; - using System.Web.Mvc; - - public class InitiateNewMembersModel - { - public int[] SelectedMemberIds { get; set; } - public IEnumerable NewMembers { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/LoginModel.cs b/src/Dsp.Web/Areas/Members/Models/LoginModel.cs deleted file mode 100644 index f736a749..00000000 --- a/src/Dsp.Web/Areas/Members/Models/LoginModel.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using System.ComponentModel.DataAnnotations; - - public class LoginModel - { - [Required] - [Display(Name = "User name")] - public string UserName { get; set; } - - [Required] - [Display(Name = "Password")] - public string Password { get; set; } - - [Display(Name = "Remember me")] - public bool RememberMe { get; set; } - public string ReturnUrl {get;set;} - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/MemberStatusFilter.cs b/src/Dsp.Web/Areas/Members/Models/MemberStatusFilter.cs deleted file mode 100644 index 0c84c6b1..00000000 --- a/src/Dsp.Web/Areas/Members/Models/MemberStatusFilter.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - public class MemberStatusFilter - { - public bool NewMembers { get; set; } - public bool Neophytes { get; set; } - public bool Actives { get; set; } - public bool Alumni { get; set; } - public bool Affiliates { get; set; } - public bool Released { get; set; } - - internal bool IsBlank() - { - return !NewMembers && !Neophytes && !Actives && !Alumni && !Affiliates && !Released; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/RegisterModel.cs b/src/Dsp.Web/Areas/Members/Models/RegisterModel.cs deleted file mode 100644 index 5d9cc4de..00000000 --- a/src/Dsp.Web/Areas/Members/Models/RegisterModel.cs +++ /dev/null @@ -1,47 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.Web.Mvc; - - public class RegisterModel - { - - [Required] - [DataType(DataType.Text)] - [Display(Name = "User Name")] - public string UserName { get; set; } - - [Required(ErrorMessage = "The email address is required")] - [StringLength(50)] - [Display(Name = "Email")] - [EmailAddress(ErrorMessage = "Invalid Email Address")] - public string Email { get; set; } - - [Required] - [DataType(DataType.Text)] - [Display(Name = "First Name")] - public string FirstName { get; set; } - - [Required] - [DataType(DataType.Text)] - [Display(Name = "Last Name")] - public string LastName { get; set; } - - [Required] - [DataType(DataType.Text)] - [Display(Name = "Status")] - public string StatusId { get; set; } - public IEnumerable StatusList { get; set; } - - [DataType(DataType.Text)] - [Display(Name = "Graduation")] - public string ExpectedGraduationId { get; set; } - public IEnumerable SemesterList { get; set; } - - [DataType(DataType.Text)] - [Display(Name = "Pledge Class")] - public string PledgeClassId { get; set; } - public IEnumerable PledgeClassList { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/RegistrationConfirmationModel.cs b/src/Dsp.Web/Areas/Members/Models/RegistrationConfirmationModel.cs deleted file mode 100644 index ba9519b9..00000000 --- a/src/Dsp.Web/Areas/Members/Models/RegistrationConfirmationModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - public class RegistrationConfirmationModel - { - public string UserName { get; set; } - public string TemporaryPassword { get; set; } - public string CallbackUrl { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/RegistrationModel.cs b/src/Dsp.Web/Areas/Members/Models/RegistrationModel.cs deleted file mode 100644 index db110f78..00000000 --- a/src/Dsp.Web/Areas/Members/Models/RegistrationModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - public class RegistrationModel - { - public RegisterModel RegisterModel { get; set; } - public UnregisterModel UnregisterModel { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/ResendConfirmationEmailModel.cs b/src/Dsp.Web/Areas/Members/Models/ResendConfirmationEmailModel.cs deleted file mode 100644 index c4cf4d91..00000000 --- a/src/Dsp.Web/Areas/Members/Models/ResendConfirmationEmailModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace Dsp.Web.Areas.Members.Models -{ - public class ResendConfirmationEmailModel - { - [Required] - [EmailAddress] - [Display(Name = "Email")] - public string Email { get; set; } - } -} diff --git a/src/Dsp.Web/Areas/Members/Models/ResetPasswordModel.cs b/src/Dsp.Web/Areas/Members/Models/ResetPasswordModel.cs deleted file mode 100644 index 6ff554e8..00000000 --- a/src/Dsp.Web/Areas/Members/Models/ResetPasswordModel.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace Dsp.Web.Areas.Members.Models -{ - public class ResetPasswordViewModel - { - [Required] - [EmailAddress] - [Display(Name = "Email")] - public string Email { get; set; } - - [Required] - [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] - [DataType(DataType.Password)] - [Display(Name = "Password")] - public string Password { get; set; } - - [DataType(DataType.Password)] - [Display(Name = "Confirm password")] - [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] - public string ConfirmPassword { get; set; } - - public string Code { get; set; } - } -} diff --git a/src/Dsp.Web/Areas/Members/Models/RosterFilterModel.cs b/src/Dsp.Web/Areas/Members/Models/RosterFilterModel.cs deleted file mode 100644 index b1c8a483..00000000 --- a/src/Dsp.Web/Areas/Members/Models/RosterFilterModel.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - public class RosterFilterModel - { - public int? sem { get; set; } - public string sort { get; set; } - public string order { get; set; } - public string s { get; set; } - - public RosterFilterModel() - { - sem = null; - sort = "last-name"; - order = "asc"; - s = string.Empty; - } - public RosterFilterModel(RosterFilterModel original) - { - sem = original.sem; - sort = original.sort; - order = original.order; - s = original.s; - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/RosterIndexModel.cs b/src/Dsp.Web/Areas/Members/Models/RosterIndexModel.cs deleted file mode 100644 index c5afbf24..00000000 --- a/src/Dsp.Web/Areas/Members/Models/RosterIndexModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class RosterIndexModel - { - public int SelectedSemester { get; set; } - public Semester Semester { get; set; } - public IEnumerable Semesters { get; set; } - public IEnumerable Members { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Models/UnregisterModel.cs b/src/Dsp.Web/Areas/Members/Models/UnregisterModel.cs deleted file mode 100644 index 70938d51..00000000 --- a/src/Dsp.Web/Areas/Members/Models/UnregisterModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Dsp.Web.Areas.Members.Models -{ - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.Web.Mvc; - - public class UnregisterModel - { - [Display(Name = "Users")] - public int SelectedUserId { get; set; } - public IEnumerable Users { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ConfirmEmail.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ConfirmEmail.cshtml deleted file mode 100644 index 34652552..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ConfirmEmail.cshtml +++ /dev/null @@ -1,20 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Email Confirmed!"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
-

- Your email has been successfully confirmed. - Please follow the remaining instructions in your registration email. -

-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/Edit.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/Edit.cshtml deleted file mode 100644 index c8a67ba7..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/Edit.cshtml +++ /dev/null @@ -1,203 +0,0 @@ -@model EditMemberInfoModel -@{ - ViewBag.Title = "Editing " + Model.Member; - var isAdmin = User.IsInRole("Administrator"); - var isSecretary = User.IsInRole("Secretary"); - var isCurrentUser = User.Identity.GetUserId() == Model.Member.Id; - - var showAvatar = isAdmin || isCurrentUser; - var showFirstName = true; - var showLastName = true; - var showEmail = true; - var showExpectedGraduation = true; - var showPin = true; - var showStatus = isAdmin || isSecretary; - var showPledgeClass = isAdmin || isSecretary; - var showBigBro = true; - var showShirtSize = true; - var showDietaryInstructions = true; -} - -
- -
-
-
-
- -
-
- @if (showAvatar) - { -

Upload new avatar

- - using (Html.BeginForm("Avatar", "Account", FormMethod.Post, new { enctype = "multipart/form-data" })) - { - @Html.HiddenFor(m => m.Member.Id) - -
- -
-
- -
- } - } -
-
- -

Information

- @using (Html.BeginForm("Edit", "Account", FormMethod.Post, new { @class = "", role = "form" })) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.Member.Id) - @Html.HiddenFor(m => m.Member.UserName) - - if (showFirstName) - { -
- @Html.LabelFor(m => m.Member.FirstName, new { @class = "control-label" }) - @Html.EditorFor(m => m.Member.FirstName, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(m => m.Member.FirstName, "", new { @class = "text-danger" }) -
- } - else - { - @Html.HiddenFor(m => m.Member.FirstName) - } - - if (showLastName) - { -
- @Html.LabelFor(m => m.Member.LastName, new { @class = "control-label" }) - @Html.EditorFor(m => m.Member.LastName, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(m => m.Member.LastName, "", new { @class = "text-danger" }) -
- } - else - { - @Html.HiddenFor(m => m.Member.LastName) - } - - if (showEmail) - { -
- @Html.LabelFor(m => m.Member.Email, new { @class = "control-label" }) - @Html.EditorFor(m => m.Member.Email, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(m => m.Member.Email, "", new { @class = "text-danger" }) -
- } - else - { - @Html.HiddenFor(m => m.Member.Email) - } - - if (showExpectedGraduation) - { -
- @Html.LabelFor(m => m.Member.ExpectedGraduationId, new { @class = "control-label" }) - @Html.DropDownListFor(m => m.Member.ExpectedGraduationId, Model.Semesters, - new {@class = "form-control selectpicker", autocomplete = "off", data_live_search = "true"}) -
- } - else - { - @Html.HiddenFor(m => m.Member.ExpectedGraduationId) - } - - if (showPin) - { -
- @Html.LabelFor(m => m.Member.Pin, new { @class = "control-label" }) - @Html.EditorFor(m => m.Member.Pin, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(m => m.Member.Pin, "", new { @class = "text-danger" }) -
- } - else - { - @Html.HiddenFor(m => m.Member.Pin) - } - - if (showStatus) - { -
- @Html.LabelFor(m => m.Member.StatusId, new { @class = "control-label" }) - @Html.DropDownListFor(m => m.Member.StatusId, Model.Statuses, new { @class = "form-control selectpicker" }) -
- } - else - { - @Html.HiddenFor(m => m.Member.StatusId) - } - - if (showPledgeClass) - { -
- @Html.LabelFor(m => m.Member.PledgeClassId, new { @class = "control-label" }) - @Html.DropDownListFor(m => m.Member.PledgeClassId, Model.PledgeClasses, - new {@class = "form-control selectpicker", autocomplete = "off", data_live_search = "true"}) -
- } - else - { - @Html.HiddenFor(m => m.Member.PledgeClassId) - } - - if (showBigBro) - { -
- @Html.LabelFor(m => m.Member.BigBroId, new { @class = "control-label" }) - @Html.DropDownListFor(m => m.Member.BigBroId, Model.Members, - new {@class = "form-control selectpicker", autocomplete = "off", data_live_search = "true"}) -
- } - else - { - @Html.HiddenFor(m => m.Member.BigBroId) - } - - if (showShirtSize) - { -
- @Html.LabelFor(m => m.Member.ShirtSize, new { @class = "control-label" }) - @Html.DropDownListFor(m => m.Member.ShirtSize, Model.ShirtSizes, new { @class = "form-control selectpicker" }) -
- } - else - { - @Html.HiddenFor(m => m.Member.ShirtSize) - } - - if (showDietaryInstructions) - { -
- @Html.LabelFor(m => m.Member.DietaryInstructions, new { @class = "control-label" }) - @Html.EditorFor(m => m.Member.DietaryInstructions, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(m => m.Member.DietaryInstructions, "", new { @class = "text-danger" }) -
- } - else - { - @Html.HiddenFor(m => m.Member.DietaryInstructions) - } - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ExternalLoginConfirmation.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ExternalLoginConfirmation.cshtml deleted file mode 100644 index 9badd786..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ExternalLoginConfirmation.cshtml +++ /dev/null @@ -1,32 +0,0 @@ -@model ExternalLoginConfirmationViewModel -@{ - ViewBag.Title = "Register"; -} -

@ViewBag.Title.

-

Associate your @ViewBag.LoginProvider account.

- -@using (Html.BeginForm("ExternalLoginConfirmation", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) -{ - @Html.AntiForgeryToken() - -

Association Form

-
- @Html.ValidationSummary(true, "", new { @class = "text-danger" }) -

- You've successfully authenticated with @ViewBag.LoginProvider. - Please enter a user name for this site below and click the Register button to finish - logging in. -

-
- @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) -
- @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) - @Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" }) -
-
-
-
- -
-
-} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ExternalLoginFailure.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ExternalLoginFailure.cshtml deleted file mode 100644 index 0b1c7438..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ExternalLoginFailure.cshtml +++ /dev/null @@ -1,35 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "External Login Failure"; -} -@section Title -{ - @Html.Partial("_TitleExternal") -} - -
-
-
-

- - Unfortunately, you cannot sign in with an external provider until you set it up with your local website account. - Sign in with your local account first and then follow the instructions in your account profile page. - -

-
- - - We do not allow account registration with an external provider. - You must first be registered by existing member with appropriate permissions. - -
-

- - - Go Back - -

-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ForgotPassword.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ForgotPassword.cshtml deleted file mode 100644 index 0cf93b8e..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ForgotPassword.cshtml +++ /dev/null @@ -1,38 +0,0 @@ -@model ForgotPasswordModel -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Forgot your password?"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
- @using (Html.BeginForm("ForgotPassword", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) - { - @Html.AntiForgeryToken() -

Enter your email to receive an email to reset your password.

- @Html.ValidationSummary("", new { @class = "text-danger" }) -
- @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) -
- @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) -
-
-
-
- -
-
- } -
-
-
- -@section Scripts { - @Scripts.Render("~/bundles/jqueryval") -} diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ForgotPasswordConfirmation.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ForgotPasswordConfirmation.cshtml deleted file mode 100644 index c0495925..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ForgotPasswordConfirmation.cshtml +++ /dev/null @@ -1,19 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Forgot Password Confirmation"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
-

- Please check your email to reset your password. -

-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ForgotUsername.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ForgotUsername.cshtml deleted file mode 100644 index d8190dc9..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ForgotUsername.cshtml +++ /dev/null @@ -1,38 +0,0 @@ -@model ForgotUsernameModel -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Forgot your username?"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
- @using (Html.BeginForm("ForgotUsername", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) - { - @Html.AntiForgeryToken() -

Enter your email to receive an email with your username.

- @Html.ValidationSummary("", new { @class = "text-danger" }) -
- @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) -
- @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) -
-
-
-
- -
-
- } -
-
-
- -@section Scripts { - @Scripts.Render("~/bundles/jqueryval") -} diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ForgotUsernameConfirmation.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ForgotUsernameConfirmation.cshtml deleted file mode 100644 index 9af9dd46..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ForgotUsernameConfirmation.cshtml +++ /dev/null @@ -1,19 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Forgot Username Confirmation"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
-

- Please check your email to receive your username. -

-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/Index.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/Index.cshtml deleted file mode 100644 index be011d29..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/Index.cshtml +++ /dev/null @@ -1,295 +0,0 @@ -@model AccountInformationModel -@{ - ViewBag.Title = "Account Profile"; - ViewBag.Subtitle = Model.Member.ToString(); - - // Permissions - var userRoles = Roles.GetRolesForUser(); - var isAdmin = userRoles.Any(r => r == "Administrator"); - var isCurrentUser = User.Identity.GetUserId() == Model.Member.Id; - var isSecretary = isAdmin; - var isAcademic = isAdmin; - var isHousing = isAdmin; - var isMember = isAdmin; - - if (!isAdmin) - { - foreach (var r in userRoles) - { - switch (r) - { - case "Administrator": break; - case "Secretary": isSecretary = true; break; - case "Academics": isAcademic = true; break; - case "House Manager": isHousing = true; break; - case "Active": isMember = true; break; - case "New": isMember = true; break; - case "Neophyte": isMember = true; break; - case "Alumnus": isMember = true; break; - case "Advisor": isMember = true; break; - default: break; - } - } - } - - var showEdit = isSecretary || isAcademic || isHousing || isCurrentUser; - var canModifyMajor = isAcademic || isSecretary || isCurrentUser; - var canModifyPhoneNumbers = isSecretary || isCurrentUser; - var canModifyAddresses = isSecretary || isCurrentUser; -} - -
-
-
- @Html.Partial("~/Areas/Members/Views/Shared/_AccountNavPartial.cshtml") -
-
-
-
- Information - @if (showEdit) - { - - - - } -
- - - - - - - - - - - - - - - @if (isMember) - { - if (Model.Member.PledgeClass != null) - { - var pledgeClassLetters = Model.Member.PledgeClass.GetLetters(); - - - - - } - if (Model.Member.GraduationSemester != null) - { - - - - - } - - - - - if (Model.Member.Rooms.Any()) - { - var counter = 0; - foreach (var r in Model.Member.Rooms.OrderByDescending(s => s.MovedOut)) - { - counter++; - - @if (counter == 1) - { - - } - - - } - } - else - { - - - - - } - - - - - - - - - - - - - - - - - } - - - - @foreach (var item in Model.Member.PhoneNumbers) - { - - - - - } - - - - @foreach (var item in Model.Member.Addresses) - { - - - - - } - -
User Name@Model.Member.UserName
Email@Model.Member.Email
Status@Model.Member.MemberStatus.StatusName
Pledge Class - @Html.Raw(pledgeClassLetters) - - -
Graduation@Model.Member.GraduationSemester.ToString()
- @(Model.Member.MajorsToMember.Count <= 1 ? "Major" : "Majors") - @if (canModifyMajor) - { - - - - } - - @if (Model.Member.MajorsToMember.Any()) - { - foreach (var m in Model.Member.MajorsToMember) - { - @m.Major.MajorName - @:(@m.DegreeLevel) - if (canModifyMajor) - { - - - - } -
- } - } -
Residences - @r.Room.Name (@r.GetSemester()) -
Residences
Big Bro - @(Model.Member.BigBrother == null ? "" : Model.Member.BigBrother.ToString()) -
Pin@Model.Member.Pin
Shirt Size@Model.Member.ShirtSize
Dietary Instructions@Model.Member.DietaryInstructions
- Phone Numbers -
@item.Type - @if (!string.IsNullOrEmpty(item.Number)) - { - - @item.Number - - } - @if (canModifyPhoneNumbers) - { - - - - } -
- Addresses -
@item.Type - @if (item.IsFilledOut()) - { - - @item.Address1, - @if (@item.Address2 != null) - { - @item.Address2@:, - } - @item.City, @item.State @item.PostalCode, @item.Country - - } - @if (canModifyAddresses) - { - - - - } -
-
-
- @if (isMember) - { -
-
-
-
-
- Schedule - @Model.CurrentSemester -
-
- - @Html.ActionLink("All Classes", "Schedule", "Classes", new { userName = Model.Member.UserName, area = "Edu" }, new { @class = "" }) - -
-
-
-
- - - - - - - - - @if (Model.ThisSemesterCourses.Any()) - { - foreach (var item in Model.ThisSemesterCourses.Where(c => !c.IsSummerClass)) - { - var broCount = item.Class.ClassesTaken.Count(c => c.SemesterId == Model.CurrentSemester.Id) - 1; - - - - - - } - } - else - { - - - - } - -
Course - Brothers - -
@item.Class.CourseShorthand - @item.Class.CourseName - @Html.ActionLink(broCount.ToString(), "Details", "Classes", new { area = "Edu", id = item.ClassId }, null) -
No classes added!
-
- -
-
- } -
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/Manage.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/Manage.cshtml deleted file mode 100644 index 16aa5711..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/Manage.cshtml +++ /dev/null @@ -1,103 +0,0 @@ -@model AccountManagementModel -@{ - ViewBag.Title = "Account Management"; - ViewBag.Subtitle = Model.Member.ToString(); - var loginProviders = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes().ToList(); -} - -
-
-
- @Html.Partial("~/Areas/Members/Views/Shared/_AccountNavPartial.cshtml") -
-
- @if (loginProviders.Any()) - { -
-
External Login Providers
-
- - - @foreach (var p in loginProviders) - { - var loginAlreadyLinked = Model.CurrentLogins.Select(l => l.LoginProvider).Contains(p.AuthenticationType); - - - - - - } - -
- @if (p.AuthenticationType == "Google") - { - - @p.AuthenticationType - } - else - { - @p.AuthenticationType - } - - @if (!loginAlreadyLinked) - { - using (Html.BeginForm("LinkLogin", "Account")) - { - @Html.AntiForgeryToken() - - } - } - else - { - var provider = Model.CurrentLogins - .Single(l => l.LoginProvider == p.AuthenticationType); - - using (Html.BeginForm("RemoveLogin", "Account")) - { - @Html.AntiForgeryToken() -
- @Html.Hidden("loginProvider", provider.LoginProvider) - @Html.Hidden("providerKey", provider.ProviderKey) - -
- } - } -
-
-
- } - @if (User.Identity.Name == Model.Member.UserName) - { -
-
Change Password
-
- @using (Html.BeginForm("ChangePassword", "Account", null, FormMethod.Post, new {role = "form"})) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.PasswordFor(m => m.OldPassword, new { @class = "form-control", placeholder = "Old Password" }) - @Html.ValidationMessageFor(m => m.OldPassword, "", new { @class = "text-danger" }) -
-
- @Html.PasswordFor(m => m.NewPassword, new { @class = "form-control", placeholder = "New Password" }) - @Html.ValidationMessageFor(m => m.NewPassword, "", new { @class = "text-danger" }) -
-
- @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control", placeholder = "Confirm Password" }) - @Html.ValidationMessageFor(m => m.ConfirmPassword, "", new { @class = "text-danger" }) -
- - } -
-
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/Registration.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/Registration.cshtml deleted file mode 100644 index 6043502b..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/Registration.cshtml +++ /dev/null @@ -1,15 +0,0 @@ -@model RegistrationModel -@{ - ViewBag.Title = "Registration"; -} - -
-
-
- @{Html.RenderPartial("_RegisterPartial", Model.RegisterModel);} -
-
- @{Html.RenderPartial("_UnregisterPartial", Model.UnregisterModel);} -
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ResendConfirmationEmail.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ResendConfirmationEmail.cshtml deleted file mode 100644 index fd0614b1..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ResendConfirmationEmail.cshtml +++ /dev/null @@ -1,38 +0,0 @@ -@model ResendConfirmationEmailModel -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Resend Confirmation Email"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
- @using (Html.BeginForm("ResendConfirmationEmail", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) - { - @Html.AntiForgeryToken() -

Enter your email to resend the link to confirm your email.

- @Html.ValidationSummary("", new { @class = "text-danger" }) -
- @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) -
- @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) -
-
-
-
- -
-
- } -
-
-
- -@section Scripts { - @Scripts.Render("~/bundles/jqueryval") -} diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ResendConfirmationEmailConfirmation.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ResendConfirmationEmailConfirmation.cshtml deleted file mode 100644 index 1aab8406..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ResendConfirmationEmailConfirmation.cshtml +++ /dev/null @@ -1,19 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Confirmation Email Resent!"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
-

- Please check your email to receive your new confirmation link. -

-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/ResetPasswordConfirmation.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/ResetPasswordConfirmation.cshtml deleted file mode 100644 index 8a6f9c0c..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/ResetPasswordConfirmation.cshtml +++ /dev/null @@ -1,20 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Reset password confirmation"; -} - -
-
-
-
- DSP -

@ViewBag.Title

-
-
-

- Your password has been reset. - Please @Html.ActionLink("click here to sign in", "Signin", "Account", new { area = "Members" }). -

-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Account/SignIn.cshtml b/src/Dsp.Web/Areas/Members/Views/Account/SignIn.cshtml deleted file mode 100644 index a310d907..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Account/SignIn.cshtml +++ /dev/null @@ -1,73 +0,0 @@ -@model LoginModel -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Sign In"; - var loginProviders = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes().ToList(); -} - -
-
-
-
- DSP -

Sphinx Sign-In

-
-
- @using (Html.BeginForm("SignIn", "Account", FormMethod.Post, new { role = "form" })) - { - Model.ReturnUrl = Request.QueryString["returnUrl"]; - @Html.HiddenFor(m => m.ReturnUrl) - @Html.AntiForgeryToken() - -
- @Html.TextBoxFor(m => m.UserName, new { @class = "form-control", placeholder = "User Name", autofocus = "", type = "text" }) - @Html.ValidationMessageFor(m => m.UserName, null, new { @class = "text-danger" }) -
-
- @Html.PasswordFor(m => m.Password, new { @class = "form-control", placeholder = "Password" }) - @Html.ValidationMessageFor(m => m.Password, null, new { @class = "text-danger" }) -
-
- -
- -
-
- } - @if (loginProviders.Any()) - { -

Or use

-
- @using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = Model.ReturnUrl }, FormMethod.Post)) - { - @Html.AntiForgeryToken() - foreach (var p in loginProviders) - { - if (p.AuthenticationType == "Google") - { - - } - } - } -
- } -
-

- @ViewBag.FailMessage -

-

- Forgot Username | - Forgot Password | - Resend Confirmation Email -

-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Addresses/Edit.cshtml b/src/Dsp.Web/Areas/Members/Views/Addresses/Edit.cshtml deleted file mode 100644 index 72f60e38..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Addresses/Edit.cshtml +++ /dev/null @@ -1,60 +0,0 @@ -@model Dsp.Data.Entities.Address -@{ - ViewBag.Title = "Edit Address"; - ViewBag.Subtitle = Model.Type + " Address for " + Model.Member; -} -
-
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.AddressId) - @Html.HiddenFor(model => model.UserId) - @Html.HiddenFor(model => model.Type) - -
- @Html.LabelFor(model => model.Address1, htmlAttributes: new { @class = "" }) - @Html.EditorFor(model => model.Address1, new { htmlAttributes = new { @class = "form-control", placeholder = "Address 1" } }) - @Html.ValidationMessageFor(model => model.Address1, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Address2, htmlAttributes: new { @class = "" }) - @Html.EditorFor(model => model.Address2, new { htmlAttributes = new { @class = "form-control", placeholder = "Address 2" } }) - @Html.ValidationMessageFor(model => model.Address2, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.City, htmlAttributes: new { @class = "" }) - @Html.EditorFor(model => model.City, new { htmlAttributes = new { @class = "form-control", placeholder = "City" } }) - @Html.ValidationMessageFor(model => model.City, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.State, htmlAttributes: new { @class = "" }) - @Html.EditorFor(model => model.State, new { htmlAttributes = new { @class = "form-control", placeholder = "State" } }) - @Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.PostalCode, htmlAttributes: new { @class = "" }) - @Html.EditorFor(model => model.PostalCode, new { htmlAttributes = new { @class = "form-control", placeholder = "Postal Code" } }) - @Html.ValidationMessageFor(model => model.PostalCode, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Country, htmlAttributes: new { @class = "" }) - @Html.EditorFor(model => model.Country, new { htmlAttributes = new { @class = "form-control", placeholder = "Country" } }) - @Html.ValidationMessageFor(model => model.Country, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Views/Addresses/Index.cshtml b/src/Dsp.Web/Areas/Members/Views/Addresses/Index.cshtml deleted file mode 100644 index d2a53d2f..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Addresses/Index.cshtml +++ /dev/null @@ -1,129 +0,0 @@ -@model IEnumerable -@{ - ViewBag.Title = "Addresses"; - ViewBag.Print = true; -} - -
- -
-
- @using (Html.BeginForm("Index", "Addresses", FormMethod.Get, new { @class = "form-inline" })) - { -
- - - - - - @if (!string.IsNullOrEmpty(ViewBag.SearchTerm)) - { - - - - - - } -
- if (!string.IsNullOrEmpty(ViewBag.SearchTerm)) - { - Searched for: @ViewBag.SearchTerm - } - } -
-
-
-
-
-
-
-
Member
-
Address(es)
-
-
-
- @if (Model.Any()) - { - foreach (var m in Model) - { - var name = m.ToString(); - -
-
- -
- @foreach (var a in m.Addresses) - { - var address = a.ToString(); - - if (!string.IsNullOrEmpty(a.ToString())) - { - @a.Type: - - @if (address.ToLower().Contains(ViewBag.SearchTerm.ToLower())) - { - var matchLocation = address.ToLower().IndexOf(ViewBag.SearchTerm.ToLower()); - var searchLength = ViewBag.SearchTerm.Length; - address = address.Insert(matchLocation, ""); - address = address.Insert(matchLocation + searchLength + 6, ""); - @Html.Raw(address) - } - else - { - @: @address - } - -
- } - } -
-
-
- } - } - else - { -
- No results!
- Search by first/last name or full/partial address. Type ":all" to list everyone. -
- } -
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Incidents/Details.cshtml b/src/Dsp.Web/Areas/Members/Views/Incidents/Details.cshtml deleted file mode 100644 index 81b2748b..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Incidents/Details.cshtml +++ /dev/null @@ -1,101 +0,0 @@ -@model IncidentReportDetailsModel -@{ - ViewBag.Title = "Incident"; - ViewBag.Subtitle = "ID: " + Model.Report.Id; - ViewBag.Print = true; -} - -
-
-
-
- -
- @if (Model.CanEditReport) - { - - Edit - - } -
-
-
-
-
-
-
-
@Model.Report.PolicyBroken
-
- @if (Model.CanViewOriginalReport) - { -
-
-
-

Occurred On

- @Model.Report.DateTimeOfIncident.ToShortDateString() -
-
-

Submitted On

- @Model.Report.DateTimeSubmitted.ToShortDateString() -
-
-
-
-

Submitted Description

- @Model.Report.Description -
- } - @if (!string.IsNullOrEmpty(Model.Report.InvestigationNotes) && Model.CanViewInvestigationNotes) - { -
-

Investigation Notes

- @Model.Report.InvestigationNotes -
- } - else if (Model.CanViewInvestigationNotes) - { -
- No investigation notes have been added. -
- } - @if (!string.IsNullOrEmpty(Model.Report.OfficialReport)) - { -
-

Official Report

- @Model.Report.OfficialReport -
- } - else - { -
- No official report has been submitted yet. -
- } - @if (Model.CanViewOriginalReport) - { -
-

Reported By

- - @if (Model.Report.ShareIdentity) - { - var member = Model.Report.Member; - @(member != null ? member.ToString() : "Unknown") - } - else - { - @: Not shared. - } - -
- } -
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Incidents/Edit.cshtml b/src/Dsp.Web/Areas/Members/Views/Incidents/Edit.cshtml deleted file mode 100644 index 6273bf1a..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Incidents/Edit.cshtml +++ /dev/null @@ -1,93 +0,0 @@ -@model IncidentReport -@{ - ViewBag.Title = "Edit"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.Id) - @Html.HiddenFor(model => model.DateTimeOfIncident) - @Html.HiddenFor(model => model.DateTimeSubmitted) - @Html.HiddenFor(model => model.Description) - -
- @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label" }) -

- @Html.DisplayFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } }) -

-
- -
- @Html.LabelFor(model => model.PolicyBroken, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.PolicyBroken, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.PolicyBroken, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.InvestigationNotes, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.InvestigationNotes, new { htmlAttributes = new { @class = "form-control", rows = 10 } }) - @Html.ValidationMessageFor(model => model.InvestigationNotes, "", new { @class = "text-danger" }) -
-
- @Html.LabelFor(model => model.OfficialReport, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.OfficialReport, new { htmlAttributes = new { @class = "form-control", rows = 10 } }) - @Html.ValidationMessageFor(model => model.OfficialReport, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
- Policy Broken -
-

- This should briefly describe at a very high level what occurred. - It is important to be accurate with this information because it - will be easier for others to search incident reports back on the incident report list. -

-
-
- Investigation Notes -
-

- The investigation notes are visible to only executive board members. - The purpose of the investigation notes is to provide a partially restricted accounting - of what was discovered by the Sergeant-at-Arms after looking into the incident. - It also serves to provide further justification for the contents of the Official Report if - the Official Report comes across as vague. -

-
-
- Official Report -
-

- The official report is visible to all members. - The purpose of the official report is to provide future members - a record of how incidents have been handled. For this reason, - it is advised that official reports only contain: -

    -
  • necessary details from the incident description
  • -
  • any actions, or lack thereof, taken in response to the incident
  • -
-

-
-
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Views/Incidents/Index.cshtml b/src/Dsp.Web/Areas/Members/Views/Incidents/Index.cshtml deleted file mode 100644 index 84a8e788..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Incidents/Index.cshtml +++ /dev/null @@ -1,144 +0,0 @@ -@model IncidentsIndexModel -@{ - ViewBag.Title = "Incident Reports"; - - const string newestSortText = "newest"; - const string oldestSortText = "oldest"; - - var sortNewestFilter = new IncidentsIndexFilterModel(Model.Filter); - var sortOldestFilter = new IncidentsIndexFilterModel(Model.Filter); - var previousPageFilter = new IncidentsIndexFilterModel(Model.Filter); - var nextPageFilter = new IncidentsIndexFilterModel(Model.Filter); - var unresolvedFilter = new IncidentsIndexFilterModel(Model.Filter); - var resolvedFilter = new IncidentsIndexFilterModel(Model.Filter); - - sortNewestFilter.sort = Model.Filter.sort == newestSortText ? "" : newestSortText; - sortOldestFilter.sort = Model.Filter.sort == oldestSortText ? "" : oldestSortText; - previousPageFilter.page = Model.Filter.page - 1; - nextPageFilter.page = Model.Filter.page + 1; - unresolvedFilter.unresolved = !Model.Filter.unresolved; - resolvedFilter.resolved = !Model.Filter.resolved; - - var pagerModel = new PagerModel - { - Previous = previousPageFilter, - Incrementer = Model.Filter, - Next = nextPageFilter, - CurrentPage = Model.Filter.page, - PageSize = Model.Filter.pageSize, - ResultCount = Model.ResultCount, - TotalPages = Model.TotalPages - }; -} - -
-
-
-
-
- @using (Html.BeginForm("Index", "Incidents", FormMethod.Get, new {@class = "form-inline"})) - { -
- @Html.ActionLink("Unresolved", "Index", "Incidents", unresolvedFilter, new - { - @class = "btn btn-default " + (ViewBag.Title == "Incidents" ? "active" : "") + (Model.Filter.unresolved ? " active" : "") - }) - @Html.ActionLink("Resolved", "Index", "Incidents", resolvedFilter, new - { - @class = "btn btn-default " + (ViewBag.Title == "Incidents" ? "active" : "") + (Model.Filter.resolved ? " active" : "") - }) - -
-
-
- - - - - - -
- } -
-
-
- @Html.ActionLink("Submit Incident Report", "Submit", null, new { @class = "btn btn-sm btn-success" }) -
-
- - @if (Model.Incidents.Any()) - { -
-
-
-
- @Model.UnresolvedCount Unresolved - @Model.ResolvedCount Resolved -
-
- @if (!string.IsNullOrEmpty(Model.Filter.s)) - { - Searched for: @Model.Filter.s - } -
-
-
- -
    - @foreach (var i in Model.Incidents) - { - var status = string.IsNullOrEmpty(i.OfficialReport) ? "unresolved" : "resolved"; - var labelColor = string.IsNullOrEmpty(i.OfficialReport) ? "label-warning" : "label-success"; - var timeSince = (DateTime.UtcNow - i.DateTimeSubmitted).ToUserFriendlyString(); - - -

    - @i.PolicyBroken - - - @status - - -

    -

    - submitted @timeSince -

    -
    - } -
- @Html.Partial("~/Views/Shared/_PagerPartial.cshtml", pagerModel) -
- } - else - { -
- No incident reports found. -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/Incidents/Submit.cshtml b/src/Dsp.Web/Areas/Members/Views/Incidents/Submit.cshtml deleted file mode 100644 index 575b822f..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Incidents/Submit.cshtml +++ /dev/null @@ -1,106 +0,0 @@ -@model IncidentReport -@{ - ViewBag.Title = "Submit Incident Report"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(false, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.InvestigationNotes, new { @Value = "No notes" }) - -
- @Html.LabelFor(m => m.DateTimeOfIncident, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.DateTimeOfIncident, new { htmlAttributes = new { @class = "form-control", type = "datetime", @Value = DateTime.UtcNow.ToShortDateString() } }) - - - -
- @Html.ValidationMessageFor(m => m.DateTimeOfIncident, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(m => m.PolicyBroken, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(m => m.PolicyBroken, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(m => m.PolicyBroken, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(m => m.Description, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(m => m.Description, new { htmlAttributes = new { @class = "form-control", rows = 10 } }) - @Html.ValidationMessageFor(m => m.Description, "", new { @class = "text-danger" }) -
- -
- - @Html.ValidationMessageFor(m => m.ShareIdentity, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
- Policy Broken -
-

- This should briefly describe what occurred at a high level. - Making this information as accurate as possible will improve - the search feature on the main Incident Reports list. -

-
-
- Incident Description -
-

- The incident description should contain an objective and clear recounting - of the actions unbecoming of a member. - The incident description is only viewable by the following members: -

-
    -
  1. President
  2. -
  3. Sergeant-at-Arms
  4. -
  5. Administrators
  6. -
-

- You are encouraged to speak with (1) and (2) above after submitting a report. - No one, including those mentioned above, can see who submitted an incident report on the website. -

-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Views/PhoneNumbers/Edit.cshtml b/src/Dsp.Web/Areas/Members/Views/PhoneNumbers/Edit.cshtml deleted file mode 100644 index b9806055..00000000 --- a/src/Dsp.Web/Areas/Members/Views/PhoneNumbers/Edit.cshtml +++ /dev/null @@ -1,45 +0,0 @@ -@model Dsp.Data.Entities.PhoneNumber -@{ - ViewBag.Title = "Edit Phone Number"; - ViewBag.Subtitle = Model.Type + " Number for " + Model.Member; -} -
-
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.PhoneNumberId) - @Html.HiddenFor(model => model.UserId) - @Html.HiddenFor(model => model.Type) - -
- @Html.LabelFor(model => model.Number, htmlAttributes: new { @class = "" }) - @Html.EditorFor(model => model.Number, new {htmlAttributes = new {@class = "form-control", placeholder = "Check format on the right"}}) - @Html.ValidationMessageFor(model => model.Number, "", new {@class = "text-danger"}) -
-
- -
- } - -
-
-
- Phone Number Formats -
-

Please use one of the following formats:

-
    -
  • US Numbers: ### - ### - ####
  • -
  • - - International Numbers: - Number portion must be 10-15 characters long with an optional + symbol at the front (no spaces). - -
  • -
-
-
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Views/PhoneNumbers/Index.cshtml b/src/Dsp.Web/Areas/Members/Views/PhoneNumbers/Index.cshtml deleted file mode 100644 index 7a87364b..00000000 --- a/src/Dsp.Web/Areas/Members/Views/PhoneNumbers/Index.cshtml +++ /dev/null @@ -1,130 +0,0 @@ -@model IEnumerable -@{ - ViewBag.Title = "Phone Numbers"; - ViewBag.Print = true; -} - -
- -
-
- @using (Html.BeginForm("Index", "PhoneNumbers", FormMethod.Get, new { @class = "form-inline" })) - { -
- - - - - - @if (!string.IsNullOrEmpty(ViewBag.SearchTerm)) - { - - - - - - } -
- if (!string.IsNullOrEmpty(ViewBag.SearchTerm)) - { - Searched for: @ViewBag.SearchTerm - } - } -
-
- -
diff --git a/src/Dsp.Web/Areas/Members/Views/Roster/Index.cshtml b/src/Dsp.Web/Areas/Members/Views/Roster/Index.cshtml deleted file mode 100644 index 33bacaa4..00000000 --- a/src/Dsp.Web/Areas/Members/Views/Roster/Index.cshtml +++ /dev/null @@ -1,226 +0,0 @@ -@using Dsp.Web.Areas.Members.Models -@model RosterIndexModel -@{ - ViewBag.Title = "Roster"; - ViewBag.Subtitle = Model.Semester.ToString(); - - var newMemberCount = Model.Members.Count(m => m.PledgeClass.SemesterId == Model.SelectedSemester); - var activeCount = Model.Members.Count(m => m.PledgeClass.SemesterId != Model.SelectedSemester); - - var filter = new RosterFilterModel - { - sem = Model.SelectedSemester, - sort = ViewBag.Sort, - order = ViewBag.Order, - s = ViewBag.SearchTerm - }; - - var sortLastNameFilter = new RosterFilterModel(filter); - var sortFirstNameFilter = new RosterFilterModel(filter); - var sortPledgeClassFilter = new RosterFilterModel(filter); - var sortLastSemesterFilter = new RosterFilterModel(filter); - var sortLocationFilter = new RosterFilterModel(filter); - var changeOrderFilter = new RosterFilterModel(filter); - var clearSearchTermFilter = new RosterFilterModel(filter); - - const string lastNameSortText = "last-name"; - const string firstNameSortText = "first-name"; - const string pledgeClassSortText = "pledge-class"; - const string lastSemesterSortText = "final-semester"; - const string locationSortText = "location"; - - sortLastNameFilter.sort = filter.sort == lastNameSortText ? "" : lastNameSortText; - sortFirstNameFilter.sort = filter.sort == firstNameSortText ? "" : firstNameSortText; - sortPledgeClassFilter.sort = filter.sort == pledgeClassSortText ? "" : pledgeClassSortText; - sortLastSemesterFilter.sort = filter.sort == lastSemesterSortText ? "" : lastSemesterSortText; - sortLocationFilter.sort = filter.sort == locationSortText ? "" : locationSortText; - changeOrderFilter.order = filter.order == "asc" ? filter.order = "desc" : filter.order = "asc"; - clearSearchTermFilter.s = string.Empty; -} - -
-
-
- @using (Html.BeginForm("Index", "Roster", new { area = "Members" }, FormMethod.Get, new { @class = "form-inline", style="display:inline" })) - { -
- - - - - @Html.DropDownList("sem", Model.Semesters, new - { - @class = "selectpicker", - autocomplete = "off", - id = "semester-dd", - data_live_search = "true", - data_size = "10", - data_width = "150px", - onchange = "this.form.submit()" - }) -
- } -
- - -
- - - -
- @using (Html.BeginForm("Index", "Roster", new { area = "Members" }, FormMethod.Get, new { @class = "form-inline", style="display:inline; margin-left:1px" })) - { -
- - - - - - - - - @if (!string.IsNullOrEmpty(ViewBag.SearchTerm)) - { - - - - - - } -
- if (!string.IsNullOrEmpty(ViewBag.SearchTerm)) - { - Searched for: @ViewBag.SearchTerm - } - } -
- - - - - - -
-
-
-
-
-
-
-
- Total: @Model.Members.Count() -
@activeCount -
|
@newMemberCount
-
-
- - Download Roster - - @if (User.IsInRole("Secretary") || User.IsInRole("Administrator")) - { - - Initiate New Members - - - Graduate Actives - - } -
-
-
-
- @foreach (var m in Model.Members) - { - var phone = m.PhoneNumbers.Single(p => p.Type == "Mobile") ?? new Dsp.Data.Entities.PhoneNumber(); - var status = m.MemberStatus.StatusName; - var statusColor = "label-default"; - if (status == "Active") - { - statusColor = "label-success"; - } - else if (status == "New") - { - statusColor = "label-info"; - } - else if (status == "Neophyte") - { - statusColor = "label-warning"; - } - - -

- - @m.ToString() - @if(!m.EmailConfirmed) - { - (Account Unconfirmed) - } - - @m.MemberStatus.StatusName - - - @m.PledgeClass.PledgeClassName - - @if (!string.IsNullOrEmpty(m.DietaryInstructions)) - { - - - - - } -

-
-
- @m.Email -
-
- @phone.Number -
-
- @m.LivingAssignmentForSemester(Model.Semester.Id) -
-
- @m.GraduationSemester.ToString() -
-
-
- } -
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Members/Views/_ViewStart.cshtml b/src/Dsp.Web/Areas/Members/Views/_ViewStart.cshtml deleted file mode 100644 index bffb9068..00000000 --- a/src/Dsp.Web/Areas/Members/Views/_ViewStart.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Members/Views/web.config b/src/Dsp.Web/Areas/Members/Views/web.config deleted file mode 100644 index 78ea084b..00000000 --- a/src/Dsp.Web/Areas/Members/Views/web.config +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Controllers/ApplicationsController.cs b/src/Dsp.Web/Areas/Scholarships/Controllers/ApplicationsController.cs deleted file mode 100644 index 1a0a1151..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Controllers/ApplicationsController.cs +++ /dev/null @@ -1,319 +0,0 @@ -namespace Dsp.Web.Areas.Scholarships.Controllers -{ - using Dsp.Data.Entities; - using Dsp.Web.Controllers; - using Extensions; - using MarkdownSharp; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Collections.Generic; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - public class ApplicationsController : BaseController - { - [Authorize(Roles = "Administrator, Alumnus, Active, Neophyte, New")] - public async Task Index() - { - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - - var apps = await _db.ScholarshipApps.ToListAsync(); - - foreach (var a in apps) - { - a.OpensOn = base.ConvertUtcToCst(a.OpensOn); - a.ClosesOn = base.ConvertUtcToCst(a.ClosesOn); - } - - return View(apps); - } - - [Authorize(Roles = "Administrator, Alumnus, Active, Neophyte, New")] - public async Task Details(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var scholarshipApp = await _db.ScholarshipApps.FindAsync(id); - if (scholarshipApp == null) return HttpNotFound(); - - scholarshipApp.OpensOn = base.ConvertUtcToCst(scholarshipApp.OpensOn); - scholarshipApp.ClosesOn = base.ConvertUtcToCst(scholarshipApp.ClosesOn); - - foreach (var s in scholarshipApp.Submissions) - { - s.SubmittedOn = base.ConvertUtcToCst(s.SubmittedOn); - } - - return View(scholarshipApp); - } - - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public async Task Create() - { - var model = new CreateScholarshipAppModel(); - model.Application = new ScholarshipApp(); - model.Types = await base.GetScholarshipTypesSelectListAsync(); - model.Questions = await base.GetScholarshipQuestionsAsync(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public async Task Create(CreateScholarshipAppModel model) - { - if (!ModelState.IsValid) - { - model.Types = await base.GetScholarshipTypesSelectListAsync(); - model.Questions = await base.GetScholarshipQuestionsAsync(); - return View(model); - } - - model.Application.Questions = new List(); - model.Application.OpensOn = base.ConvertCstToUtc(model.Application.OpensOn); - model.Application.ClosesOn = base.ConvertCstToUtc(model.Application.ClosesOn); - _db.ScholarshipApps.Add(model.Application); - if (model.Questions == null || !model.Questions.Any()) - { - TempData[FailureMessageKey] = - "Application creation failed because of an internal issue with questions. Please contact your administrator."; - return RedirectToAction("Index"); - } - var selections = model.Questions.Where(q => q.IsSelected); - foreach (var s in selections) - { - model.Application.Questions.Add(s.Question); - } - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Application created successfully"; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public async Task Edit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var scholarshipApp = await _db.ScholarshipApps.FindAsync(id); - if (scholarshipApp == null) return HttpNotFound(); - - var currentQuestions = scholarshipApp.Questions.Select(q => q.Question).ToList(); - var model = new CreateScholarshipAppModel(); - model.Application = scholarshipApp; - model.Application.OpensOn = base.ConvertUtcToCst(model.Application.OpensOn); - model.Application.ClosesOn = base.ConvertUtcToCst(model.Application.ClosesOn); - model.Questions = new List(); - model.Types = await base.GetScholarshipTypesSelectListAsync(); - - var questions = await _db.ScholarshipQuestions.ToListAsync(); - foreach (var q in questions) - { - var selection = new QuestionSelectionModel(); - if (currentQuestions.Contains(q)) - { - selection.Question = scholarshipApp.Questions - .Single(s => s.ScholarshipQuestionId == q.ScholarshipQuestionId); - selection.IsSelected = true; - } - else - { - var appQuestion = new ScholarshipAppQuestion(); - appQuestion.ScholarshipQuestionId = q.ScholarshipQuestionId; - appQuestion.FormOrder = 0; - appQuestion.Question = q; - - selection.Question = appQuestion; - } - model.Questions.Add(selection); - } - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public async Task Edit(CreateScholarshipAppModel model) - { - if (!ModelState.IsValid) - { - model.Types = await base.GetScholarshipTypesSelectListAsync(); - model.Questions = await base.GetScholarshipQuestionsAsync(); - return View(model); - } - - model.Application.OpensOn = base.ConvertCstToUtc(model.Application.OpensOn); - model.Application.ClosesOn = base.ConvertCstToUtc(model.Application.ClosesOn); - _db.Entry(model.Application).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - var scholarshipApp = await _db.ScholarshipApps - .Include(s => s.Submissions) - .Include(s => s.Questions) - .SingleAsync(s => model.Application.ScholarshipAppId == s.ScholarshipAppId); - - if (scholarshipApp.Submissions.Any()) - { - TempData[SuccessMessageKey] = - "Application information was updated but any changes to the question selection were not because submissions have already been made."; - return RedirectToAction("Index"); - } - - foreach (var s in scholarshipApp.Questions.ToList()) - { - _db.Entry(s).State = EntityState.Deleted; - } - await _db.SaveChangesAsync(); - - var selections = model.Questions.Where(q => q.IsSelected); - foreach (var s in selections) - { - scholarshipApp.Questions.Add(s.Question); - } - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Application updated successfully."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public async Task Delete(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var scholarshipApp = await _db.ScholarshipApps.FindAsync(id); - if (scholarshipApp == null) return HttpNotFound(); - - return View(scholarshipApp); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public async Task DeleteConfirmed(int id) - { - var scholarshipApp = await _db.ScholarshipApps.FindAsync(id); - _db.ScholarshipApps.Remove(scholarshipApp); - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Application deleted successfully."; - return RedirectToAction("Index"); - } - - [AllowAnonymous] - public async Task Submit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = new SubmitScholarshipAppModel(); - model.Submission = new ScholarshipSubmission(); - model.App = await _db.ScholarshipApps.FindAsync(id); - - if (model.App == null) return HttpNotFound(); - - model.Submission.ScholarshipAppId = (int)id; - model.Answers = new List(); - foreach (var q in model.App.Questions.OrderBy(q => q.FormOrder)) - { - var answer = new ScholarshipAnswer(); - answer.ScholarshipQuestionId = q.ScholarshipQuestionId; - answer.Question = q.Question; - model.Answers.Add(answer); - } - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Submit(SubmitScholarshipAppModel model) - { - if (!ModelState.IsValid) - { - ViewBag.FailMessage = - "Your application could not be submitted. Please check the information you provided and try again. " + - "If you continue to receive this error, please contact the person in charge of the scholarship."; - return View(model); - } - - model.Submission.SubmittedOn = DateTime.UtcNow; - _db.ScholarshipSubmissions.Add(model.Submission); - await _db.SaveChangesAsync(); - var submissions = await _db.ScholarshipSubmissions.Include(s => s.Application).ToListAsync(); - var submission = submissions - .Single(s => - s.ScholarshipAppId == model.Submission.ScholarshipAppId && - s.FirstName == model.Submission.FirstName && - s.LastName == model.Submission.LastName && - s.SubmittedOn == model.Submission.SubmittedOn); - - foreach (var a in model.Answers) - { - a.ScholarshipSubmissionId = submission.ScholarshipSubmissionId; - _db.ScholarshipAnswers.Add(a); - } - await _db.SaveChangesAsync(); - - SendStudyHourSubmissionEmail(submission); - TempData[SuccessMessageKey] = "Your application was submitted successfully. You should receive a confirmation email shortly."; - return RedirectToAction("Scholarships", "Home", new { Area = "" }); - } - - [Authorize(Roles = "Administrator, Alumnus, Active, Neophyte, New")] - public async Task Submission(Guid? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.ScholarshipSubmissions.FindAsync(id); - if (model == null) return HttpNotFound(); - - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - - var markdown = new Markdown(); - ViewBag.CommitteeResponse = markdown.Transform(model.CommitteeResponse); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public async Task EditSubmission(ScholarshipSubmission model) - { - if (!ModelState.IsValid) - { - TempData[FailureMessageKey] = "Application update failed for an unspecified reason, please contact your administrator."; - return RedirectToAction("Submission", new { id = model.ScholarshipSubmissionId }); - } - - model.CommitteeRespondedOn = DateTime.UtcNow; - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Application updated successfully."; - return RedirectToAction("Submission", new { id = model.ScholarshipSubmissionId }); - } - - private async void SendStudyHourSubmissionEmail(ScholarshipSubmission submission) - { - var subject = "Scholarship Application Submitted with Delta Sigma Phi!"; - var body = "Dear " + submission.FirstName + ",

" + - "This email has been sent to confirm that we have successfully received your application for the " + - submission.Application.Title + ".
" + - "Please refer to "; - body += @"our scholarship page "; - body += "for details on when you should expect to hear back.

" + - "Regards,
" + - "The Gentlemen of Delta Sigma Phi"; - - var emailMessage = new IdentityMessage - { - Subject = subject, - Body = body, - Destination = submission.Email - }; - - var emailService = new EmailService(); - await emailService.SendAsync(emailMessage); - } - } -} diff --git a/src/Dsp.Web/Areas/Scholarships/Controllers/QuestionsController.cs b/src/Dsp.Web/Areas/Scholarships/Controllers/QuestionsController.cs deleted file mode 100644 index e383d0e7..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Controllers/QuestionsController.cs +++ /dev/null @@ -1,94 +0,0 @@ -namespace Dsp.Web.Areas.Scholarships.Controllers -{ - using Dsp.Web.Controllers; - using Dsp.Data.Entities; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public class QuestionsController : BaseController - { - public async Task Index() - { - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - return View(await _db.ScholarshipQuestions.ToListAsync()); - } - - public async Task Details(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var scholarshipQuestion = await _db.ScholarshipQuestions.FindAsync(id); - if (scholarshipQuestion == null) return HttpNotFound(); - - return View(scholarshipQuestion); - } - - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(ScholarshipQuestion model) - { - if (!ModelState.IsValid) return View(model); - - _db.ScholarshipQuestions.Add(model); - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Question successfully added to pool."; - return RedirectToAction("Index"); - } - - public async Task Edit(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _db.ScholarshipQuestions.FindAsync(id); - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(ScholarshipQuestion model) - { - if (!ModelState.IsValid) return View(model); - - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Question successfully modified."; - return RedirectToAction("Index"); - } - - public async Task Delete(int? id) - { - if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var scholarshipQuestion = await _db.ScholarshipQuestions.FindAsync(id); - if (scholarshipQuestion == null) return HttpNotFound(); - - return View(scholarshipQuestion); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - var scholarshipQuestion = await _db.ScholarshipQuestions.FindAsync(id); - if (scholarshipQuestion.Answers.Any()) - { - TempData[FailureMessageKey] = - "Scholarship Question could not be deleted because it has existing answers associated with it."; - return RedirectToAction("Index"); - } - _db.ScholarshipQuestions.Remove(scholarshipQuestion); - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Question successfully deleted."; - return RedirectToAction("Index"); - } - } -} diff --git a/src/Dsp.Web/Areas/Scholarships/Controllers/TypesController.cs b/src/Dsp.Web/Areas/Scholarships/Controllers/TypesController.cs deleted file mode 100644 index 3224dcdb..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Controllers/TypesController.cs +++ /dev/null @@ -1,97 +0,0 @@ -namespace Dsp.Web.Areas.Scholarships.Controllers -{ - using Dsp.Web.Controllers; - using Dsp.Data.Entities; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, Vice President Growth, Director of Recruitment")] - public class TypesController : BaseController - { - public async Task Index() - { - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - return View(await _db.ScholarshipTypes.ToListAsync()); - } - - public ActionResult Create() - { - return View(); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(ScholarshipType model) - { - if (!ModelState.IsValid) return View(model); - - _db.ScholarshipTypes.Add(model); - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Scholarship Type created successfully."; - return RedirectToAction("Index"); - } - - public async Task Edit(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var scholarshiptype = await _db.ScholarshipTypes.FindAsync(id); - if (scholarshiptype == null) - { - return HttpNotFound(); - } - return View(scholarshiptype); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(ScholarshipType model) - { - if (!ModelState.IsValid) return View(model); - - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Scholarship Type updated successfully."; - return RedirectToAction("Index"); - } - - public async Task Delete(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var scholarshiptype = await _db.ScholarshipTypes.FindAsync(id); - if (scholarshiptype == null || scholarshiptype.Applications.Any()) - { - return HttpNotFound(); - } - return View(scholarshiptype); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - var scholarshipType = await _db.ScholarshipTypes.FindAsync(id); - if (scholarshipType.Applications.Any()) - { - TempData[FailureMessageKey] = "The " + scholarshipType.Name + - " Scholarship Type could not be deleted because it has existing applications associated with it."; - return RedirectToAction("Index"); - } - - _db.ScholarshipTypes.Remove(scholarshipType); - await _db.SaveChangesAsync(); - - TempData[SuccessMessageKey] = "Scholarship Type deleted successfully."; - return RedirectToAction("Index"); - } - - } -} diff --git a/src/Dsp.Web/Areas/Scholarships/Models/CreateScholarshipAppModel.cs b/src/Dsp.Web/Areas/Scholarships/Models/CreateScholarshipAppModel.cs deleted file mode 100644 index a95f6d7e..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Models/CreateScholarshipAppModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Dsp.Web.Areas.Scholarships.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class CreateScholarshipAppModel - { - public ScholarshipApp Application { get; set; } - public IEnumerable Types {get;set;} - public IList Questions { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Models/QuestionSelectionModel.cs b/src/Dsp.Web/Areas/Scholarships/Models/QuestionSelectionModel.cs deleted file mode 100644 index 02749221..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Models/QuestionSelectionModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Dsp.Web.Areas.Scholarships.Models -{ - using Dsp.Data.Entities; - - public class QuestionSelectionModel - { - public bool IsSelected { get; set; } - public ScholarshipAppQuestion Question { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Models/SubmitScholarshipAppModel.cs b/src/Dsp.Web/Areas/Scholarships/Models/SubmitScholarshipAppModel.cs deleted file mode 100644 index d304b4ea..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Models/SubmitScholarshipAppModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Dsp.Web.Areas.Scholarships.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class SubmitScholarshipAppModel - { - public ScholarshipApp App { get; set; } - public ScholarshipSubmission Submission { get; set; } - public IList Answers { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/ScholarshipsAreaRegistration.cs b/src/Dsp.Web/Areas/Scholarships/ScholarshipsAreaRegistration.cs deleted file mode 100644 index fc2b423b..00000000 --- a/src/Dsp.Web/Areas/Scholarships/ScholarshipsAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Scholarships -{ - public class ScholarshipsAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Scholarships"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Scholarships_default", - "Scholarships/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Create.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Applications/Create.cshtml deleted file mode 100644 index 519663c6..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Create.cshtml +++ /dev/null @@ -1,158 +0,0 @@ -@model Dsp.Web.Areas.Scholarships.Models.CreateScholarshipAppModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Scholarship Application"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") - @Styles.Render("~/content/markdown") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new {@class = "text-danger"}) - -
-
- @Html.Label("Title", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Application.Title, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Application.Title, "", new { @class = "text-danger" }) -
-
- -
-
- @Html.Label("Type", htmlAttributes: new { @class = "control-label" }) - @Html.DropDownListFor(model => model.Application.ScholarshipTypeId, Model.Types, new { @class = "form-control" }) - @Html.ValidationMessageFor(model => model.Application.Type, "", new { @class = "text-danger" }) -
-
- -
-
- -
-
- -
- -
-
- @Html.Label("Application Submission Period Begins On", htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.Application.OpensOn, new { htmlAttributes = new { @class = "form-control", type = "datetime", @Value = DateTime.UtcNow.ToShortDateString() } }) - - - -
- @Html.ValidationMessageFor(model => model.Application.OpensOn, "", new { @class = "text-danger" }) -
-
- -
-
- @Html.Label("Application Submission Period Ends On", htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.Application.ClosesOn, new { htmlAttributes = new { @class = "form-control", type = "datetime", @Value = DateTime.UtcNow.ToShortDateString() } }) - - - -
- @Html.ValidationMessageFor(model => model.Application.ClosesOn, "", new { @class = "text-danger" }) -
-
- -
- -
-
- @Html.Label("Additional Text (instructions and any other details)", new { @class = "control-label" }) -
-
- @Html.EditorFor(model => model.Application.AdditionalText, new { htmlAttributes = new { @class = "form-control wmd-input", rows = 10, id = "wmd-input" } }) -
-
- @Html.ValidationMessageFor(model => model.Application.AdditionalText, "", new { @class = "text-danger" }) -
-
- -

Scholarship Questions

- - - - - - - - - - - @for (var i = 0; i < Model.Questions.Count(); i++) - { - @Html.HiddenFor(m => Model.Questions[i].Question.ScholarshipQuestionId) - - - - - - - } - -
SelectQuestionOptionalForm Order
- @Html.EditorFor(model => Model.Questions[i].IsSelected, new {htmlAttributes = new {@class = ""}}) - - @Model.Questions[i].Question.Question.Prompt - - @Html.EditorFor(model => Model.Questions[i].Question.IsOptional, new {htmlAttributes = new {@class = ""}}) - - @Html.EditorFor(model => Model.Questions[i].Question.FormOrder, new {htmlAttributes = new {@class = "form-control"}}) -
- -
-
- -
-
- } -
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - @Scripts.Render("~/bundles/markdown") - -} diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Delete.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Applications/Delete.cshtml deleted file mode 100644 index ca00976b..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Delete.cshtml +++ /dev/null @@ -1,44 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipApp -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Scholarship Application"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
- -
-
-
@Html.DisplayNameFor(model => model.Title)
-
@Html.DisplayFor(model => model.Title)
-
@Html.DisplayNameFor(model => model.OpensOn)
-
@Html.DisplayFor(model => model.OpensOn)
-
@Html.DisplayNameFor(model => model.ClosesOn)
-
@Html.DisplayFor(model => model.ClosesOn)
-
@Html.DisplayNameFor(model => model.IsPublic)
-
@Html.DisplayFor(model => model.IsPublic)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Details.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Applications/Details.cshtml deleted file mode 100644 index fcf31f6f..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Details.cshtml +++ /dev/null @@ -1,54 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipApp -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Submissions"; - ViewBag.Subtitle = Model.Title; -} - -
- -
-
-
- - - - - - - - - - - - - @foreach (var item in Model.Submissions.OrderByDescending(s => s.SubmittedOn)) - { - - - - - - - - - } - -
NameSubmitted OnLocationHigh SchoolWinner
@item.FirstName @item.LastName@item.SubmittedOn.ToShortDateString()@item.City, @item.State@item.HighSchool@(item.IsWinner ? "Yes" : "No") - @Html.ActionLink("View", "Submission", new {id = item.ScholarshipSubmissionId}) -
-
-

- Submissions: @Model.Submissions.Count -

-
-
-
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Edit.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Applications/Edit.cshtml deleted file mode 100644 index c65b803a..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Edit.cshtml +++ /dev/null @@ -1,160 +0,0 @@ -@model Dsp.Web.Areas.Scholarships.Models.CreateScholarshipAppModel -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Scholarship Application"; - ViewBag.Subtitle = Model.Application.Title; -} -@section styles { - @Styles.Render("~/content/datetimepicker") - @Styles.Render("~/content/markdown") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.Application.ScholarshipAppId) - -
-
- @Html.Label("Title", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Application.Title, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Application.Title, "", new { @class = "text-danger" }) -
-
- -
-
- @Html.Label("Type", htmlAttributes: new { @class = "control-label" }) - @Html.DropDownListFor(model => model.Application.ScholarshipTypeId, Model.Types, new { @class = "form-control" }) - @Html.ValidationMessageFor(model => model.Application.Type, "", new { @class = "text-danger" }) -
-
- -
-
- -
-
- -
- -
-
- @Html.Label("Application Submission Period Begins On", htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.Application.OpensOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.Application.OpensOn, "", new { @class = "text-danger" }) -
-
- -
-
- @Html.Label("Application Submission Period Ends On", htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.Application.ClosesOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.Application.ClosesOn, "", new { @class = "text-danger" }) -
-
- -
- -
-
- @Html.Label("Additional Text (instructions and any other details)", new { @class = "control-label" }) -
-
- @Html.EditorFor(model => model.Application.AdditionalText, new { htmlAttributes = new { @class = "form-control wmd-input", rows = 10, id = "wmd-input" } }) -
-
- @Html.ValidationMessageFor(model => model.Application.AdditionalText, "", new { @class = "text-danger" }) -
-
- -

Scholarship Questions

- - - - - - - - - - - @for (var i = 0; i < Model.Questions.Count(); i++) - { - @Html.HiddenFor(m => Model.Questions[i].Question.ScholarshipQuestionId) - - - - - - - } - -
SelectQuestionOptionalForm Order
- @Html.EditorFor(model => Model.Questions[i].IsSelected, new { htmlAttributes = new { @class = "" } }) - - @Model.Questions[i].Question.Question.Prompt - - @Html.EditorFor(model => Model.Questions[i].Question.IsOptional, new { htmlAttributes = new { @class = "" } }) - - @Html.EditorFor(model => Model.Questions[i].Question.FormOrder, new { htmlAttributes = new { @class = "form-control" } }) -
- -
-
- -
-
- } -
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - @Scripts.Render("~/bundles/markdown") - -} diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Index.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Applications/Index.cshtml deleted file mode 100644 index d646759e..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Index.cshtml +++ /dev/null @@ -1,79 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Scholarship Applications"; -} - -
- @if (User.IsInRole("Administrator") || User.IsInRole("Vice President Growth") || User.IsInRole("Director of Recruitment")) - { -
-
- -
-
-

- @Html.ActionLink("Create New", "Create", "Applications", new { area = "Scholarships" }, new { @class = "btn btn-sm btn-success" }) - @Html.ActionLink("Question Pool", "Index", "Questions", new { area = "Scholarships" }, new { @class = "btn btn-sm btn-default" }) - @Html.ActionLink("Types", "Index", "Types", new { area = "Scholarships" }, new { @class = "btn btn-sm btn-default" }) -

-
-
- } -
-
-
- - - - - - - - - - - - - @foreach (var item in Model) - { - - - - - - - - - } - -
TitleBegins OnEnds OnPublicSubmissions
- @item.Title - - @item.OpensOn.ToShortDateString() - - @item.ClosesOn.ToShortDateString() - - @Html.DisplayFor(modelItem => item.IsPublic) - - @item.Submissions.Count - - @if (User.IsInRole("Administrator") || User.IsInRole("Vice President Growth") - || User.IsInRole("Director of Recruitment")) - { - @Html.ActionLink("Edit", "Edit", new {id = item.ScholarshipAppId}) - @:| - if (!item.Submissions.Any()) - { - @Html.ActionLink("Delete", "Delete", new { id = item.ScholarshipAppId }) - } - } - @if (item.Submissions.Any()) - { - @Html.ActionLink("Submissions", "Details", new {id = item.ScholarshipAppId}) - } -
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Submit.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Applications/Submit.cshtml deleted file mode 100644 index c1717e52..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Applications/Submit.cshtml +++ /dev/null @@ -1,187 +0,0 @@ -@using System.Globalization -@model Dsp.Web.Areas.Scholarships.Models.SubmitScholarshipAppModel -@{ - Layout = "~/Views/Shared/_LayoutExternal.cshtml"; - ViewBag.Title = "Scholarship Submission"; - ViewBag.Subtitle = Model.App.Title; -} -@section Title -{ - @Html.Partial("_TitleExternal") -} - -
-
- @using (Html.BeginForm("Submit", "Applications", new { area = "Scholarships" }, FormMethod.Post, new { })) - { - @Html.AntiForgeryToken() -
- @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => Model.Submission.ScholarshipAppId) - -
-
- General Information -
-
-
-
-
- @Html.Label("First Name", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.FirstName, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("Last Name", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.LastName, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("Student #", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.StudentNumber, new { htmlAttributes = new { @class = "form-control" } }) -
-
-
-
-

@Html.ValidationMessageFor(model => model.Submission.FirstName, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.LastName, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.StudentNumber, "", new { @class = "text-danger" })

-
-
-
-
-
-
- @Html.Label("Email", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.Email, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("Phone #", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } }) -
-
-
-
-

@Html.ValidationMessageFor(model => model.Submission.Email, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.PhoneNumber, "", new { @class = "text-danger" })

-
-
-
-
-
-
- @Html.Label("Address 1", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.Address1, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("Address 2", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.Address2, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("City", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.City, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("State", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.State, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("Postal Code", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.PostalCode, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("Country", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.Country, new { htmlAttributes = new { @class = "form-control" } }) -
-
-
-
-

@Html.ValidationMessageFor(model => model.Submission.Address1, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.Address2, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.City, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.State, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.Country, "", new { @class = "text-danger" })

-
-
-
-
-
-
- @Html.Label("High School", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.HighSchool, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("Act or Sat Score", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.ActSatScore, new { htmlAttributes = new { @class = "form-control" } }) -
-
- @Html.Label("High School Gpa", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.Gpa, new { htmlAttributes = new { @class = "form-control" } }) -
-
-
-
-

@Html.ValidationMessageFor(model => model.Submission.HighSchool, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.ActSatScore, "", new { @class = "text-danger" })

-

@Html.ValidationMessageFor(model => model.Submission.Gpa, "", new { @class = "text-danger" })

-
-
-
-
- @Html.Label("How did you hear about this scholarship?", htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Submission.HearAboutScholarship, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Submission.HearAboutScholarship, "", new { @class = "text-danger" }) -
-
-
- -
-
- Short Answer Questions -
-
- @for (var i = 0; i < Model.Answers.Count; i++) - { -
- @Html.HiddenFor(model => Model.Answers[i].ScholarshipQuestionId) -
-
- @{ - var maxLength = Model.Answers[i].Question.AnswerMaximumLength; - var label = Model.Answers[i].Question.Prompt.ToString(CultureInfo.InvariantCulture); - var additionalText = "Please keep your response to less than " + - maxLength + " characters (around " + maxLength / 5 + " words)"; - var appQuestion = Model.App.Questions.Single(ap => ap.ScholarshipQuestionId == Model.Answers[i].ScholarshipQuestionId); - if (!appQuestion.IsOptional) - { - label += " *"; - } - } -
@(i+1) @label
- - @Html.EditorFor(model => Model.Answers[i].AnswerText, new { htmlAttributes = new - { - @class = "form-control", placeholder = additionalText, style="height: 125px" - } - }) - @Html.ValidationMessageFor(model => Model.Answers[i].AnswerText, "", new { @class = "text-danger" }) -
-
-
- } -
-
- -
-
-
- -
-
-
-
- * Asterisks denote short answers where you are expected to provide a response. -
-
- } -
- -
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Create.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Questions/Create.cshtml deleted file mode 100644 index 8783ae25..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Create.cshtml +++ /dev/null @@ -1,49 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipQuestion -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Scholarship Application Question"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Prompt, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Prompt, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Prompt, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.AnswerMinimumLength, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.AnswerMinimumLength, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.AnswerMinimumLength, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.AnswerMaximumLength, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.AnswerMaximumLength, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.AnswerMaximumLength, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Delete.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Questions/Delete.cshtml deleted file mode 100644 index 187e7a6c..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Delete.cshtml +++ /dev/null @@ -1,53 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipQuestion -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Scholarship Application Question"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
-
-
-
- @Html.DisplayNameFor(model => model.Prompt) -
-
- @Html.DisplayFor(model => model.Prompt) -
-
- @Html.DisplayNameFor(model => model.AnswerMinimumLength) -
-
- @Html.DisplayFor(model => model.AnswerMinimumLength) -
-
- @Html.DisplayNameFor(model => model.AnswerMaximumLength) -
-
- @Html.DisplayFor(model => model.AnswerMaximumLength) -
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Details.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Questions/Details.cshtml deleted file mode 100644 index 916ce97c..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Details.cshtml +++ /dev/null @@ -1,52 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipQuestion -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Scholarship Application Question Details"; -} - -
- -
-
-
-
- @Html.DisplayNameFor(model => model.Prompt) -
-
- @Html.DisplayFor(model => model.Prompt) -
-
- @Html.DisplayNameFor(model => model.AnswerMinimumLength) -
-
- @Html.DisplayFor(model => model.AnswerMinimumLength) -
-
- @Html.DisplayNameFor(model => model.AnswerMaximumLength) -
-
- @Html.DisplayFor(model => model.AnswerMaximumLength) -
-
- Answers -
-
- @foreach (var answer in Model.Answers) - { - @answer.AnswerText @: (Length: @answer.AnswerText.Length) -
-
- } -
-
-
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Edit.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Questions/Edit.cshtml deleted file mode 100644 index df99ada3..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Edit.cshtml +++ /dev/null @@ -1,49 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipQuestion -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Scholarship Application Question"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.ScholarshipQuestionId) - -
- @Html.LabelFor(model => model.Prompt, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Prompt, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Prompt, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.AnswerMinimumLength, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.AnswerMinimumLength, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.AnswerMinimumLength, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.AnswerMaximumLength, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.AnswerMaximumLength, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.AnswerMaximumLength, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Index.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Questions/Index.cshtml deleted file mode 100644 index 20a01bae..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Questions/Index.cshtml +++ /dev/null @@ -1,60 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Scholarship Application Question Pool"; -} - -
-
- -
-

- @Html.ActionLink("Create New", "Create", "Questions", new { area = "Scholarships" }, new { @class = "btn btn-sm btn-success" }) -

-
-
-
-
-
- - - - - - - - - - - - @foreach (var item in Model) - { - - - - - - - - } - -
PromptMin LengthMax LengthSubmissions
@item.Prompt@item.AnswerMinimumLength@item.AnswerMaximumLength@item.Answers.Count - @Html.ActionLink("Edit", "Edit", new { id = item.ScholarshipQuestionId }) | - @Html.ActionLink("Details", "Details", new { id = item.ScholarshipQuestionId }) - @if (!item.Answers.Any()) - { - @: | - @Html.ActionLink("Delete", "Delete", new { id = item.ScholarshipQuestionId }) - } -
- -
-
-
-
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Types/Create.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Types/Create.cshtml deleted file mode 100644 index c9945848..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Types/Create.cshtml +++ /dev/null @@ -1,36 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipType -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Scholarship Type"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Types/Delete.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Types/Delete.cshtml deleted file mode 100644 index 5cf8fa40..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Types/Delete.cshtml +++ /dev/null @@ -1,37 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipType -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Scholarship Type"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - - } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Types/Edit.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Types/Edit.cshtml deleted file mode 100644 index 2a6e6dcb..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Types/Edit.cshtml +++ /dev/null @@ -1,38 +0,0 @@ -@model Dsp.Data.Entities.ScholarshipType -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Scholarship Type"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.ScholarshipTypeId) - -
- @Html.LabelFor(model => model.Name, new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Scholarships/Views/Types/Index.cshtml b/src/Dsp.Web/Areas/Scholarships/Views/Types/Index.cshtml deleted file mode 100644 index 15b3fc63..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/Types/Index.cshtml +++ /dev/null @@ -1,56 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Scholarship Types"; -} - -
-
- -
-

- @Html.ActionLink("Create New", "Create", "Types", new { area = "Scholarships" }, new { @class = "btn btn-sm btn-success" }) -

-
-
-
-
-
- - - - - - - - - - - @foreach (var item in Model) - { - - - - - - - } - -
NameApplicationsTotal Submissions
@item.Name@item.Applications.Count@item.Applications.Sum(a => a.Submissions.Count) - @Html.ActionLink("Edit", "Edit", new { id = item.ScholarshipTypeId }) - @if (!item.Applications.Any()) - { - @: | - @Html.ActionLink("Delete", "Delete", new { id = item.ScholarshipTypeId }) - } -
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Scholarships/Views/web.config b/src/Dsp.Web/Areas/Scholarships/Views/web.config deleted file mode 100644 index 0a5a7def..00000000 --- a/src/Dsp.Web/Areas/Scholarships/Views/web.config +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Controllers/AmendmentsController.cs b/src/Dsp.Web/Areas/Service/Controllers/AmendmentsController.cs deleted file mode 100644 index 0c80a326..00000000 --- a/src/Dsp.Web/Areas/Service/Controllers/AmendmentsController.cs +++ /dev/null @@ -1,199 +0,0 @@ -namespace Dsp.Web.Areas.Service.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Areas.Service.Models; - using Dsp.Web.Controllers; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Administrator, Service")] - public class AmendmentsController : BaseController - { - private readonly IMemberService _memberService; - private readonly ISemesterService _semesterService; - private readonly IServiceService _serviceService; - - public AmendmentsController() - { - var repo = new Repository(_db); - _memberService = new MemberService(repo); - _semesterService = new SemesterService(repo); - _serviceService = new ServiceService(repo); - } - - public async Task Index(int? sid) - { - var currentSemester = await GetThisSemesterAsync(); - Semester selectedSemester = sid == null - ? currentSemester - : await _semesterService.GetSemesterByIdAsync((int)sid); - - var serviceHourAmendments = await _serviceService.GetHoursAmendmentsBySemesterIdAsync((int)sid); - var serviceEventAmendments = await _serviceService.GetEventAmendmentsBySemesterIdAsync((int)sid); - var semesterList = GetSemesterSelectList(await _serviceService.GetSemestersWithEventsAsync(currentSemester)); - var navModel = new ServiceNavModel(true, selectedSemester, semesterList); - var model = new ServiceAmendmentModel(navModel, serviceHourAmendments, serviceEventAmendments); - - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - return View(model); - } - - public async Task AmendHours(int? sid) - { - ViewBag.FailureMessage = TempData[FailureMessageKey]; - - Semester semester = sid == null - ? await _semesterService.GetCurrentSemesterAsync() - : await _semesterService.GetSemesterByIdAsync((int)sid); - - var model = new AddServiceHourAmendmentModel - { - Amendment = new ServiceHourAmendment - { - SemesterId = semester.Id - }, - Semester = semester - }; - var members = await GetRosterForSemester(semester); - var memberList = new List(); - foreach (Member member in members.OrderBy(m => m.LastName)) - { - memberList.Add(new - { - UserId = member.Id, - Name = member.FirstName + " " + member.LastName + - " (" + member.LivingAssignmentForSemester(semester.Id) + ")" - }); - } - model.Members = new SelectList(memberList, "UserId", "Name"); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task AmendHours(AddServiceHourAmendmentModel model) - { - if (model.Amendment.AmountHours.Equals(0) || - model.Amendment.AmountHours < -50 || - model.Amendment.AmountHours > 50) - { - TempData[FailureMessageKey] = "Please enter hours within the range -50 and 50 (excluding 0) in increments of 0.5."; - return RedirectToAction("AmendHours", new { sid = model.Amendment.SemesterId }); - } - // Adjust hours to nearest half hour. - var fraction = (model.Amendment.AmountHours % 1) * 10; - if (!fraction.Equals(5)) - { - model.Amendment.AmountHours = Math.Floor(model.Amendment.AmountHours); - } - - await _serviceService.CreateHoursAmendmentAsync(model.Amendment); - - TempData[SuccessMessageKey] = "Service amendment added successfully."; - - return RedirectToAction("Index", new { sid = model.Amendment.SemesterId }); - } - - public async Task UnamendHours(int aid) - { - if (aid <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _serviceService.GetHoursAmendmentByIdAsync(aid); - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task UnamendHours(ServiceHourAmendment entity) - { - if (entity.Id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var semesterId = entity.SemesterId; - await _serviceService.DeleteHoursAmendmentByIdAsync(entity.Id); - - TempData[SuccessMessageKey] = "Service amendment deleted successfully."; - - return RedirectToAction("Index", new { sid = semesterId }); - } - - public async Task AmendEvents(int? sid) - { - ViewBag.FailureMessage = TempData[FailureMessageKey]; - - Semester semester = sid == null - ? await _semesterService.GetCurrentSemesterAsync() - : await _semesterService.GetSemesterByIdAsync((int)sid); - - var model = new AddServiceEventAmendmentModel - { - Amendment = new ServiceEventAmendment - { - SemesterId = semester.Id - }, - Semester = semester - }; - var members = await _memberService.GetRosterForSemesterAsync(semester); - var memberList = new List(); - foreach (var member in members.OrderBy(m => m.LastName)) - { - memberList.Add(new - { - UserId = member.Id, - Name = member.FirstName + " " + member.LastName + - " (" + member.LivingAssignmentForSemester(semester.Id) + ")" - }); - } - model.Members = new SelectList(memberList, "UserId", "Name"); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task AmendEvents(AddServiceEventAmendmentModel model) - { - if (model.Amendment.NumberEvents.Equals(0) || - model.Amendment.NumberEvents < -50 || - model.Amendment.NumberEvents > 50) - { - TempData[FailureMessageKey] = "Please enter a number of events within the range -50 and 50 (excluding 0) in increments of 0.5."; - return RedirectToAction("AmendEvents", new { sid = model.Amendment.SemesterId }); - } - - await _serviceService.CreateEventAmendmentAsync(model.Amendment); - TempData[SuccessMessageKey] = "Service amendment added successfully."; - - return RedirectToAction("Index", new { sid = model.Amendment.SemesterId }); - } - - public async Task UnamendEvents(int aid) - { - if (aid <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _serviceService.GetEventAmendmentByIdAsync(aid); - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task UnamendEvents(ServiceEventAmendment entity) - { - if (entity.Id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var semesterId = entity.SemesterId; - await _serviceService.DeleteEventAmendmentByIdAsync(entity.Id); - - TempData[SuccessMessageKey] = "Service amendment deleted successfully."; - - return RedirectToAction("Index", new { sid = semesterId }); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Controllers/EventsController.cs b/src/Dsp.Web/Areas/Service/Controllers/EventsController.cs deleted file mode 100644 index 58f00b1e..00000000 --- a/src/Dsp.Web/Areas/Service/Controllers/EventsController.cs +++ /dev/null @@ -1,176 +0,0 @@ -namespace Dsp.Web.Areas.Service.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Linq; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Neophyte, New, Active, Alumnus, Administrator")] - public class EventsController : BaseController - { - private readonly ISemesterService _semesterService; - private readonly IServiceService _serviceService; - private readonly IPositionService _positionService; - - public EventsController() - { - var db = new Repository(_db); - _semesterService = new SemesterService(db); - _serviceService = new ServiceService(db); - _positionService = new PositionService(db); - } - - public EventsController(ISemesterService semesterService, IServiceService serviceService, IPositionService positionService) - { - _semesterService = semesterService; - _serviceService = serviceService; - _positionService = positionService; - } - - public async Task Index(int? sid) - { - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - Semester selectedSemester = sid == null - ? currentSemester - : await _semesterService.GetSemesterByIdAsync((int)sid); - - var serviceEvents = await _serviceService.GetEventsForSemesterAsync(selectedSemester); - foreach (var se in serviceEvents) - { - se.DateTimeOccurred = _semesterService.ConvertUtcToCst(se.DateTimeOccurred); - } - - var semestersWithEvents = await _serviceService.GetSemestersWithEventsAsync(currentSemester); - var semesterList = GetSemesterSelectList(semestersWithEvents); - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Service"); - var navModel = new ServiceNavModel(hasElevatedPermissions, selectedSemester, semesterList); - var model = new ServiceEventIndexModel(navModel, serviceEvents); - - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - return View(model); - } - - public async Task Create(int sid) - { - if (sid <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var semester = await _semesterService.GetSemesterByIdAsync(sid); - var model = new ServiceEvent - { - DateTimeOccurred = _semesterService.ConvertUtcToCst(semester.DateStart), - SemesterId = semester.Id - }; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(ServiceEvent model) - { - if (!ModelState.IsValid) return View(model); - - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Service"); - if (hasElevatedPermissions) - { - model.IsApproved = true; - } - else - { - model.IsApproved = false; - // TODO: Email service chairman. - } - model.SubmitterId = userId; - model.DateTimeOccurred = _semesterService.ConvertCstToUtc(model.DateTimeOccurred); - model.CreatedOn = DateTime.UtcNow; - var eventSemester = await _semesterService.GetSemesterByUtcDateTimeAsync(model.DateTimeOccurred); - model.SemesterId = eventSemester.Id; - - await _serviceService.CreateEventAsync(model); - - TempData[SuccessMessageKey] = "Service event created successfully."; - return RedirectToAction("Index", new { sid = eventSemester.Id }); - } - - public async Task Details(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _serviceService.GetEventByIdAsync(id); - if (model == null) return HttpNotFound(); - - model.DateTimeOccurred = _semesterService.ConvertUtcToCst(model.DateTimeOccurred); - - return View(model); - } - - [Authorize(Roles = "Administrator, Service")] - public async Task Edit(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _serviceService.GetEventByIdAsync(id); - if (model == null) return HttpNotFound(); - - model.DateTimeOccurred = _semesterService.ConvertUtcToCst(model.DateTimeOccurred); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Service")] - public async Task Edit(ServiceEvent model) - { - if (!ModelState.IsValid) return View(model); - - model.DateTimeOccurred = _semesterService.ConvertCstToUtc(model.DateTimeOccurred); - var eventSemester = await _semesterService.GetSemesterByUtcDateTimeAsync(model.DateTimeOccurred); - model.SemesterId = eventSemester.Id; - - await _serviceService.UpdateEventAsync(model); - - TempData[SuccessMessageKey] = "Service event modified successfully."; - return RedirectToAction("Index", new { sid = eventSemester.Id }); - } - - [Authorize(Roles = "Administrator, Service")] - public async Task Delete(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _serviceService.GetEventByIdAsync(id); - if (model == null) return HttpNotFound(); - - if (model.ServiceHours.Any()) - { - TempData[FailureMessageKey] = "Failed to delete event because someone has already turned in hours for it."; - return RedirectToAction("Index", new { sid = model.SemesterId }); - } - - model.DateTimeOccurred = _semesterService.ConvertUtcToCst(model.DateTimeOccurred); - - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Service")] - public async Task DeleteConfirmed(int id) - { - var model = await _serviceService.GetEventByIdAsync(id); - var eventSemesterId = model.SemesterId; - - await _serviceService.DeleteEventByIdAsync(id); - TempData[SuccessMessageKey] = "Service event deleted successfully."; - - return RedirectToAction("Index", new { sid = eventSemesterId }); - } - } -} diff --git a/src/Dsp.Web/Areas/Service/Controllers/HoursController.cs b/src/Dsp.Web/Areas/Service/Controllers/HoursController.cs deleted file mode 100644 index 8735c2d4..00000000 --- a/src/Dsp.Web/Areas/Service/Controllers/HoursController.cs +++ /dev/null @@ -1,309 +0,0 @@ -namespace Dsp.Web.Areas.Service.Controllers -{ - using Dsp.Data; - using Dsp.Data.Entities; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Dsp.Web.Controllers; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using System.Text; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Administrator")] - public class HoursController : BaseController - { - private readonly IMemberService _memberService; - private readonly IPositionService _positionService; - private readonly ISemesterService _semesterService; - private readonly IServiceService _serviceService; - - public HoursController() - { - var repo = new Repository(_db); - _memberService = new MemberService(repo); - _positionService = new PositionService(repo); - _semesterService = new SemesterService(repo); - _serviceService = new ServiceService(repo); - } - - public HoursController(IMemberService memberService, IPositionService positionService, ISemesterService semesterService, IServiceService serviceService) - { - _memberService = memberService; - _positionService = positionService; - _semesterService = semesterService; - _serviceService = serviceService; - } - - public async Task Index(int? sid) - { - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - Semester selectedSemester = sid == null - ? currentSemester - : await _semesterService.GetSemesterByIdAsync((int)sid); - - var rosterProgress = await _serviceService.GetRosterProgressBySemesterIdAsync(selectedSemester.Id); - var semestersWithEvents = await _serviceService.GetSemestersWithEventsAsync(currentSemester); - var semesterList = GetSemesterSelectList(semestersWithEvents); - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Service"); - var navModel = new ServiceNavModel(hasElevatedPermissions, selectedSemester, semesterList); - var model = new ServiceHourIndexModel(navModel, rosterProgress); - - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - return View(model); - } - - public async Task Submit(int? sid) - { - var model = new ServiceHourSubmissionModel(); - if (sid != null) - { - model.Semester = await _semesterService.GetSemesterByIdAsync((int)sid); - var events = await _serviceService.GetEventsForSemesterAsync(model.Semester); - model.Events = GetServiceEventSelectList(events); - } - else - { - model.Semester = await GetThisSemesterAsync(); - var events = await _serviceService.GetEventsForSemesterAsync(model.Semester); - model.Events = GetServiceEventSelectList(events); - } - - ViewBag.SuccessMessage = TempData[SuccessMessageKey]; - ViewBag.FailureMessage = TempData[FailureMessageKey]; - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Submit(ServiceHourSubmissionModel model) - { - var selectedEvent = await _serviceService.GetEventByIdAsync(model.SelectedEventId); - // Invalid value - if (model.HoursServed < 0) - { - ViewBag.FailureMessage = "Please enter an amount of hours greater than or equal to 0 in increments of 0.5."; - model.Semester = selectedEvent.Semester; - var events = await _serviceService.GetEventsForSemesterAsync(selectedEvent.Semester); - model.Events = GetServiceEventSelectList(events); - return View(model); - } - - var fraction = (model.HoursServed % 1) * 10; - if (!fraction.Equals(5)) - { - model.HoursServed = Math.Floor(model.HoursServed); - } - - // Check if event is in the future - if (selectedEvent.DateTimeOccurred.AddHours(selectedEvent.DurationHours) > DateTime.UtcNow) - { - ViewBag.FailureMessage = "You can't submit hours for an event that has not yet occurred."; - model.Semester = selectedEvent.Semester; - var events = await _serviceService.GetEventsForSemesterAsync(selectedEvent.Semester); - model.Events = GetServiceEventSelectList(events); - return View(model); - } - - // Check if hours submitted are more than the duration of the event - if (model.HoursServed > selectedEvent.DurationHours) - { - ViewBag.FailureMessage = "Please enter an amount of hours less than or equal to the duration of the event in increments of 0.5."; - model.Semester = selectedEvent.Semester; - var events = await _serviceService.GetEventsForSemesterAsync(selectedEvent.Semester); - model.Events = GetServiceEventSelectList(events); - return View(model); - } - - var userId = User.Identity.GetUserId(); - // Check if submission has already been created - var duplicateSubmission = await _serviceService.GetHoursAsync(model.SelectedEventId, userId); - if (duplicateSubmission != null) - { - // Delete existing record - if (model.HoursServed.Equals(0)) - { - await _serviceService.DeleteHoursAsync(duplicateSubmission); - TempData[SuccessMessageKey] = "Service hours deleted successfully."; - - return RedirectToAction("Submit", new { sid = selectedEvent.SemesterId }); - } - - // Update submission - duplicateSubmission.DurationHours = model.HoursServed; - await _serviceService.UpdateHoursAsync(duplicateSubmission); - TempData[SuccessMessageKey] = "Service hours updated successfully."; - - return RedirectToAction("Submit", new { sid = selectedEvent.SemesterId }); - } - - // No existing, invalid value - if (model.HoursServed.Equals(0)) - { - ViewBag.FailureMessage = "Please enter an amount of hours greater than 0 in increments of 0.5."; - model.Semester = selectedEvent.Semester; - var events = await _serviceService.GetEventsForSemesterAsync(selectedEvent.Semester); - model.Events = GetServiceEventSelectList(events); - return View(model); - } - - // If no previous submission, create new entry and add it to database - var submission = new ServiceHour - { - UserId = userId, - DateTimeSubmitted = DateTime.UtcNow, - EventId = model.SelectedEventId, - DurationHours = model.HoursServed - }; - - await _serviceService.CreateHoursAsync(submission); - TempData[SuccessMessageKey] = "Service hours submitted successfully."; - - return RedirectToAction("Submit", new { sid = selectedEvent.SemesterId }); - } - - [Authorize(Roles = "Administrator, Service")] - public async Task Edit(int eid, int uid) - { - if (eid <= 0 || uid <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _serviceService.GetHoursAsync(eid, uid); - if (model == null) return HttpNotFound(); - - ViewBag.SemesterId = model.Event.SemesterId; - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, Authorize(Roles = "Administrator, Service")] - public async Task Edit(ServiceHour model) - { - if (!ModelState.IsValid) return View(model); - - var entity = await _serviceService.GetHoursAsync(model.EventId, model.UserId); - entity.DurationHours = model.DurationHours; - - await _serviceService.UpdateHoursAsync(entity); - TempData[SuccessMessageKey] = "Service hours updated successfully."; - - var serviceEvent = await _serviceService.GetEventByIdAsync(model.EventId); - return RedirectToAction("Index", new { sid = serviceEvent.SemesterId }); - } - - [Authorize(Roles = "Administrator, Service")] - public async Task Delete(int eid, int uid) - { - if (eid <= 0 || uid <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - var model = await _serviceService.GetHoursAsync(eid, uid); - if (model == null) return HttpNotFound(); - - ViewBag.SemesterId = model.Event.SemesterId; - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, Authorize(Roles = "Administrator, Service")] - public async Task Delete(ServiceHour model) - { - var entity = await _serviceService.GetHoursAsync(model.EventId, model.UserId); - var time = entity.Event.DateTimeOccurred; - - await _serviceService.DeleteHoursAsync(entity); - TempData[SuccessMessageKey] = "Service hours deleted successfully."; - - var serviceEvent = await _serviceService.GetEventByIdAsync(model.EventId); - return RedirectToAction("Index", new { sid = serviceEvent.SemesterId }); - } - - public async Task Download(int? sid) - { - if (sid == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - - var selectedSemester = await _semesterService.GetSemesterByIdAsync((int)sid); - var priorSemester = await _semesterService.GetPriorSemesterAsync(selectedSemester); - var members = await _memberService.GetRosterForSemesterAsync(selectedSemester); - - var serviceHours = new List(); - foreach (var m in members) - { - var hours = m.ServiceHours - .Where(e => - e.Event.DateTimeOccurred > priorSemester.DateEnd && - e.Event.DateTimeOccurred <= selectedSemester.DateEnd && - e.Event.IsApproved); - serviceHours.AddRange(hours); - } - - var events = serviceHours - .Select(h => h.Event) - .Distinct() - .OrderBy(e => e.EventName) - .ToList(); - - var header = "Last Name, First Name"; - foreach (var e in events) - { - header += "," + e.EventName.Replace(",", ";") + "(" + e.DurationHours + " hrs)"; - } - header += ",Member Totals"; - - var sb = new StringBuilder(); - sb.AppendLine(header); - foreach (var m in members) - { - var line = m.LastName.Replace(",", "") + ", " + m.FirstName.Replace(",", ""); - var hoursForMember = serviceHours - .Where(h => h.UserId == m.Id) - .ToList(); - foreach (var e in events) - { - line += ","; - var turnIns = hoursForMember - .Where(h => h.EventId == e.EventId).ToList(); - if (turnIns.Any()) - { - line += turnIns.Sum(h => h.DurationHours); - } - else - { - line += "0"; - } - } - line += "," + hoursForMember.Sum(h => h.DurationHours); - sb.AppendLine(line); - } - var totalsLine = ",Event Totals"; - foreach (var e in events) - { - totalsLine += "," + e.ServiceHours.Sum(h => h.DurationHours); - } - totalsLine += "," + events.Sum(e => e.ServiceHours.Sum(h => h.DurationHours)); - sb.AppendLine(totalsLine); - - return File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", "dsp-service-" + selectedSemester + ".csv"); - } - - private SelectList GetServiceEventSelectList(IEnumerable events) - { - var newList = new List(); - foreach (var e in events) - { - var utcEventTime = _serviceService.ConvertUtcToCst(e.DateTimeOccurred); - newList.Add(new - { - e.EventId, - EventName = $"{utcEventTime}: {e.EventName} (Lasted {e.DurationHours} hours)" - }); - } - - return new SelectList(newList, "EventId", "EventName"); - } - } -} diff --git a/src/Dsp.Web/Areas/Service/Controllers/StatsController.cs b/src/Dsp.Web/Areas/Service/Controllers/StatsController.cs deleted file mode 100644 index 99c4f352..00000000 --- a/src/Dsp.Web/Areas/Service/Controllers/StatsController.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Dsp.Data; -using Dsp.Data.Entities; -using Dsp.Repositories; -using Dsp.Services; -using Dsp.Services.Interfaces; -using Dsp.Web.Areas.Service.Models; -using Dsp.Web.Controllers; -using Microsoft.AspNet.Identity; -using System.Threading.Tasks; -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Service.Controllers -{ - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Administrator")] - public class StatsController : BaseController - { - private readonly ISemesterService _semesterService; - private readonly IServiceService _serviceService; - private readonly IPositionService _positionService; - - public StatsController() - { - var repo = new Repository(_db); - _semesterService = new SemesterService(repo); - _serviceService = new ServiceService(repo); - _positionService = new PositionService(repo); - } - - public async Task Index(int? sid) - { - var currentSemester = await _semesterService.GetCurrentSemesterAsync(); - Semester selectedSemester = sid == null - ? currentSemester - : await _semesterService.GetSemesterByIdAsync((int)sid); - - var memberStats = await _serviceService.GetMemberStatsBySemesterIdAsync(selectedSemester.Id); - var generalStats = await _serviceService.GetGeneralHistoricalStatsAsync(); - var semestersWithEvents = await _serviceService.GetSemestersWithEventsAsync(currentSemester); - var semesterList = GetSemesterSelectList(semestersWithEvents); - - var userId = User.Identity.GetUserId(); - var hasElevatedPermissions = await _positionService.UserHasPositionPowerAsync(userId, "Service"); - var navModel = new ServiceNavModel(hasElevatedPermissions, selectedSemester, semesterList); - var model = new ServiceStatsIndexModel(navModel, memberStats, generalStats); - - return View(model); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Models/AddServiceEventAmendmentModel.cs b/src/Dsp.Web/Areas/Service/Models/AddServiceEventAmendmentModel.cs deleted file mode 100644 index e44c5dae..00000000 --- a/src/Dsp.Web/Areas/Service/Models/AddServiceEventAmendmentModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class AddServiceEventAmendmentModel - { - public ServiceEventAmendment Amendment { get; set; } - public Semester Semester { get; set; } - public IEnumerable Members { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Models/AddServiceHourAmendmentModel.cs b/src/Dsp.Web/Areas/Service/Models/AddServiceHourAmendmentModel.cs deleted file mode 100644 index 9a24a898..00000000 --- a/src/Dsp.Web/Areas/Service/Models/AddServiceHourAmendmentModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class AddServiceHourAmendmentModel - { - public ServiceHourAmendment Amendment { get; set; } - public Semester Semester { get; set; } - public IEnumerable Members { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Models/ServiceAmendmentModel.cs b/src/Dsp.Web/Areas/Service/Models/ServiceAmendmentModel.cs deleted file mode 100644 index 90d56985..00000000 --- a/src/Dsp.Web/Areas/Service/Models/ServiceAmendmentModel.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class ServiceAmendmentModel - { - public ServiceNavModel NavModel { get; } - public IEnumerable ServiceHourAmendments { get; } - public IEnumerable ServiceEventAmendments { get; } - - public ServiceAmendmentModel( - ServiceNavModel navModel, - IEnumerable serviceHourAmendments, - IEnumerable serviceEventAmendments) - { - NavModel = navModel; - ServiceHourAmendments = serviceHourAmendments; - ServiceEventAmendments = serviceEventAmendments; - } - } -} diff --git a/src/Dsp.Web/Areas/Service/Models/ServiceEventIndexModel.cs b/src/Dsp.Web/Areas/Service/Models/ServiceEventIndexModel.cs deleted file mode 100644 index 4c6c0ca3..00000000 --- a/src/Dsp.Web/Areas/Service/Models/ServiceEventIndexModel.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - - public class ServiceEventIndexModel - { - public ServiceNavModel NavModel { get; } - public IEnumerable Events { get; } - - public ServiceEventIndexModel(ServiceNavModel navModel, IEnumerable serviceEvents) - { - NavModel = navModel; - Events = serviceEvents; - } - } -} diff --git a/src/Dsp.Web/Areas/Service/Models/ServiceHourIndexMemberRowModel.cs b/src/Dsp.Web/Areas/Service/Models/ServiceHourIndexMemberRowModel.cs deleted file mode 100644 index db1a8a32..00000000 --- a/src/Dsp.Web/Areas/Service/Models/ServiceHourIndexMemberRowModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using System.Collections.Generic; - using Dsp.Data.Entities; - - public class ServiceHourIndexMemberRowModel - { - public Member Member { get; set; } - public double Hours { get; set; } - public IEnumerable ServiceHours { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Models/ServiceHourIndexModel.cs b/src/Dsp.Web/Areas/Service/Models/ServiceHourIndexModel.cs deleted file mode 100644 index 626fd78d..00000000 --- a/src/Dsp.Web/Areas/Service/Models/ServiceHourIndexModel.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using Dsp.Services.Models; - using System.Collections.Generic; - - public class ServiceHourIndexModel - { - public ServiceNavModel NavModel { get; } - public IEnumerable Progress { get; } - - public ServiceHourIndexModel(ServiceNavModel navModel, IEnumerable progress) - { - NavModel = navModel; - Progress = progress; - } - } -} diff --git a/src/Dsp.Web/Areas/Service/Models/ServiceHourSubmissionModel.cs b/src/Dsp.Web/Areas/Service/Models/ServiceHourSubmissionModel.cs deleted file mode 100644 index e07b137c..00000000 --- a/src/Dsp.Web/Areas/Service/Models/ServiceHourSubmissionModel.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using Dsp.Data.Entities; - using System; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.Web.Mvc; - - public class ServiceHourSubmissionModel - { - [Required] - [Display(Name = "Event")] - [DataType(DataType.Text)] - public int SelectedEventId { get; set; } - public IEnumerable Events { get; set; } - - [Required] - [Display(Name = "Hours")] - [DataType(DataType.Duration)] - public double HoursServed { get; set; } - public DateTime SoberDriveTime { get; set; } - - public Semester Semester { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Models/ServiceNavModel.cs b/src/Dsp.Web/Areas/Service/Models/ServiceNavModel.cs deleted file mode 100644 index 23122ff1..00000000 --- a/src/Dsp.Web/Areas/Service/Models/ServiceNavModel.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Dsp.Web.Areas.Service.Models -{ - using Dsp.Data.Entities; - using System.Web.Mvc; - - public class ServiceNavModel - { - public bool HasElevatedPermissions { get; } - public Semester SelectedSemester { get; } - public SelectList SemesterList { get; } - public string SemesterListLabel { get; } - - public ServiceNavModel(bool hasElevatedPermissions, Semester selectedSemester, SelectList semesterList) - { - HasElevatedPermissions = hasElevatedPermissions; - SelectedSemester = selectedSemester; - SemesterList = semesterList; - SemesterListLabel = $"Semester: {selectedSemester}"; - } - } -} diff --git a/src/Dsp.Web/Areas/Service/Models/ServiceStatsIndexModel.cs b/src/Dsp.Web/Areas/Service/Models/ServiceStatsIndexModel.cs deleted file mode 100644 index 7f9b9cae..00000000 --- a/src/Dsp.Web/Areas/Service/Models/ServiceStatsIndexModel.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Dsp.Services.Models; -using System.Collections.Generic; - -namespace Dsp.Web.Areas.Service.Models -{ - public class ServiceStatsIndexModel - { - public ServiceNavModel NavModel { get; } - public ServiceMemberStats SemesterMemberStats { get; } - public IEnumerable GeneralStats { get; } - - public ServiceStatsIndexModel( - ServiceNavModel navModel, - ServiceMemberStats semesterMemberStats, - IEnumerable generalStats) - { - NavModel = navModel; - SemesterMemberStats = semesterMemberStats; - GeneralStats = generalStats; - } - } -} diff --git a/src/Dsp.Web/Areas/Service/ServiceAreaRegistration.cs b/src/Dsp.Web/Areas/Service/ServiceAreaRegistration.cs deleted file mode 100644 index 97709130..00000000 --- a/src/Dsp.Web/Areas/Service/ServiceAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Service -{ - public class ServiceAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Service"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Service_default", - "Service/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Views/Amendments/Index.cshtml b/src/Dsp.Web/Areas/Service/Views/Amendments/Index.cshtml deleted file mode 100644 index 82fb1a51..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Amendments/Index.cshtml +++ /dev/null @@ -1,105 +0,0 @@ -@model ServiceAmendmentModel -@{ - ViewBag.Title = "Service Amendments"; - ViewBag.Subtitle = Model.NavModel.SelectedSemester; -} - -
-
-
- @Html.Partial("~/Areas/Service/Views/Shared/_ServiceNavPartial.cshtml", Model.NavModel) -
-
-
-
-
-
- Hour Amendments - - - -
- - - - - - - - - - - @if (Model.ServiceHourAmendments.Any()) - { - foreach (var a in Model.ServiceHourAmendments.OrderBy(m => m.Member.LastName)) - { - - - - - - - } - } - else - { - - - - } - -
MemberReasonAmount (hrs)
@a.Member.ToString()@a.Reason@a.AmountHours - - Delete - -
No amendments found.
-
-
-
-
-
- Event Amendments - - - -
- - - - - - - - - - - @if (Model.ServiceEventAmendments.Any()) - { - foreach (var a in Model.ServiceEventAmendments.OrderBy(m => m.Member.LastName)) - { - - - - - - - } - } - else - { - - - - } - -
MemberReasonNumber of Events
@a.Member.ToString()@a.Reason@a.NumberEvents - - Delete - -
No amendments found.
-
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Events/Create.cshtml b/src/Dsp.Web/Areas/Service/Views/Events/Create.cshtml deleted file mode 100644 index 1b6c3753..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Events/Create.cshtml +++ /dev/null @@ -1,78 +0,0 @@ -@model Dsp.Data.Entities.ServiceEvent -@{ - ViewBag.Title = "Create New Event"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.DateTimeOccurred, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.DateTimeOccurred, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.DateTimeOccurred, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.EventName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.EventName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.EventName, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.DurationHours, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.DurationHours, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.DurationHours, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
- Event Approval -
-

- Anyone can create an event in Sphinx. - - However, be aware that an event must be approved by the Service Chairman before any service hours submitted for that event count towards - the semester minimum requirement. - - Events created by the Service Chairman are approved by default. -

-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} diff --git a/src/Dsp.Web/Areas/Service/Views/Events/Delete.cshtml b/src/Dsp.Web/Areas/Service/Views/Events/Delete.cshtml deleted file mode 100644 index 53c6dad0..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Events/Delete.cshtml +++ /dev/null @@ -1,41 +0,0 @@ -@model Dsp.Data.Entities.ServiceEvent -@{ - ViewBag.Title = "Delete Event"; - ViewBag.Subtitle = Model.EventName; -} - -
- -
-
-
-

Are you sure you want to delete this event?

-
-
-
-
@Html.DisplayNameFor(model => model.EventName)
-
@Html.DisplayFor(model => model.EventName)
-
@Html.DisplayNameFor(model => model.DateTimeOccurred)
-
@Html.DisplayFor(model => model.DateTimeOccurred)
-
@Html.DisplayNameFor(model => model.DurationHours)
-
@Html.DisplayFor(model => model.DurationHours)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Events/Details.cshtml b/src/Dsp.Web/Areas/Service/Views/Events/Details.cshtml deleted file mode 100644 index 051e94b0..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Events/Details.cshtml +++ /dev/null @@ -1,47 +0,0 @@ -@model Dsp.Data.Entities.ServiceEvent -@{ - ViewBag.Title = "Event Details"; - ViewBag.Subtitle = Model.EventName; -} - -
- -
-
-
-
-
@Html.DisplayNameFor(model => model.DateTimeOccurred)
-
@Html.DisplayFor(model => model.DateTimeOccurred)
-
@Html.DisplayNameFor(model => model.DurationHours)
-
@Html.DisplayFor(model => model.DurationHours)
-
Members who Served
-
- @foreach (var s in Model.ServiceHours.OrderBy(m => m.Member.LastName)) - { - var label = s.Member.FirstName + " " + s.Member.LastName + " (" + s.DurationHours + " hrs)"; - @label - - if (User.IsInRole("Administrator") || User.IsInRole("Service")) - { - - @Html.ActionLink("Edit", "Edit", "Hours", new { eid = s.EventId, uid = s.UserId }, null) | - @Html.ActionLink("Delete", "Delete", "Hours", new { eid = s.EventId, uid = s.UserId }, null) - - } -
- } - Total: @Model.ServiceHours.Count
-
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Events/Edit.cshtml b/src/Dsp.Web/Areas/Service/Views/Events/Edit.cshtml deleted file mode 100644 index 5ce66c10..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Events/Edit.cshtml +++ /dev/null @@ -1,74 +0,0 @@ -@model Dsp.Data.Entities.ServiceEvent -@{ - ViewBag.Title = "Edit Event"; - ViewBag.Subtitle = Model.EventName; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.EventId) - @Html.HiddenFor(model => model.SubmitterId) - @Html.HiddenFor(model => model.CreatedOn) - -
- @Html.LabelFor(model => model.DateTimeOccurred, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.DateTimeOccurred, new { htmlAttributes = new { @class = "form-control", type = "datetime" }}) - - -
- @Html.ValidationMessageFor(model => model.DateTimeOccurred, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.EventName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.EventName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.EventName, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.DurationHours, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.DurationHours, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.DurationHours, "", new { @class = "text-danger" }) -
- -
- @Html.EditorFor(m => m.IsApproved) - @Html.Label("Approved") -
- -
- -
- } -
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} diff --git a/src/Dsp.Web/Areas/Service/Views/Events/Index.cshtml b/src/Dsp.Web/Areas/Service/Views/Events/Index.cshtml deleted file mode 100644 index 843e4834..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Events/Index.cshtml +++ /dev/null @@ -1,68 +0,0 @@ -@model Dsp.Web.Areas.Service.Models.ServiceEventIndexModel -@{ - ViewBag.Title = "Service Events"; - ViewBag.Print = true; -} - -
-
-
- @Html.Partial("~/Areas/Service/Views/Shared/_ServiceNavPartial.cshtml", Model.NavModel) -
-
-
-
-
-
Events
-
- - - - - - - - - @if (Model.NavModel.HasElevatedPermissions) - { - - } - - - - @foreach (var e in Model.Events) - { - var canDeleteEvent = !e.ServiceHours.Any(); - - - - - - - - @if (Model.NavModel.HasElevatedPermissions) - { - - } - - } - -
Date/TimeEvent Name - Duration - - MembersApproved
@e.DateTimeOccurred.ToString("MM-dd@hh:mm tt (ddd)")@e.EventName@e.DurationHours@e.ServiceHours.Count@Html.DisplayFor(m => e.IsApproved) - @Html.ActionLink("Details", "Details", new { id = e.EventId }) | - @Html.ActionLink("Edit", "Edit", new { id = e.EventId }) - @if (canDeleteEvent) - { - @:| - @Html.ActionLink("Delete", "Delete", new { id = e.EventId }) - } -
-
-
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Hours/Delete.cshtml b/src/Dsp.Web/Areas/Service/Views/Hours/Delete.cshtml deleted file mode 100644 index 575c7edc..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Hours/Delete.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@model Dsp.Data.Entities.ServiceHour -@{ - ViewBag.Title = "Delete Service Hour Submission"; -} - -
- -
-
-
-

Are you sure you want to delete the following submission?

-
-
-
-
Member
-
@Model.Member.FirstName @Model.Member.LastName
-
Event
-
@Html.DisplayFor(model => model.Event.EventName)
-
Hours
-
@Html.DisplayFor(model => model.DurationHours)
-
-
- - @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.HiddenFor(model => model.EventId) - @Html.HiddenFor(model => model.UserId) - - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Hours/Edit.cshtml b/src/Dsp.Web/Areas/Service/Views/Hours/Edit.cshtml deleted file mode 100644 index 430ab088..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Hours/Edit.cshtml +++ /dev/null @@ -1,39 +0,0 @@ -@model Dsp.Data.Entities.ServiceHour -@{ - ViewBag.Title = "Edit Service Hour Submission"; - ViewBag.Subtitle = Model.Event.EventName + " | " + Model.Member; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(model => model.EventId) - @Html.HiddenFor(model => model.UserId) - @Html.HiddenFor(model => model.DateTimeSubmitted) - -
- @Html.LabelFor(model => model.DurationHours, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.DurationHours, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.DurationHours, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Hours/Index.cshtml b/src/Dsp.Web/Areas/Service/Views/Hours/Index.cshtml deleted file mode 100644 index 3c897941..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Hours/Index.cshtml +++ /dev/null @@ -1,156 +0,0 @@ -@model Dsp.Web.Areas.Service.Models.ServiceHourIndexModel -@{ - ViewBag.Title = "Service Hours"; - ViewBag.Subtitle = Model.NavModel.SelectedSemester; - ViewBag.Print = true; - var hasElevatedPermissions = User.IsInRole("Administrator") || User.IsInRole("Service"); -} - -
-
-
- @Html.Partial("~/Areas/Service/Views/Shared/_ServiceNavPartial.cshtml", Model.NavModel) -
-
-
-
-
-
- Member Progress - - Download - -
-
- - - - - - - - - - - @foreach (var item in Model.Progress.OrderBy(o => o.LastName)) - { - var barColor = item.Percentage < 25 ? "danger" : item.Percentage >= 100 ? "success" : "warning"; - - - - - - - - if (item.ServiceHoursCount > 0) - { - foreach (var s in item.Submissions) - { - - - - - - - - - } - } - else - { - - - - } - } - -
NameHours ProgressHoursEvents
- @Html.ActionLink(s.EventName, "Details", "Events", new { id = s.EventId }, null) - @s.EventDuration h - -
-
- @s.PercentageOfEvent% -
-
-
@s.HoursServed - @if (hasElevatedPermissions) - { -
- @Html.ActionLink("Edit", "Edit", new { eid = s.EventId, uid = item.MemberId }) | - @Html.ActionLink("Delete", "Delete", new { eid = s.EventId, uid = item.MemberId }) -
- } -
- No events attended. -
-
-
-
-
-
Name
-
Hours Progress
-
Hours
-
Events
-
-
- @foreach (var item in Model.Progress.OrderBy(o => o.LastName)) - { -
-
-
@item.Name
-
@item.Percentage%
-
@item.Hours / @item.HoursGoal
-
- @item.ServiceHoursCount / @item.EventsGoal -
-
-
- } -
- -
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Hours/Submit.cshtml b/src/Dsp.Web/Areas/Service/Views/Hours/Submit.cshtml deleted file mode 100644 index f69955a2..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Hours/Submit.cshtml +++ /dev/null @@ -1,65 +0,0 @@ -@model Dsp.Web.Areas.Service.Models.ServiceHourSubmissionModel -@{ - ViewBag.Title = "Service Hour Submission"; - ViewBag.Subtitle = Model.Semester; -} - -
- -
-
- @using (Html.BeginForm("Submit", "Hours", new { area = "Service" }, FormMethod.Post, new { role = "form" })) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true) - -
- @Html.LabelFor(m => m.SelectedEventId) - @Html.DropDownListFor(m => m.SelectedEventId, Model.Events, - new { @class = "form-control selectpicker", autocomplete = "off", id = "events-dd", data_live_search = "true" }) -
-
- @Html.LabelFor(m => m.HoursServed) - @Html.TextBoxFor(m => m.HoursServed, new { @class = "form-control", autocomplete = "off" }) - @Html.ValidationMessageFor(model => model.HoursServed, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
- Submitting Hours -
-

-

    -
  1. Submitting hours for an event for which you already turned in hours will update the hours for that event.
  2. -
  3. Submitting a value of zero for an event for which you already turned in hours will delete that submission.
  4. -
  5. You can't add hours for a previous semester, so make sure that you submit your service hours before the end of each semester.
  6. -
-

-
-
- Missing Event -
-

- If you don't see an event in the dropdown, you can add it yourself by going - @Html.ActionLink("here", "Create", "Events", new { area = "Service", sid = Model.Semester.Id }, new { @class = "" }). -

-
-
-
-
diff --git a/src/Dsp.Web/Areas/Service/Views/Stats/Index.cshtml b/src/Dsp.Web/Areas/Service/Views/Stats/Index.cshtml deleted file mode 100644 index 0b7531ef..00000000 --- a/src/Dsp.Web/Areas/Service/Views/Stats/Index.cshtml +++ /dev/null @@ -1,261 +0,0 @@ -@model ServiceStatsIndexModel -@{ - ViewBag.Title = "Service Stats"; - ViewBag.Subtitle = Model.NavModel.SelectedSemester; - ViewBag.Print = true; -} - - -
-
-
- @Html.Partial("~/Areas/Service/Views/Shared/_ServiceNavPartial.cshtml", Model.NavModel) -
-
-
-
-
-
- Semester Stats - Calculated: @Model.SemesterMemberStats.CalculatedOn -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@(Model.SemesterMemberStats.ExemptMemberCount > 0 ? "*" : "")All Members (@Model.SemesterMemberStats.NonExemptMemberCount)Active (@Model.SemesterMemberStats.NonExemptActiveMemberCount)New (@Model.SemesterMemberStats.NonExemptNewMemberCount)
Total hours:@Model.SemesterMemberStats.TotalMemberHours@Model.SemesterMemberStats.TotalActiveHours@Model.SemesterMemberStats.TotalNewMemberHours
Members served > 0 hours:@Model.SemesterMemberStats.AllMembersServed (@Model.SemesterMemberStats.AllMembersServedPercentage %)@Model.SemesterMemberStats.ActiveMembersServed (@Model.SemesterMemberStats.ActiveMembersServedPercentage %)@Model.SemesterMemberStats.NewMembersServed (@Model.SemesterMemberStats.NewMembersServedPercentage %)
Members served ≥ 10 hours:@Model.SemesterMemberStats.AllMembersServedTen (@Model.SemesterMemberStats.AllMembersServedTenPercentage %)@Model.SemesterMemberStats.ActiveMembersServedTen (@Model.SemesterMemberStats.ActiveMembersServedTenPercentage %)@Model.SemesterMemberStats.NewMembersServedTen (@Model.SemesterMemberStats.NewMembersServedTenPercentage %)
Members served ≥ 15 hours:@Model.SemesterMemberStats.AllMembersServedFifteen (@Model.SemesterMemberStats.AllMembersServedFifteenPercentage %)@Model.SemesterMemberStats.ActiveMembersServedFifteen (@Model.SemesterMemberStats.ActiveMembersServedFifteenPercentage %)@Model.SemesterMemberStats.NewMembersServedFifteen (@Model.SemesterMemberStats.NewMembersServedFifteenPercentage %)
Service Hours Per Member:@Model.SemesterMemberStats.AverageAllMemberHours@Model.SemesterMemberStats.AverageActiveMemberHours@Model.SemesterMemberStats.AverageNewMemberHours
Members Meeting Their Attendance Requirement:@Model.SemesterMemberStats.AverageAllMemberAttendance (@Model.SemesterMemberStats.AverageAllMemberAttendancePercentage %)@Model.SemesterMemberStats.AverageActiveMemberAttendance (@Model.SemesterMemberStats.AverageActiveMemberAttendancePercentage %)@Model.SemesterMemberStats.AverageNewMemberAttendance (@Model.SemesterMemberStats.AverageNewMemberAttendancePercentage %)
-
- @if (Model.SemesterMemberStats.ExemptMemberCount > 0) - { - - } -
-
-
-
- -
-
-
-

- - The adjusted 80% target is "adjusted" because it does not include - members with service hour amendments that completely eliminate their - semester requirement. -

-
-
-
-
-
-
- General Stats For All Semesters - @if (Model.GeneralStats.Any()) - { - Calculated: @Model.GeneralStats.First().CalculatedOn - } -
-
- - - - - - - - - - - - @foreach (var stat in Model.GeneralStats) - { - var isSelectedSemester = stat.SemesterId == Model.NavModel.SelectedSemester.Id; - - - - - - - - - } - -
SemesterTotal HoursAverage HoursBiggest Event# of Events
- - @stat.SemesterName - - @stat.TotalHours@stat.AverageHours - - @stat.BiggestEventName - - @stat.NumberOfEvents
-
-
- -

- - Note: Stats for the current semester update every six hours. - Stats for non-current semesters are cached for one week. -

-
-
-
-
-
- -@section scripts { - -} diff --git a/src/Dsp.Web/Areas/Service/Views/_ViewStart.cshtml b/src/Dsp.Web/Areas/Service/Views/_ViewStart.cshtml deleted file mode 100644 index bffb9068..00000000 --- a/src/Dsp.Web/Areas/Service/Views/_ViewStart.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Service/Views/web.config b/src/Dsp.Web/Areas/Service/Views/web.config deleted file mode 100644 index a246f500..00000000 --- a/src/Dsp.Web/Areas/Service/Views/web.config +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/Controllers/ScheduleController.cs b/src/Dsp.Web/Areas/Sobers/Controllers/ScheduleController.cs deleted file mode 100644 index 432d1ecd..00000000 --- a/src/Dsp.Web/Areas/Sobers/Controllers/ScheduleController.cs +++ /dev/null @@ -1,397 +0,0 @@ -namespace Dsp.Web.Areas.Sobers.Controllers -{ - using Data.Entities; - using Dsp.Data; - using Dsp.Repositories; - using Dsp.Services; - using Dsp.Services.Interfaces; - using Microsoft.AspNet.Identity; - using Models; - using System; - using System.Collections.Generic; - using System.Data.Entity; - using System.Linq; - using System.Net; - using System.Text; - using System.Threading.Tasks; - using System.Web.Mvc; - using Web.Controllers; - - [Authorize(Roles = "New, Neophyte, Active, Alumnus, Affiliate")] - public class ScheduleController : BaseController - { - private ISoberService _soberService; - private IMemberService _memberService; - - public ScheduleController() - { - var repo = new Repository(_db); - _soberService = new SoberService(repo); - _memberService = new MemberService(repo); - } - - public ScheduleController(ISoberService soberService, IMemberService memberService) - { - _soberService = soberService; - _memberService = memberService; - } - - public async Task Index(SoberMessage? message) - { - SetSoberMessage(message); - - var signups = await _soberService.GetAllFutureSignupsAsync(); - - return View(signups); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task Manager(SoberMessage? message) - { - SetSoberMessage(message); - - var soberTypes = await _soberService.GetTypesAsync(); - var model = new SoberManagerModel - { - Signups = await _soberService.GetFutureVacantSignups(), - SignupTypes = GetSoberTypesSelectList(soberTypes), - NewSignup = new SoberSignup(), - MultiAddModel = new MultiAddSoberSignupModel - { - DriverAmount = 0, - OfficerAmount = 0 - } - }; - - return View(model); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task AddSignup(SoberManagerModel model) - { - if (!ModelState.IsValid) return RedirectToAction("Manager", new { message = SoberMessage.AddSignupFailure }); - - model.NewSignup.DateOfShift = ConvertCstToUtc(model.NewSignup.DateOfShift); - model.NewSignup.CreatedOn = DateTime.UtcNow; - - await _soberService.CreateSignupAsync(model.NewSignup); - - return RedirectToAction("Manager", new { message = SoberMessage.AddSignupSuccess }); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task MultiAddSignup(SoberManagerModel model) - { - var modelInvalid = - (model.MultiAddModel.DriverAmount == 0 && - model.MultiAddModel.OfficerAmount == 0) || - string.IsNullOrEmpty(model.MultiAddModel.DateString); - if (modelInvalid) - { - return RedirectToAction("Manager", new { message = SoberMessage.MultiAddSignupFailure }); - } - - var dateStrings = model.MultiAddModel.DateString.Split(','); - var driverType = await _db.SoberTypes.SingleOrDefaultAsync(t => t.Name == "Driver"); - var officerType = await _db.SoberTypes.SingleOrDefaultAsync(t => t.Name == "Officer"); - - if (driverType == null || officerType == null) - { - return RedirectToAction("Manager", new { message = SoberMessage.MultiAddSignupMissingTypesFailure }); - } - - if (!dateStrings.Any()) - { - return RedirectToAction("Manager", new { message = SoberMessage.MultiAddSignupNoDatesFailure }); - } - else - { - var signups = new List(); - foreach (var s in dateStrings) - { - DateTime date; - var parsed = DateTime.TryParse(s, out date); - if (!parsed) continue; - var utcDate = new DateTime(date.Year, date.Month, date.Day, 0, 0, 0, DateTimeKind.Utc); - var cstDate = ConvertUtcToCst(utcDate); - var difference = Math.Abs((utcDate - cstDate).Hours); - date = date.AddHours(difference); - - for (var i = 0; i < model.MultiAddModel.DriverAmount; i++) - { - signups.Add(new SoberSignup - { - DateOfShift = date, - SoberTypeId = driverType.SoberTypeId, - CreatedOn = DateTime.UtcNow - }); - } - for (var i = 0; i < model.MultiAddModel.OfficerAmount; i++) - { - signups.Add(new SoberSignup - { - DateOfShift = date, - SoberTypeId = officerType.SoberTypeId, - CreatedOn = DateTime.UtcNow - }); - } - } - await _soberService.CreateSignupsAsync(signups); - } - - return RedirectToAction("Manager", new { message = SoberMessage.MultiAddSignupSuccess }); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task DeleteSignup(int id, string returnUrl) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - try - { - await _soberService.DeleteSignupAsync(id); - - if (string.IsNullOrEmpty(returnUrl)) - return RedirectToAction("Index", new { message = SoberMessage.DeleteSignupSuccess }); - return Redirect(returnUrl); - } - catch - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - } - - public async Task SignupConfirmation(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _db.SoberSignups.FindAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Signup(int id) - { - var model = await _db.SoberSignups.FindAsync(id); - - if (model == null) return HttpNotFound(); - - if (model.UserId != null) - { - return RedirectToAction("Index", new { message = SoberMessage.SignupFailure }); - } - - var userId = User.Identity.GetUserId(); - var user = await _memberService.GetMemberByIdAsync(userId); - if (user.MemberStatus.StatusName == "New" && model.SoberType.Name == "Officer") // New members can't be sober officer - { - return RedirectToAction("Index", new { message = SoberMessage.SignupNewMemberOfficerFailure }); - } - - model.UserId = userId; - model.DateTimeSignedUp = DateTime.UtcNow; - - _db.Entry(model).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - return RedirectToAction("Index", new { message = SoberMessage.SignupSuccess }); - } - - [HttpGet, Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task EditSignup(int id, string returnUrl) - { - var signup = await _db.SoberSignups.FindAsync(id); - - if (signup == null) return HttpNotFound(); - - var model = new EditSoberSignupModel - { - SoberSignup = signup, - Members = await GetUserIdListAsFullNameWithNoneAsync() - }; - - if (signup.UserId != null) - model.SelectedMember = (int)signup.UserId; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken, Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task EditSignup(EditSoberSignupModel model) - { - if (!ModelState.IsValid) - return RedirectToAction("Index", new { message = SoberMessage.EditSignupFailure }); - - var existingSignup = await _db.SoberSignups.FindAsync(model.SoberSignup.SignupId); - - if (existingSignup == null) return HttpNotFound(); - - if (model.SelectedMember <= 0) - { - existingSignup.UserId = null; - existingSignup.DateTimeSignedUp = null; - } - else - { - existingSignup.UserId = model.SelectedMember; - existingSignup.DateTimeSignedUp = DateTime.UtcNow; - } - - existingSignup.Description = model.SoberSignup.Description; - _db.Entry(existingSignup).State = EntityState.Modified; - await _db.SaveChangesAsync(); - - return RedirectToAction("Index", new { message = SoberMessage.EditSignupSuccess }); - } - - [HttpGet] - public async Task Report(SoberReportModel model) - { - var thisSemester = await GetThisSemesterAsync(); - // Identify semester - Semester semester; - if (model.SelectedSemester == null) - semester = thisSemester; - else - semester = await _db.Semesters.FindAsync(model.SelectedSemester); - - if (semester == null) return HttpNotFound(); - - // Identify valid semesters for dropdown - var signups = await _db.SoberSignups.ToListAsync(); - var allSemesters = await _db.Semesters.ToListAsync(); - var semesters = allSemesters - .Where(s => - signups.Any(i => i.DateOfShift >= s.DateStart && i.DateOfShift <= s.DateEnd)) - .ToList(); - // Sometimes the current semester doesn't contain any signups, yet we still want it in the list - if (semesters.All(s => s.Id != thisSemester.Id)) - { - semesters.Add(thisSemester); - } - - // Build model for view - model.SelectedSemester = semester.Id; - model.Semester = semester; - model.SemesterList = GetSemesterSelectList(semesters); - // Identify members for current semester - model.Members = await GetRosterForSemester(semester); - - return View(model); - } - - public async Task Download(int? sid) - { - if (sid == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var semester = await _db.Semesters.FindAsync(sid); - var soberSlots = await _db.SoberSignups - .Where(s => s.DateOfShift >= semester.DateStart && s.DateOfShift <= semester.DateEnd) - .ToListAsync(); - - const string header = "Shift Date, Day of Week, Type, First Name, Last Name"; - var sb = new StringBuilder(); - sb.AppendLine(header); - foreach (var s in soberSlots.OrderBy(s => s.DateOfShift)) - { - var line = s.DateOfShift.ToString("MM/dd/yyyy, ddd,") + - s.SoberType.Name.Replace(",", "") + ","; - if (s.UserId != null) - { - line += s.Member.FirstName.Replace(",", "") + "," + s.Member.LastName.Replace(",", ""); - } - else - { - line += ","; - } - sb.AppendLine(line); - } - - return File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", "DSP Sober Signups - " + semester + ".csv"); - } - - private SelectList GetSoberTypesSelectList(IEnumerable types) - { - var newList = new List(); - foreach (var m in types) - { - newList.Add(new - { - m.SoberTypeId, - Text = m.Name - }); - } - return new SelectList(newList, "SoberTypeId", "Text"); - } - - public enum SoberMessage - { - SignupSuccess, - SignupFailure, - AddSignupSuccess, - AddSignupFailure, - MultiAddSignupSuccess, - MultiAddSignupFailure, - MultiAddSignupMissingTypesFailure, - CancelSignupSuccess, - EditSignupSuccess, - EditSignupFailure, - SignupNewMemberOfficerFailure, - DeleteSignupSuccess, - MultiAddSignupNoDatesFailure, - } - - public void SetSoberMessage(SoberMessage? message) - { - switch (message) - { - case SoberMessage.SignupSuccess: - ViewBag.SuccessMessage = "Sober signup was successful."; - break; - case SoberMessage.AddSignupSuccess: - ViewBag.SuccessMessage = "Successfully added a new sober signup slot."; - break; - case SoberMessage.MultiAddSignupSuccess: - ViewBag.SuccessMessage = "Successfully added multiple new sober signup slots."; - break; - case SoberMessage.CancelSignupSuccess: - ViewBag.SuccessMessage = "Successfully cancelled member's sober signup."; - break; - case SoberMessage.EditSignupSuccess: - ViewBag.SuccessMessage = "Successfully modified sober signup."; - break; - case SoberMessage.DeleteSignupSuccess: - ViewBag.FailMessage = "Successfully deleted sober signup slot."; - break; - case SoberMessage.SignupFailure: - ViewBag.FailMessage = "Sober signup failed."; - break; - case SoberMessage.AddSignupFailure: - ViewBag.FailMessage = "Failed to add sober signup. Please check the values you entered and try again."; - break; - case SoberMessage.MultiAddSignupFailure: - ViewBag.FailMessage = "Multi-add tool failed because no amounts or dates were provided."; - break; - case SoberMessage.MultiAddSignupNoDatesFailure: - ViewBag.FailMessage = "Multi-add tool failed because no dates were provided."; - break; - case SoberMessage.MultiAddSignupMissingTypesFailure: - ViewBag.FailMessage = "There was an error with the multi-add tool. " + - "This is most likely because the sober types Driver and Officer do not both exist. " + - "If Driver and Officer types exist exactly as they are spelled here and you still " + - "get this message, contact Ty Morrow."; - break; - case SoberMessage.EditSignupFailure: - ViewBag.FailMessage = "Failed to modify sober signup. Please try again or contact your administrator" + - "if the problem persists."; - break; - case SoberMessage.SignupNewMemberOfficerFailure: - ViewBag.FailMessage = "Unfortunately, new members are not allowed to be sober officers."; - break; - } - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/Controllers/TypesController.cs b/src/Dsp.Web/Areas/Sobers/Controllers/TypesController.cs deleted file mode 100644 index 5a620ba3..00000000 --- a/src/Dsp.Web/Areas/Sobers/Controllers/TypesController.cs +++ /dev/null @@ -1,122 +0,0 @@ -namespace Dsp.Web.Areas.Sobers.Controllers -{ - using Dsp.Data.Entities; - using Dsp.Web.Controllers; - using MarkdownSharp; - using System.Data.Entity; - using System.Net; - using System.Threading.Tasks; - using System.Web.Mvc; - - [Authorize(Roles = "Alumnus, Active, New, Neophyte")] - public class TypesController : BaseController - { - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task Index() - { - var types = await _db.SoberTypes.Include(m => m.Signups).ToListAsync(); - - var markdown = new Markdown(); - foreach (var type in types) - { - type.Description = markdown.Transform(type.Description); - } - - return View(types); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public ActionResult Create() - { - return View(); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(SoberType soberType) - { - if (!ModelState.IsValid) return View(soberType); - - _db.SoberTypes.Add(soberType); - await _db.SaveChangesAsync(); - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task Edit(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var soberType = await _db.SoberTypes.FindAsync(id); - if (soberType == null) - { - return HttpNotFound(); - } - return View(soberType); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(SoberType soberType) - { - if (!ModelState.IsValid) return View(soberType); - - _db.Entry(soberType).State = EntityState.Modified; - await _db.SaveChangesAsync(); - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - public async Task Delete(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var soberType = await _db.SoberTypes.FindAsync(id); - if (soberType == null) - { - return HttpNotFound(); - } - - var markdown = new Markdown(); - soberType.Description = markdown.Transform(soberType.Description); - - return View(soberType); - } - - [Authorize(Roles = "Administrator, Sergeant-at-Arms")] - [HttpPost, ValidateAntiForgeryToken, ActionName("Delete")] - public async Task DeleteConfirmed(int id) - { - var soberType = await _db.SoberTypes.FindAsync(id); - if (soberType == null) - { - return HttpNotFound(); - } - _db.SoberTypes.Remove(soberType); - await _db.SaveChangesAsync(); - return RedirectToAction("Index"); - } - - public async Task Details(int? id) - { - if (id == null) - { - return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - } - var soberType = await _db.SoberTypes.FindAsync(id); - if (soberType == null) - { - return HttpNotFound(); - } - - var markdown = new Markdown(); - soberType.Description = markdown.Transform(soberType.Description); - - return View(soberType); - } - } -} diff --git a/src/Dsp.Web/Areas/Sobers/Models/EditSoberSignupModel.cs b/src/Dsp.Web/Areas/Sobers/Models/EditSoberSignupModel.cs deleted file mode 100644 index 4c356606..00000000 --- a/src/Dsp.Web/Areas/Sobers/Models/EditSoberSignupModel.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Dsp.Web.Areas.Sobers.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.ComponentModel.DataAnnotations; - using System.Web.Mvc; - - public class EditSoberSignupModel - { - public SoberSignup SoberSignup { get; set; } - - [Required] - [DataType(DataType.Text)] - [Display(Name = "Member")] - public int SelectedMember { get; set; } - public IEnumerable Members { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/Models/MultiAddSoberSignupModel.cs b/src/Dsp.Web/Areas/Sobers/Models/MultiAddSoberSignupModel.cs deleted file mode 100644 index 8f548150..00000000 --- a/src/Dsp.Web/Areas/Sobers/Models/MultiAddSoberSignupModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Dsp.Web.Areas.Sobers.Models -{ - using System.ComponentModel.DataAnnotations; - - public class MultiAddSoberSignupModel - { - [Range(0, 5)] - public int DriverAmount { get; set; } - [Range(0, 5)] - public int OfficerAmount { get; set; } - public string DateString { get; set; } - } -} diff --git a/src/Dsp.Web/Areas/Sobers/Models/SoberManagerModel.cs b/src/Dsp.Web/Areas/Sobers/Models/SoberManagerModel.cs deleted file mode 100644 index 4c2716bc..00000000 --- a/src/Dsp.Web/Areas/Sobers/Models/SoberManagerModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Dsp.Web.Areas.Sobers.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class SoberManagerModel - { - public IEnumerable Signups { get; set; } - public SoberSignup NewSignup { get; set; } - public MultiAddSoberSignupModel MultiAddModel { get; set; } - public SelectList SignupTypes { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/Models/SoberReportModel.cs b/src/Dsp.Web/Areas/Sobers/Models/SoberReportModel.cs deleted file mode 100644 index 8c8a30e9..00000000 --- a/src/Dsp.Web/Areas/Sobers/Models/SoberReportModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Dsp.Web.Areas.Sobers.Models -{ - using Dsp.Data.Entities; - using System.Collections.Generic; - using System.Web.Mvc; - - public class SoberReportModel - { - public List Members { get; set; } - public int? SelectedSemester { get; set; } - public Semester Semester { get; set; } - public IEnumerable SemesterList { get; set; } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/SobersAreaRegistration.cs b/src/Dsp.Web/Areas/Sobers/SobersAreaRegistration.cs deleted file mode 100644 index 2f5dc322..00000000 --- a/src/Dsp.Web/Areas/Sobers/SobersAreaRegistration.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Sobers -{ - public class SobersAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Sobers"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Sobers_default", - "Sobers/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional }, - new[] { "Dsp.Web.Areas.Sobers.Controllers" } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/Views/Schedule/Index.cshtml b/src/Dsp.Web/Areas/Sobers/Views/Schedule/Index.cshtml deleted file mode 100644 index 910bcd3d..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/Schedule/Index.cshtml +++ /dev/null @@ -1,92 +0,0 @@ -@using Dsp.Data.Entities -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Sober Schedule"; - ViewBag.Print = true; - var hasElevatedPermissions = User.IsInRole("Administrator") || User.IsInRole("Sergeant-at-Arms"); -} - -
-
-
- -
-
- - Sober Report - - @if (hasElevatedPermissions) - { - - Manage - - } -
-
-
-
-
-
Future Sober Signups
-
- @if (Model.Any()) - { - foreach (var item in Model.OrderBy(s => s.DateOfShift).ThenBy(s => s.SoberTypeId).ThenBy(s => s.Description)) - { -
-
-
@item.DateOfShift.ToString("MM-dd-yyyy")
-
- - - - @item.SoberType.Name -
-
@item.Description
-
- @if (item.Member == null) - { - if (!User.IsInRole("New") || item.SoberType.Name != "Officer") - { - @Html.ActionLink("Sign up", "SignupConfirmation", "Schedule", new { id = item.SignupId }, new { @class = "no-print" }) - } - } - else - { - @item.Member.ToString() - } -
-
- @if (hasElevatedPermissions) - { - - Edit - @: | - - Delete - - } -
-
-
- } - } - else - { -
- No sober signups have been posted. -
- } -
- -
-
-
-
-
- -
-
-
diff --git a/src/Dsp.Web/Areas/Sobers/Views/Schedule/SignUpConfirmation.cshtml b/src/Dsp.Web/Areas/Sobers/Views/Schedule/SignUpConfirmation.cshtml deleted file mode 100644 index 173f1f28..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/Schedule/SignUpConfirmation.cshtml +++ /dev/null @@ -1,34 +0,0 @@ -@model Dsp.Data.Entities.SoberSignup -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Sober Signup Confirmation"; -} - -
-
-
-
-
- Are you sure you want to signup for the - @Model.SoberType.Name - sober shift on - @Model.DateOfShift?
- - You will have to contact the current Sergeant-at-Arms to cancel. - -
-
- @using (Html.BeginForm("Signup", "Schedule", FormMethod.Post)) - { - @Html.AntiForgeryToken() - @Html.Hidden("id", Model.SignupId) - -
- -
- } -
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Sobers/Views/Types/Create.cshtml b/src/Dsp.Web/Areas/Sobers/Views/Types/Create.cshtml deleted file mode 100644 index b49975e8..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/Types/Create.cshtml +++ /dev/null @@ -1,63 +0,0 @@ -@model Dsp.Data.Entities.SoberType -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create Sober Type"; -} -@section styles { - @Styles.Render("~/content/markdown") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new {@class = "text-danger"}) - -
- @Html.LabelFor(model => model.Name, new {@class = "control-label"}) - @Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control"}}) - @Html.ValidationMessageFor(model => model.Name, "", new {@class = "text-danger"}) -
- -
- @Html.LabelFor(model => model.Description, new {@class = "control-label"}) -
-
- @Html.EditorFor(model => model.Description, new {htmlAttributes = new {@class = "form-control wmd-input", rows = 10, id = "wmd-input"}}) -
-
- @Html.ValidationMessageFor(model => model.Description, "", new {@class = "text-danger"}) -
- -
- -
- - } -
-
-
- -@section scripts { - @Scripts.Render("~/bundles/markdown") - -} diff --git a/src/Dsp.Web/Areas/Sobers/Views/Types/Delete.cshtml b/src/Dsp.Web/Areas/Sobers/Views/Types/Delete.cshtml deleted file mode 100644 index c8c1e1af..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/Types/Delete.cshtml +++ /dev/null @@ -1,34 +0,0 @@ -@model Dsp.Data.Entities.SoberType -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Sober Type"; -} - -
- -
-
-
-

- Are you sure you want to delete the "@Model.Name" sober type? -

-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Sobers/Views/Types/Details.cshtml b/src/Dsp.Web/Areas/Sobers/Views/Types/Details.cshtml deleted file mode 100644 index 2095c4ab..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/Types/Details.cshtml +++ /dev/null @@ -1,37 +0,0 @@ -@model Dsp.Data.Entities.SoberType -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = Model.Name; - ViewBag.Subtitle = "Details"; -} - -
- -
-
- @if (string.IsNullOrEmpty(Model.Description)) - { - @: No description is currently available. The Sergeant-at-Arms is slacking. >=( - } - else - { - @Html.Raw(Model.Description) - } -
-
-
\ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/Views/Types/Edit.cshtml b/src/Dsp.Web/Areas/Sobers/Views/Types/Edit.cshtml deleted file mode 100644 index 0beaac28..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/Types/Edit.cshtml +++ /dev/null @@ -1,73 +0,0 @@ -@model Dsp.Data.Entities.SoberType -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Sober Type"; -} -@section styles { - @Styles.Render("~/content/markdown") -} - -
-
- -
- @if (!Model.Signups.Any()) - { - - - Delete - - } -
-
-
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new {@class = "text-danger"}) - @Html.HiddenFor(model => model.SoberTypeId) - -
- @Html.LabelFor(model => model.Name, new {@class = "control-label"}) - @Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control"}}) - @Html.ValidationMessageFor(model => model.Name, "", new {@class = "text-danger"}) -
- -
- @Html.LabelFor(model => model.Description, new {@class = "control-label"}) -
-
- @Html.EditorFor(model => model.Description, new {htmlAttributes = new {@class = "form-control wmd-input", rows = 10, id = "wmd-input"}}) -
-
- @Html.ValidationMessageFor(model => model.Description, "", new {@class = "text-danger"}) -
- -
- -
- } -
-
-
- -@section scripts { - @Scripts.Render("~/bundles/markdown") - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Sobers/Views/Types/Index.cshtml b/src/Dsp.Web/Areas/Sobers/Views/Types/Index.cshtml deleted file mode 100644 index 4e66be50..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/Types/Index.cshtml +++ /dev/null @@ -1,47 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Sober Types"; -} - -
-
- -
-

- @Html.ActionLink("Create", "Create", "Types", new { }, new { @class = "btn btn-sm btn-success" }) -

-
-
-
- -
-
diff --git a/src/Dsp.Web/Areas/Sobers/Views/web.config b/src/Dsp.Web/Areas/Sobers/Views/web.config deleted file mode 100644 index 0a5a7def..00000000 --- a/src/Dsp.Web/Areas/Sobers/Views/web.config +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Treasury/Controllers/CausesController.cs b/src/Dsp.Web/Areas/Treasury/Controllers/CausesController.cs deleted file mode 100644 index 652ef3db..00000000 --- a/src/Dsp.Web/Areas/Treasury/Controllers/CausesController.cs +++ /dev/null @@ -1,117 +0,0 @@ -using Dsp.Data; -using Dsp.Data.Entities; -using Dsp.Repositories; -using Dsp.Services; -using Dsp.Services.Interfaces; -using Dsp.Web.Controllers; -using System.Net; -using System.Threading.Tasks; -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Treasury.Controllers -{ - [Authorize(Roles = "Neophyte, New, Active, Alumnus, Administrator")] - public class CausesController : BaseController - { - private ITreasuryService _causeService; - - public CausesController() - { - _causeService = new TreasuryService(new Repository(_db)); - } - - public CausesController(ITreasuryService causeService) - { - _causeService = causeService; - } - - public async Task Index() - { - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - var model = await _causeService.GetAllCausesAsync(); - - return View(model); - } - - public ActionResult Create() - { - return View(); - } - - [Authorize(Roles = "Administrator, Philanthropy")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(Cause model) - { - if (!ModelState.IsValid) return View(model); - - await _causeService.CreateCauseAsync(model); - - TempData["SuccessMessage"] = "Cause created successfully."; - return RedirectToAction("Index"); - } - - public async Task Details(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _causeService.GetCauseByIdAsync(id); - - if (model == null) return HttpNotFound(); - - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(model); - } - - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task Edit(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _causeService.GetCauseByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task Edit(Cause model) - { - if (!ModelState.IsValid) return View(model); - - await _causeService.UpdateCauseAsync(model); - - TempData["SuccessMessage"] = "Cause updated successfully."; - return RedirectToAction("Index"); - } - - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task Delete(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _causeService.GetCauseByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task DeleteConfirmed(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - await _causeService.DeleteCauseAsync(id); - - TempData["SuccessMessage"] = "Cause deleted successfully."; - return RedirectToAction("Index"); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Treasury/Controllers/DonationsController.cs b/src/Dsp.Web/Areas/Treasury/Controllers/DonationsController.cs deleted file mode 100644 index 762e20d0..00000000 --- a/src/Dsp.Web/Areas/Treasury/Controllers/DonationsController.cs +++ /dev/null @@ -1,123 +0,0 @@ -using Dsp.Data; -using Dsp.Data.Entities; -using Dsp.Repositories; -using Dsp.Services; -using Dsp.Services.Interfaces; -using Dsp.Web.Controllers; -using Dsp.Web.Extensions; -using System; -using System.Net; -using System.Threading.Tasks; -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Treasury.Controllers -{ - [Authorize(Roles = "Administrator, Treasurer")] - public class DonationsController : BaseController - { - private ITreasuryService _treasuryService; - - public DonationsController() - { - _treasuryService = new TreasuryService(new Repository(_db)); - } - - public DonationsController(ITreasuryService treasuryService) - { - _treasuryService = treasuryService; - } - - public async Task Create(int fid) - { - if (fid <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var fundraiser = await _treasuryService.GetFundraiserByIdAsync(fid); - - if (fundraiser == null) return HttpNotFound(); - - var model = new Donation - { - ReceivedOn = DateTime.UtcNow.FromUtcToCst(), - FundraiserId = fid, - Fundraiser = fundraiser - }; - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(Donation model) - { - if (!ModelState.IsValid) return View(model); - - await _treasuryService.CreateDonationAsync(model); - - TempData["SuccessMessage"] = "Donation created successfully."; - return RedirectToAction("Details", "Fundraisers", new { id = model.FundraiserId }); - } - - public async Task Details(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _treasuryService.GetDonationByIdAsync(id); - - if (model == null) return HttpNotFound(); - - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(model); - } - - public async Task Edit(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _treasuryService.GetDonationByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - public async Task Edit(Donation model) - { - if (!ModelState.IsValid) return View(model); - - await _treasuryService.UpdateDonationAsync(model); - - TempData["SuccessMessage"] = "Donation updated successfully."; - return RedirectToAction("Details", "Donations", new { id = model.Id }); - } - - public async Task Delete(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _treasuryService.GetDonationByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - public async Task DeleteConfirmed(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var donation = await _treasuryService.GetDonationByIdAsync(id); - - if (donation == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var fundraiserId = donation.FundraiserId; - - await _treasuryService.DeleteDonationAsync(id); - - TempData["SuccessMessage"] = "Donation deleted successfully."; - return RedirectToAction("Details", "Fundraisers", new { id = fundraiserId }); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Treasury/Controllers/FundraisersController.cs b/src/Dsp.Web/Areas/Treasury/Controllers/FundraisersController.cs deleted file mode 100644 index 3bbf1a1d..00000000 --- a/src/Dsp.Web/Areas/Treasury/Controllers/FundraisersController.cs +++ /dev/null @@ -1,128 +0,0 @@ -using Dsp.Data; -using Dsp.Data.Entities; -using Dsp.Repositories; -using Dsp.Services; -using Dsp.Services.Interfaces; -using Dsp.Web.Controllers; -using Dsp.Web.Extensions; -using System; -using System.Net; -using System.Threading.Tasks; -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Treasury.Controllers -{ - [Authorize(Roles = "Neophyte, New, Active, Administrator")] - public class FundraisersController : BaseController - { - private ITreasuryService _treasuryService; - - public FundraisersController() - { - _treasuryService = new TreasuryService(new Repository(_db)); - } - - public FundraisersController(ITreasuryService treasuryService) - { - _treasuryService = treasuryService; - } - - public async Task Create(int pid) - { - if (pid <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var cause = await _treasuryService.GetCauseByIdAsync(pid); - - if (cause == null) return HttpNotFound(); - - var model = new Fundraiser - { - BeginsOn = DateTime.UtcNow.FromUtcToCst(), - CauseId = pid, - Cause = cause - }; - - return View(model); - } - - [Authorize(Roles = "Administrator, Philanthropy")] - [HttpPost, ValidateAntiForgeryToken] - public async Task Create(Fundraiser model) - { - if (!ModelState.IsValid) return View(model); - - await _treasuryService.CreateFundraiserAsync(model); - - TempData["SuccessMessage"] = "Fundraiser created successfully."; - return RedirectToAction("Details", "Causes", new { id = model.CauseId }); - } - - public async Task Details(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _treasuryService.GetFundraiserByIdAsync(id); - - if (model == null) return HttpNotFound(); - - ViewBag.SuccessMessage = TempData["SuccessMessage"]; - ViewBag.FailureMessage = TempData["FailureMessage"]; - - return View(model); - } - - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task Edit(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _treasuryService.GetFundraiserByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task Edit(Fundraiser model) - { - if (!ModelState.IsValid) return View(model); - - await _treasuryService.UpdateFundraiserAsync(model); - - TempData["SuccessMessage"] = "Fundraiser updated successfully."; - return RedirectToAction("Details", "Fundraisers", new { id = model.Id }); - } - - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task Delete(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var model = await _treasuryService.GetFundraiserByIdAsync(id); - - if (model == null) return HttpNotFound(); - - return View(model); - } - - [HttpPost, ActionName("Delete"), ValidateAntiForgeryToken] - [Authorize(Roles = "Administrator, Philanthropy")] - public async Task DeleteConfirmed(int id) - { - if (id <= 0) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var fundraiser = await _treasuryService.GetFundraiserByIdAsync(id); - - if (fundraiser == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); - - var causeId = fundraiser.CauseId; - - await _treasuryService.DeleteFundraiserAsync(id); - - TempData["SuccessMessage"] = "Fundraiser deleted successfully."; - return RedirectToAction("Details", "Causes", new { id = causeId }); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Treasury/TreasuryAreaRegistration.cs b/src/Dsp.Web/Areas/Treasury/TreasuryAreaRegistration.cs deleted file mode 100644 index 1e9bf997..00000000 --- a/src/Dsp.Web/Areas/Treasury/TreasuryAreaRegistration.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Web.Mvc; - -namespace Dsp.Web.Areas.Treasury -{ - public class TreasuryAreaRegistration : AreaRegistration - { - public override string AreaName - { - get - { - return "Treasury"; - } - } - - public override void RegisterArea(AreaRegistrationContext context) - { - context.MapRoute( - "Treasury_default", - "Treasury/{controller}/{action}/{id}", - new { action = "Index", id = UrlParameter.Optional } - ); - } - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Treasury/Views/Causes/Create.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Causes/Create.cshtml deleted file mode 100644 index 0fc29c7e..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Causes/Create.cshtml +++ /dev/null @@ -1,45 +0,0 @@ -@model Dsp.Data.Entities.Cause -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Cause"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
- -
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Causes/Delete.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Causes/Delete.cshtml deleted file mode 100644 index 4d9e573b..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Causes/Delete.cshtml +++ /dev/null @@ -1,39 +0,0 @@ -@model Dsp.Data.Entities.Cause -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Cause"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
-
@Html.DisplayNameFor(model => model.Description)
-
@Html.DisplayFor(model => model.Description)
-
-
- - @using (Html.BeginForm("Delete", "Causes", new { id = Model.Id }, FormMethod.Post)) - { - @Html.AntiForgeryToken() - - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Causes/Details.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Causes/Details.cshtml deleted file mode 100644 index f64f90af..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Causes/Details.cshtml +++ /dev/null @@ -1,71 +0,0 @@ -@model Dsp.Data.Entities.Cause -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Cause Details"; -} - -
-
- -
-

- - Create Fundraiser - - - Edit - - @if (!Model.Fundraisers.Any()) - { - - Delete - - } -

-
-
-
-
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
-
@Html.DisplayNameFor(model => model.Description)
-
@Html.DisplayFor(model => model.Description)
-
Fundraisers
-
- @if (Model.Fundraisers.Any()) - { - foreach (var f in Model.Fundraisers.OrderByDescending(m => m.BeginsOn)) - { - var label = string.Format("{0} (Goal: {1:C2})", f.Name, f.Goal); - - if (User.IsInRole("Administrator") || User.IsInRole("Philanthropy")) - { - - @label - - } - else - { - @label - } -
- } - } - else - { - @: No fundraisers - } -
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Causes/Edit.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Causes/Edit.cshtml deleted file mode 100644 index 4fd04ced..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Causes/Edit.cshtml +++ /dev/null @@ -1,43 +0,0 @@ -@model Dsp.Data.Entities.Cause -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Cause"; -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.Id) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control dtp", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Causes/Index.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Causes/Index.cshtml deleted file mode 100644 index 28195a3c..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Causes/Index.cshtml +++ /dev/null @@ -1,29 +0,0 @@ -@model IEnumerable -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Causes"; -} - -
-
- -
-
-
-
-
- @foreach(var p in Model) - { - - @p.Name - - } -
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Donations/Create.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Donations/Create.cshtml deleted file mode 100644 index 08a61732..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Donations/Create.cshtml +++ /dev/null @@ -1,97 +0,0 @@ -@model Dsp.Data.Entities.Donation -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Donation"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
-

- This donation is for the following fundraiser: @Model.Fundraiser.Name -

- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.FundraiserId) - -
- @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.PhoneNumber, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.ReceivedOn, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.ReceivedOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.ReceivedOn, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Amount, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
- Received On -
-

- This is the date on which the donation was received. - If no donation has been received (i.e., this is a pledged amount to be collected in the future), leave the field blank. -

-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} diff --git a/src/Dsp.Web/Areas/Treasury/Views/Donations/Delete.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Donations/Delete.cshtml deleted file mode 100644 index 9ec4c1df..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Donations/Delete.cshtml +++ /dev/null @@ -1,47 +0,0 @@ -@model Dsp.Data.Entities.Donation -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Donation"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
-
-
-
@Html.DisplayNameFor(model => model.FirstName)
-
@Html.DisplayFor(model => model.FirstName)
-
@Html.DisplayNameFor(model => model.LastName)
-
@Html.DisplayFor(model => model.LastName)
-
@Html.DisplayNameFor(model => model.Email)
-
@Html.DisplayFor(model => model.Email)
-
@Html.DisplayNameFor(model => model.PhoneNumber)
-
@Html.DisplayFor(model => model.PhoneNumber)
-
@Html.DisplayNameFor(model => model.ReceivedOn)
-
@Html.DisplayFor(model => model.ReceivedOn)
-
@Html.DisplayNameFor(model => model.Amount)
-
@Html.DisplayFor(model => model.Amount)
-
-
- - @using (Html.BeginForm("Delete", "Donations", new { id = Model.Id }, FormMethod.Post)) - { - @Html.AntiForgeryToken() - - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Donations/Details.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Donations/Details.cshtml deleted file mode 100644 index ec58c9f8..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Donations/Details.cshtml +++ /dev/null @@ -1,47 +0,0 @@ -@model Dsp.Data.Entities.Donation -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Donation Details"; -} - -
- -
-
-
-
-
@Html.DisplayNameFor(model => model.FirstName)
-
@Html.DisplayFor(model => model.FirstName)
-
@Html.DisplayNameFor(model => model.LastName)
-
@Html.DisplayFor(model => model.LastName)
-
@Html.DisplayNameFor(model => model.Email)
-
@Html.DisplayFor(model => model.Email)
-
@Html.DisplayNameFor(model => model.PhoneNumber)
-
@Html.DisplayFor(model => model.PhoneNumber)
-
@Html.DisplayNameFor(model => model.ReceivedOn)
-
@Html.DisplayFor(model => model.ReceivedOn)
-
@Html.DisplayNameFor(model => model.Amount)
-
@Model.Amount.ToString("C2")
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Donations/Edit.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Donations/Edit.cshtml deleted file mode 100644 index ce4f8c11..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Donations/Edit.cshtml +++ /dev/null @@ -1,98 +0,0 @@ -@model Dsp.Data.Entities.Donation -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Donation"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.Id) - @Html.HiddenFor(m => m.FundraiserId) - @Html.HiddenFor(m => m.CreatedOn) - -
- @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.PhoneNumber, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.ReceivedOn, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.ReceivedOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.ReceivedOn, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Amount, "", new { @class = "text-danger" }) -
- -
- -
- } -
-
-
- Received On -
-

- This is the date on which the donation was received. - If no donation has been received (i.e., this is a pledged amount to be collected in the future), leave the field blank. -

-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Create.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Create.cshtml deleted file mode 100644 index e832bf0c..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Create.cshtml +++ /dev/null @@ -1,142 +0,0 @@ -@model Dsp.Data.Entities.Fundraiser -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Create New Fundraiser"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
-

- This fundraiser is for the following cause: @Model.Cause.Name -

- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.CauseId) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.DonationInstructions, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.DonationInstructions, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.DonationInstructions, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.BeginsOn, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.BeginsOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.BeginsOn, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.EndsOn, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.EndsOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.EndsOn, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Goal, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Goal, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Goal, "", new { @class = "text-danger" }) -
- -
- -
- -
- -
- -
- -
- } -
-
-
- Begins / Ends -
-

- Every fundraiser has a begin date, whether it is today or when the chapter was created. - If the fundraiser is ongoing at all times, then it does not have an end date. - In this case, you should leave that field blank. -

-
-
- Goal -
-

- Sometimes a fundraiser has a target amount in mind, in which case you can and should specify it in the goal field. - If the fundraiser has no goal, set the goal to zero. -

-
-
- Display on Donate Page -
-

- Checking that checkbox will cause the fundraiser to appear on the external "Donate" page. - The only exception to this is if the End date of the fundraiser is in the past. - The external "Donate" page will not show fundraisers that have ended, even if this checkbox is checked. -

-
-
- Allow Donation Pledges -
-

- Checking that checkbox will cause the fundraiser to appear on the external "Donate" page's "Pledge Dropdown". - WARNING: this will only work if you ALSO check the "Display on Donate Page" checkbox. -

-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} diff --git a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Delete.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Delete.cshtml deleted file mode 100644 index b6e6b077..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Delete.cshtml +++ /dev/null @@ -1,51 +0,0 @@ -@model Dsp.Data.Entities.Fundraiser -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Delete Fundraiser"; -} - -
- -
-
-
-

Are you sure you want to delete this?

-
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
-
@Html.DisplayNameFor(model => model.Description)
-
@Html.DisplayFor(model => model.Description)
-
@Html.DisplayNameFor(model => model.DonationInstructions)
-
@Html.DisplayFor(model => model.DonationInstructions)
-
@Html.DisplayNameFor(model => model.BeginsOn)
-
@Html.DisplayFor(model => model.BeginsOn)
-
@Html.DisplayNameFor(model => model.EndsOn)
-
@Html.DisplayFor(model => model.EndsOn)
-
@Html.DisplayNameFor(model => model.Goal)
-
@Html.DisplayFor(model => model.Goal)
-
@Html.DisplayNameFor(model => model.IsPublic)
-
@Html.DisplayFor(model => model.IsPublic)
-
@Html.DisplayNameFor(model => model.IsPledgeable)
-
@Html.DisplayFor(model => model.IsPledgeable)
-
-
- - @using (Html.BeginForm("Delete", "Fundraisers", new { id = Model.Id }, FormMethod.Post)) - { - @Html.AntiForgeryToken() - - - } -
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Details.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Details.cshtml deleted file mode 100644 index 6c744a04..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Details.cshtml +++ /dev/null @@ -1,120 +0,0 @@ -@model Dsp.Data.Entities.Fundraiser -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Fundraiser Details"; -} - -
-
- -
-

- - Add Donation - - - Edit - - @if (!Model.Donations.Any()) - { - - Delete - - } -

-
-
-
-
-
-
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
-
@Html.DisplayNameFor(model => model.Description)
-
@Html.DisplayFor(model => model.Description)
-
@Html.DisplayNameFor(model => model.DonationInstructions)
-
@Html.DisplayFor(model => model.DonationInstructions)
-
@Html.DisplayNameFor(model => model.BeginsOn)
-
@Html.DisplayFor(model => model.BeginsOn)
-
@Html.DisplayNameFor(model => model.EndsOn)
-
@Html.DisplayFor(model => model.EndsOn)
-
@Html.DisplayNameFor(model => model.Goal)
-
@Model.Goal.ToString("C2")
-
@Html.DisplayNameFor(model => model.IsPublic)
-
@Html.DisplayFor(model => model.IsPublic)
-
@Html.DisplayNameFor(model => model.IsPledgeable)
-
@Html.DisplayFor(model => model.IsPledgeable)
-
Promised
-
@Model.Donations.Sum(m => m.Amount).ToString("C2")
-
Received
-
@Model.Donations.Where(m => m.ReceivedOn != null).Sum(m => m.Amount).ToString("C2")
-
Donations
-
- @if (Model.Donations.Any()) - { -
-
-
-
- Name -
-
- Amount -
-
- Email -
-
- Phone -
-
-
- @foreach (var s in Model.Donations.OrderByDescending(m => m.ReceivedOn)) - { -
- @if (User.IsInRole("Administrator") || User.IsInRole("Treasurer")) - { -
-
- @s.FirstName @s.LastName -
-
- @s.Amount -
-
- @s.Email -
-
- @s.PhoneNumber -
-
-
-
- @s.CreatedOn.ToString("u") -
-
- } - else - { - @string.Format("{0} {1} ({2:C2})", s.FirstName, s.LastName, s.Amount) - } -
- } -
- } - else - { - @: No donations - } -
-
-
-
-
-
diff --git a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Edit.cshtml b/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Edit.cshtml deleted file mode 100644 index 4fd22d80..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/Fundraisers/Edit.cshtml +++ /dev/null @@ -1,142 +0,0 @@ -@model Dsp.Data.Entities.Fundraiser -@{ - Layout = "~/Views/Shared/_LayoutInternal.cshtml"; - ViewBag.Title = "Edit Fundraiser"; -} -@section styles { - @Styles.Render("~/content/datetimepicker") -} - -
- -
-
- @using (Html.BeginForm()) - { - @Html.AntiForgeryToken() - @Html.ValidationSummary(true, "", new { @class = "text-danger" }) - @Html.HiddenFor(m => m.Id) - @Html.HiddenFor(m => m.CauseId) - -
- @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.DonationInstructions, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.DonationInstructions, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.DonationInstructions, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.BeginsOn, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.BeginsOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.BeginsOn, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.EndsOn, htmlAttributes: new { @class = "control-label" }) -
- @Html.EditorFor(m => m.EndsOn, new { htmlAttributes = new { @class = "form-control", type = "datetime" } }) - - - -
- @Html.ValidationMessageFor(model => model.EndsOn, "", new { @class = "text-danger" }) -
- -
- @Html.LabelFor(model => model.Goal, htmlAttributes: new { @class = "control-label" }) - @Html.EditorFor(model => model.Goal, new { htmlAttributes = new { @class = "form-control", autocomplete = "off" } }) - @Html.ValidationMessageFor(model => model.Goal, "", new { @class = "text-danger" }) -
- -
- -
- -
- -
- -
- -
- } -
-
-
- Begins / Ends -
-

- Every fundraiser has a begin date, whether it is today or when the chapter was created. - If the fundraiser is ongoing at all times, then it does not have an end date. - In this case, you should leave that field blank. -

-
-
- Goal -
-

- Sometimes a fundraiser has a target amount in mind, in which case you can and should specify it in the goal field. - If the fundraiser has no goal, set the goal to zero. -

-
-
- Display on Donate Page -
-

- Checking that checkbox will cause the fundraiser to appear on the external "Donate" page. - The only exception to this is if the End date of the fundraiser is in the past. - The external "Donate" page will not show fundraisers that have ended, even if this checkbox is checked. -

-
-
- Allow Donation Pledges -
-

- Checking that checkbox will cause the fundraiser to appear on the external "Donate" page's "Pledge Dropdown". - WARNING: this will only work if you ALSO check the "Display on Donate Page" checkbox. -

-
-
-
-
- -@section scripts { - @Scripts.Render("~/bundles/datetimepicker") - -} \ No newline at end of file diff --git a/src/Dsp.Web/Areas/Treasury/Views/web.config b/src/Dsp.Web/Areas/Treasury/Views/web.config deleted file mode 100644 index 54604fef..00000000 --- a/src/Dsp.Web/Areas/Treasury/Views/web.config +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Dsp.Web/Content/HouseDiagram.css b/src/Dsp.Web/Content/HouseDiagram.css deleted file mode 100644 index 67214113..00000000 --- a/src/Dsp.Web/Content/HouseDiagram.css +++ /dev/null @@ -1,43 +0,0 @@ -rect { - fill: lightgray; - stroke: darkgray; - stroke-width: 1; -} - -rect.door { - fill: gray; -} - -path { - stroke: darkgray; - stroke-width: 1; -} - -path.room { - fill: #f9f7bf; -} - -path.room:hover, -path.room:focus { - fill: #fffdc2; - cursor: pointer; -} - -path.nonroom { - fill: lightgray; -} - -path.stairs { - fill: gray; -} - -text { - fill: black; - font-family: 'Open Sans'; - font-size: 40px; -} - -.member:hover { - font-weight: bold; - cursor: move; -} diff --git a/src/Dsp.Web/Content/OpenSans.css b/src/Dsp.Web/Content/OpenSans.css deleted file mode 100644 index cecb1ae9..00000000 --- a/src/Dsp.Web/Content/OpenSans.css +++ /dev/null @@ -1,64 +0,0 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; -} -/* cyrillic */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* devanagari */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+02BC, U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200B-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; -} -/* greek-ext */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('fonts/OpenSans-Regular.ttf') format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; -} \ No newline at end of file diff --git a/src/Dsp.Web/Content/Site.css b/src/Dsp.Web/Content/Site.css deleted file mode 100644 index 85136745..00000000 --- a/src/Dsp.Web/Content/Site.css +++ /dev/null @@ -1,716 +0,0 @@ -/* Sticky footer styles --------------------------------------------------- */ - -html, body { - height: 97.25%; - font-family: "Open sans"; -} - -body { - width:100%; -} - -blockquote { - font-size: 14px; -} - -textarea { - max-width: 100%; - max-height: 100%; -} - -.external-body { - display: table; - margin-top: 50px; -} - -.subtext { - font-size: 10px; - margin: 0; -} - -.tooltip { - min-width: 75px; -} - -.truncate { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -/* Big icons (featured on home page) */ -.fa-big { - font-size: 8em !important; - margin: 15px 0; -} - -/* Removes the underlines under fontawesome links */ -a.social { - text-decoration: none; -} - -.page-header { - margin-top: 20px; -} - -.row-space { - margin-bottom: 10px; -} - -.full-width { - width: 100% !important; -} - -dl { - margin-bottom: 0; -} - -.dl-horizontal dt { - text-align: left; - width: auto; -} - -ul, ol { - margin-top: 0; - margin-bottom: 5px; -} - -hr { - margin-top: 5px; - margin-bottom: 5px; -} - -.label-as-badge, .badge { - border-radius: 1em; - font-weight: normal; -} - -.borderless td { - border: none; -} - -/* Responsiveness */ -iframe, object, embed { - max-width: 100%; -} - -/* Home page content styles */ - -.night-img { - background: url('/Images/HouseFrontNight70s.jpg') no-repeat center fixed; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; -} - -.day-img { - background: url('/Images/HouseFrontDay70s.jpg') no-repeat center fixed; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; -} - -/* Internal navbar */ - -.nav-center { - margin: 0; - float: none; -} - -.navbar-inner { - text-align: center; -} - -.navbar-brand { - -webkit-filter: brightness(80%); - -webkit-transition: all 1s ease; - -moz-transition: all 1s ease; - -o-transition: all 1s ease; - -ms-transition: all 1s ease; - transition: all 1s ease; -} - -.navbar-brand:hover { - -webkit-filter: brightness(100%); -} - -.tab-content { - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; - border-bottom: 1px solid #ddd; - padding: 10px; -} - -.nav-tabs { - margin-bottom: 0; -} - -/* Custom pills */ - -.pill-color .active a, -.pill-color .active a:hover { - background-color: #e7e7e7 !important; - color: #555 !important; -} - -.nav-pills > .active > a, .nav-pills > .active > a:hover { - background-color: #e7e7e7 !important; - color: #555 !important; -} - -/* Custom button styles */ - -.btn-light { - margin: 0; - padding: 0; -} - -.btn-file { - position: relative; - overflow: hidden; -} - -.btn-file input[type=file] { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - min-height: 100%; - font-size: 100px; - text-align: right; - filter: alpha(opacity=0); - opacity: 0; - outline: none; - background: white; - cursor: inherit; - display: block; -} - -/* Custom active class for list-group */ - -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #000; - background-color: transparent; - border-color: #ddd; - font-weight: bold; -} - -a.list-group-item.active:before { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 2px; - content: ""; - background-color: #247d4e; -} - -/* Modifying bootstrap panel appearance */ -.panel .table tr td { - padding: 5px 15px; -} - -.panel .table tr th { - padding: 5px 15px; -} - -.panel-body .pagination { - margin: 10px 0px 0px 0px; -} - -.panel-body .list-group, -.panel-body .alert, -.panel-body .table, -.panel-body p { - margin-bottom: 0; -} - -.panel .list-group { - margin-top: 0; -} - -/* Popover Styles */ -.popover-static .popover { - position: relative; - display: block; - margin: 5px 15px 15px 15px; - max-width: 100%; - z-index: 10; -} - -.popover.right > .arrow { - top: 20px; -} - -.popover.right > .arrow:after { - border-right-color: #f7f7f7 !important; -} - -.media-body { - width: 100%; -} - -.popover-content > p { - margin: 0; -} - -/* Side Panel Styles */ - -body { - margin-top: 100px; -} - -@media(min-width:768px) { - body { - margin-top: 50px; - } -} - -#wrapper { - padding-left: 0; -} - -#page-wrapper { - width: 100%; - padding: 0; - background-color: #fff; -} - -.huge { - font-size: 50px; - line-height: normal; -} - -@media(min-width:768px) { - #wrapper { - padding-left: 225px; - } - - #page-wrapper { - padding: 0 0 10px 0; - } -} - -/* Top Navigation */ - -.top-nav { - padding: 0 15px; -} - -.top-nav > li { - display: inline-block; - float: left; -} - -.top-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - line-height: 20px; - color: #999; -} - -.top-nav > li > a:hover, -.top-nav > li > a:focus, -.top-nav > .open > a, -.top-nav > .open > a:hover, -.top-nav > .open > a:focus { - color: #fff; - background-color: #000; -} - -.top-nav > .open > .dropdown-menu { - float: left; - position: absolute; - margin-top: 0; - border: 1px solid rgba(0,0,0,.15); - border-top-left-radius: 0; - border-top-right-radius: 0; - background-color: #fff; - -webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175); - box-shadow: 0 6px 12px rgba(0,0,0,.175); -} - -.top-nav > .open > .dropdown-menu > li > a { - white-space: normal; -} - -ul.message-dropdown { - padding: 0; - max-height: 250px; - overflow-x: hidden; - overflow-y: auto; -} - -li.message-preview { - width: 275px; - border-bottom: 1px solid rgba(0,0,0,.15); -} - -li.message-preview > a { - padding-top: 15px; - padding-bottom: 15px; -} - -li.message-footer { - margin: 5px 0; -} - -ul.alert-dropdown { - width: 200px; -} - -/* Side Navigation */ - -@media(min-width:768px) { - .side-nav { - position: fixed; - top: 51px; - left: 225px; - width: 225px; - margin-left: -225px; - border: none; - border-radius: 0; - overflow-y: auto; - background-color: #222; - bottom: 0; - overflow-x: hidden; - padding-bottom: 40px; - } - - .side-nav > li > a { - width: 225px; - } - - .side-nav li a:hover, - .side-nav li a:focus { - outline: none; - background-color: #000 !important; - } -} - -.side-nav > li > ul { - padding: 0; -} - -.side-nav > li > ul > li > a { - display: block; - padding: 10px 15px 10px 38px; - text-decoration: none; - color: #999; -} - -.side-nav > li > ul > li > a:hover { - color: #fff; -} - -/* Bootstrap td tag colors */ -.table tbody tr > td.success { - background-color: #dff0d8 !important; -} - -.table tbody tr > td.error { - background-color: #f2dede !important; -} - -.table tbody tr > td.warning { - background-color: #fcf8e3 !important; -} - -.table tbody tr > td.info { - background-color: #d9edf7 !important; -} - -.table-hover tbody tr:hover > td.success { - background-color: #d0e9c6 !important; -} - -.table-hover tbody tr:hover > td.error { - background-color: #ebcccc !important; -} - -.table-hover tbody tr:hover > td.warning { - background-color: #faf2cc !important; -} - -.table-hover tbody tr:hover > td.info { - background-color: #c4e3f3 !important; -} - -/* RESPONSIVE TEXT ALIGNMENT */ -.text-xs-left { - text-align: left; -} - -.text-xs-right { - text-align: right; -} - -.text-xs-center { - text-align: center; -} - -.text-xs-justify { - text-align: justify; -} - -@media (min-width: 768px) { - .text-sm-left { - text-align: left; - } - - .text-sm-right { - text-align: right; - } - - .text-sm-center { - text-align: center; - } - - .text-sm-justify { - text-align: justify; - } -} - -@media (min-width: 992px) { - .text-md-left { - text-align: left; - } - - .text-md-right { - text-align: right; - } - - .text-md-center { - text-align: center; - } - - .text-md-justify { - text-align: justify; - } -} - -@media (min-width: 1200px) { - .text-lg-left { - text-align: left; - } - - .text-lg-right { - text-align: right; - } - - .text-lg-center { - text-align: center; - } - - .text-lg-justify { - text-align: justify; - } -} - -/* sidebar */ - -.fixed { - position: fixed; -} - -.bs-docs-sidebar { - padding-left: 20px; - margin-top: 20px; - margin-bottom: 20px; -} - -/* all links */ -.bs-docs-sidebar .nav>li>a { - color: #999; - border-left: 2px solid transparent; - padding: 4px 20px; - font-size: 13px; - font-weight: 400; -} - -/* nested links */ -.bs-docs-sidebar .nav .nav>li>a { - padding-top: 1px; - padding-bottom: 1px; - padding-left: 30px; - font-size: 12px; -} - -/* active & hover links */ -.bs-docs-sidebar .nav>.active>a, -.bs-docs-sidebar .nav>li>a:hover, -.bs-docs-sidebar .nav>li>a:focus { - color: #006622; - text-decoration: none; - background-color: transparent; - border-left-color: #006622; -} -/* all active links */ -.bs-docs-sidebar .nav>.active>a, -.bs-docs-sidebar .nav>.active:hover>a, -.bs-docs-sidebar .nav>.active:focus>a { - font-weight: 700; -} -/* nested active links */ -.bs-docs-sidebar .nav .nav>.active>a, -.bs-docs-sidebar .nav .nav>.active:hover>a, -.bs-docs-sidebar .nav .nav>.active:focus>a { - font-weight: 500; -} - -/* hide inactive nested list */ -.bs-docs-sidebar .nav ul.nav { - display: none; -} -/* show active nested list */ -.bs-docs-sidebar .nav>.active>ul.nav { - display: block; -} - -/* FOOTER */ - -.page-row { - display: table-row; - height:1px; -} - -.page-row { - height: 100%; -} - -.container-fluid.home { - padding: 40px 0px; -} - -.dark { - background-color: #282725; - color: white; -} - -.footer-icons a { - display: inline-block; - width: 35px; - height: 35px; - cursor: pointer; - background-color: #33383b; - border-radius: 2px; - - font-size: 20px; - color: #ffffff; - text-align: center; - line-height: 35px; - - margin-right: 3px; - margin-bottom: 5px; -} - -@media print { - body { - margin:0 !important; - } - - .list-group-item { - page-break-inside: avoid; - } - - a[href]:after { - content: none !important; - } - - .panel { - border: none; - } - - .panel-default > .panel-heading { - color: #333333; - background-color: #f5f5f5 !important; - border: 1px solid #dddddd; - -webkit-print-color-adjust: exact; - } - - .no-print, .no-print * { - display: none !important; - } - - .print, .print * { - display: block !important; - } - - .print-inline, .print-inline * { - display: inline !important; - } - - .col-p-1, .col-p-2, .col-p-3, .col-p-4, .col-p-5, .col-p-6, .col-p-7, .col-p-8, .col-p-9, .col-p-10, .col-p-11, .col-p-12 { - float: left; - } - - .col-p-12 { - width: 100%; - } - - .col-p-11 { - width: 91.66666666666666%; - } - - .col-p-10 { - width: 83.33333333333334%; - } - - .col-p-9 { - width: 75%; - } - - .col-p-8 { - width: 66.66666666666666%; - } - - .col-p-7 { - width: 58.333333333333336%; - } - - .col-p-6 { - width: 50%; - } - - .col-p-5 { - width: 41.66666666666667%; - } - - .col-p-4 { - width: 33.33333333333333%; - } - - .col-p-3 { - width: 25%; - } - - .col-p-2 { - width: 16.666666666666664%; - } - - .col-p-1 { - width: 8.333333333333332%; - } - - .text-p-left { - text-align: left; - } - - .text-p-right { - text-align: right; - } - - .text-p-center { - text-align: center; - } - - .text-p-justify { - text-align: justify; - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-combobox.css b/src/Dsp.Web/Content/bootstrap-combobox.css deleted file mode 100644 index 8b87e0a8..00000000 --- a/src/Dsp.Web/Content/bootstrap-combobox.css +++ /dev/null @@ -1,42 +0,0 @@ -.form-search .combobox-container, -.form-inline .combobox-container { - display: inline-block; - margin-bottom: 0; - vertical-align: top; -} -.form-search .combobox-container .input-group-addon, -.form-inline .combobox-container .input-group-addon { - width: auto; -} -.combobox-selected .caret { - display: none; -} -/* :not doesn't work in IE8 */ -.combobox-container:not(.combobox-selected) .glyphicon-remove { - display: none; -} -.typeahead-long { - max-height: 300px; - overflow-y: auto; -} -.control-group.error .combobox-container .add-on { - color: #B94A48; - border-color: #B94A48; -} -.control-group.error .combobox-container .caret { - border-top-color: #B94A48; -} -.control-group.warning .combobox-container .add-on { - color: #C09853; - border-color: #C09853; -} -.control-group.warning .combobox-container .caret { - border-top-color: #C09853; -} -.control-group.success .combobox-container .add-on { - color: #468847; - border-color: #468847; -} -.control-group.success .combobox-container .caret { - border-top-color: #468847; -} diff --git a/src/Dsp.Web/Content/bootstrap-datetimepicker-build.css b/src/Dsp.Web/Content/bootstrap-datetimepicker-build.css deleted file mode 100644 index d85eb70f..00000000 --- a/src/Dsp.Web/Content/bootstrap-datetimepicker-build.css +++ /dev/null @@ -1,373 +0,0 @@ -/*! - * Datetimepicker for Bootstrap 3 - * version : 4.14.30 - * https://github.com/Eonasdan/bootstrap-datetimepicker/ - */ -.bootstrap-datetimepicker-widget { - list-style: none; -} -.bootstrap-datetimepicker-widget.dropdown-menu { - margin: 2px 0; - padding: 4px; - width: 19em; -} -@media (min-width: 768px) { - .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { - width: 38em; - } -} -@media (min-width: 992px) { - .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { - width: 38em; - } -} -@media (min-width: 1200px) { - .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { - width: 38em; - } -} -.bootstrap-datetimepicker-widget.dropdown-menu:before, -.bootstrap-datetimepicker-widget.dropdown-menu:after { - content: ''; - display: inline-block; - position: absolute; -} -.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #cccccc; - border-bottom-color: rgba(0, 0, 0, 0.2); - top: -7px; - left: 7px; -} -.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid white; - top: -6px; - left: 8px; -} -.bootstrap-datetimepicker-widget.dropdown-menu.top:before { - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-top: 7px solid #cccccc; - border-top-color: rgba(0, 0, 0, 0.2); - bottom: -7px; - left: 6px; -} -.bootstrap-datetimepicker-widget.dropdown-menu.top:after { - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid white; - bottom: -6px; - left: 7px; -} -.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before { - left: auto; - right: 6px; -} -.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after { - left: auto; - right: 7px; -} -.bootstrap-datetimepicker-widget .list-unstyled { - margin: 0; -} -.bootstrap-datetimepicker-widget a[data-action] { - padding: 6px 0; -} -.bootstrap-datetimepicker-widget a[data-action]:active { - box-shadow: none; -} -.bootstrap-datetimepicker-widget .timepicker-hour, -.bootstrap-datetimepicker-widget .timepicker-minute, -.bootstrap-datetimepicker-widget .timepicker-second { - width: 54px; - font-weight: bold; - font-size: 1.2em; - margin: 0; -} -.bootstrap-datetimepicker-widget button[data-action] { - padding: 6px; -} -.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Increment Hours"; -} -.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Increment Minutes"; -} -.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Decrement Hours"; -} -.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Decrement Minutes"; -} -.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Show Hours"; -} -.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Show Minutes"; -} -.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Toggle AM/PM"; -} -.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Clear the picker"; -} -.bootstrap-datetimepicker-widget .btn[data-action="today"]::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Set the date to today"; -} -.bootstrap-datetimepicker-widget .picker-switch { - text-align: center; -} -.bootstrap-datetimepicker-widget .picker-switch::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Toggle Date and Time Screens"; -} -.bootstrap-datetimepicker-widget .picker-switch td { - padding: 0; - margin: 0; - height: auto; - width: auto; - line-height: inherit; -} -.bootstrap-datetimepicker-widget .picker-switch td span { - line-height: 2.5; - height: 2.5em; - width: 100%; -} -.bootstrap-datetimepicker-widget table { - width: 100%; - margin: 0; -} -.bootstrap-datetimepicker-widget table td, -.bootstrap-datetimepicker-widget table th { - text-align: center; - border-radius: 4px; -} -.bootstrap-datetimepicker-widget table th { - height: 20px; - line-height: 20px; - width: 20px; -} -.bootstrap-datetimepicker-widget table th.picker-switch { - width: 145px; -} -.bootstrap-datetimepicker-widget table th.disabled, -.bootstrap-datetimepicker-widget table th.disabled:hover { - background: none; - color: #777777; - cursor: not-allowed; -} -.bootstrap-datetimepicker-widget table th.prev::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Previous Month"; -} -.bootstrap-datetimepicker-widget table th.next::after { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; - content: "Next Month"; -} -.bootstrap-datetimepicker-widget table thead tr:first-child th { - cursor: pointer; -} -.bootstrap-datetimepicker-widget table thead tr:first-child th:hover { - background: #eeeeee; -} -.bootstrap-datetimepicker-widget table td { - height: 54px; - line-height: 54px; - width: 54px; -} -.bootstrap-datetimepicker-widget table td.cw { - font-size: .8em; - height: 20px; - line-height: 20px; - color: #777777; -} -.bootstrap-datetimepicker-widget table td.day { - height: 20px; - line-height: 20px; - width: 20px; -} -.bootstrap-datetimepicker-widget table td.day:hover, -.bootstrap-datetimepicker-widget table td.hour:hover, -.bootstrap-datetimepicker-widget table td.minute:hover, -.bootstrap-datetimepicker-widget table td.second:hover { - background: #eeeeee; - cursor: pointer; -} -.bootstrap-datetimepicker-widget table td.old, -.bootstrap-datetimepicker-widget table td.new { - color: #777777; -} -.bootstrap-datetimepicker-widget table td.today { - position: relative; -} -.bootstrap-datetimepicker-widget table td.today:before { - content: ''; - display: inline-block; - border: 0 0 7px 7px solid transparent; - border-bottom-color: #247d4e; - border-top-color: rgba(0, 0, 0, 0.2); - position: absolute; - bottom: 4px; - right: 4px; -} -.bootstrap-datetimepicker-widget table td.active, -.bootstrap-datetimepicker-widget table td.active:hover { - background-color: #247d4e; - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.bootstrap-datetimepicker-widget table td.active.today:before { - border-bottom-color: #fff; -} -.bootstrap-datetimepicker-widget table td.disabled, -.bootstrap-datetimepicker-widget table td.disabled:hover { - background: none; - color: #777777; - cursor: not-allowed; -} -.bootstrap-datetimepicker-widget table td span { - display: inline-block; - width: 54px; - height: 54px; - line-height: 54px; - margin: 2px 1.5px; - cursor: pointer; - border-radius: 4px; -} -.bootstrap-datetimepicker-widget table td span:hover { - background: #eeeeee; -} -.bootstrap-datetimepicker-widget table td span.active { - background-color: #247d4e; - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.bootstrap-datetimepicker-widget table td span.old { - color: #777777; -} -.bootstrap-datetimepicker-widget table td span.disabled, -.bootstrap-datetimepicker-widget table td span.disabled:hover { - background: none; - color: #777777; - cursor: not-allowed; -} -.bootstrap-datetimepicker-widget.usetwentyfour td.hour { - height: 27px; - line-height: 27px; -} -.bootstrap-datetimepicker-widget.wider { - width: 21em; -} -.bootstrap-datetimepicker-widget .datepicker-decades .decade { - line-height: 1.8em !important; -} -.input-group.date .input-group-addon { - cursor: pointer; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -/*# sourceMappingURL=bootstrap-datetimepicker-build.css.map */ \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-datetimepicker-build.css.map b/src/Dsp.Web/Content/bootstrap-datetimepicker-build.css.map deleted file mode 100644 index 67e5c892..00000000 --- a/src/Dsp.Web/Content/bootstrap-datetimepicker-build.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap/_bootstrap-datetimepicker.less","bootstrap/bootstrap-datetimepicker-build.less"],"names":[],"mappings":"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","file":"bootstrap-datetimepicker-build.css"} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-datetimepicker-build.min.css b/src/Dsp.Web/Content/bootstrap-datetimepicker-build.min.css deleted file mode 100644 index 157ed036..00000000 --- a/src/Dsp.Web/Content/bootstrap-datetimepicker-build.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Datetimepicker for Bootstrap 3 - * version : 4.14.30 - * https://github.com/Eonasdan/bootstrap-datetimepicker/ - */ -.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media(min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media(min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media(min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:0 0 7px 7px solid transparent;border-bottom-color:#247d4e;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#247d4e;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#247d4e;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-select.css b/src/Dsp.Web/Content/bootstrap-select.css deleted file mode 100644 index 5d4b5b83..00000000 --- a/src/Dsp.Web/Content/bootstrap-select.css +++ /dev/null @@ -1,392 +0,0 @@ -/*! - * Bootstrap-select v1.13.1 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2018 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */ - -select.bs-select-hidden, -.bootstrap-select > select.bs-select-hidden, -select.selectpicker { - display: none !important; -} -.bootstrap-select { - width: 220px \0; - /*IE9 and below*/ -} -.bootstrap-select > .dropdown-toggle { - position: relative; - width: 100%; - z-index: 1; - text-align: right; - white-space: nowrap; -} -.bootstrap-select > .dropdown-toggle.bs-placeholder, -.bootstrap-select > .dropdown-toggle.bs-placeholder:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder:active { - color: #999; -} -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active, -.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active { - color: rgba(255, 255, 255, 0.5); -} -.bootstrap-select > select { - position: absolute !important; - bottom: 0; - left: 50%; - display: block !important; - width: 0.5px !important; - height: 100% !important; - padding: 0 !important; - opacity: 0 !important; - border: none; -} -.bootstrap-select > select.mobile-device { - top: 0; - left: 0; - display: block !important; - width: 100% !important; - z-index: 2; -} -.has-error .bootstrap-select .dropdown-toggle, -.error .bootstrap-select .dropdown-toggle, -.bootstrap-select.is-invalid .dropdown-toggle, -.was-validated .bootstrap-select .selectpicker:invalid + .dropdown-toggle { - border-color: #b94a48; -} -.bootstrap-select.is-valid .dropdown-toggle, -.was-validated .bootstrap-select .selectpicker:valid + .dropdown-toggle { - border-color: #28a745; -} -.bootstrap-select.fit-width { - width: auto !important; -} -.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) { - width: 220px; -} -.bootstrap-select .dropdown-toggle:focus { - outline: thin dotted #333333 !important; - outline: 5px auto -webkit-focus-ring-color !important; - outline-offset: -2px; -} -.bootstrap-select.form-control { - margin-bottom: 0; - padding: 0; - border: none; -} -:not(.input-group) > .bootstrap-select.form-control:not([class*="col-"]) { - width: 100%; -} -.bootstrap-select.form-control.input-group-btn { - z-index: auto; -} -.bootstrap-select.form-control.input-group-btn:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.bootstrap-select:not(.input-group-btn), -.bootstrap-select[class*="col-"] { - float: none; - display: inline-block; - margin-left: 0; -} -.bootstrap-select.dropdown-menu-right, -.bootstrap-select[class*="col-"].dropdown-menu-right, -.row .bootstrap-select[class*="col-"].dropdown-menu-right { - float: right; -} -.form-inline .bootstrap-select, -.form-horizontal .bootstrap-select, -.form-group .bootstrap-select { - margin-bottom: 0; -} -.form-group-lg .bootstrap-select.form-control, -.form-group-sm .bootstrap-select.form-control { - padding: 0; -} -.form-group-lg .bootstrap-select.form-control .dropdown-toggle, -.form-group-sm .bootstrap-select.form-control .dropdown-toggle { - height: 100%; - font-size: inherit; - line-height: inherit; - border-radius: inherit; -} -.bootstrap-select.form-control-sm .dropdown-toggle, -.bootstrap-select.form-control-lg .dropdown-toggle { - font-size: inherit; - line-height: inherit; - border-radius: inherit; -} -.bootstrap-select.form-control-sm .dropdown-toggle { - padding: 0.25rem 0.5rem; -} -.bootstrap-select.form-control-lg .dropdown-toggle { - padding: 0.5rem 1rem; -} -.form-inline .bootstrap-select .form-control { - width: 100%; -} -.bootstrap-select.disabled, -.bootstrap-select > .disabled { - cursor: not-allowed; -} -.bootstrap-select.disabled:focus, -.bootstrap-select > .disabled:focus { - outline: none !important; -} -.bootstrap-select.bs-container { - position: absolute; - top: 0; - left: 0; - height: 0 !important; - padding: 0 !important; -} -.bootstrap-select.bs-container .dropdown-menu { - z-index: 1060; -} -.bootstrap-select .dropdown-toggle:before { - content: ''; - display: inline-block; -} -.bootstrap-select .dropdown-toggle .filter-option { - position: absolute; - top: 0; - left: 0; - padding-top: inherit; - padding-right: inherit; - padding-bottom: inherit; - padding-left: inherit; - height: 100%; - width: 100%; - text-align: left; -} -.bootstrap-select .dropdown-toggle .filter-option-inner { - padding-right: inherit; -} -.bootstrap-select .dropdown-toggle .filter-option-inner-inner { - overflow: hidden; -} -.bootstrap-select .dropdown-toggle .caret { - position: absolute; - top: 50%; - right: 12px; - margin-top: -2px; - vertical-align: middle; -} -.input-group .bootstrap-select.form-control .dropdown-toggle { - border-radius: inherit; -} -.bootstrap-select[class*="col-"] .dropdown-toggle { - width: 100%; -} -.bootstrap-select .dropdown-menu { - min-width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bootstrap-select .dropdown-menu > .inner:focus { - outline: none !important; -} -.bootstrap-select .dropdown-menu.inner { - position: static; - float: none; - border: 0; - padding: 0; - margin: 0; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.bootstrap-select .dropdown-menu li { - position: relative; -} -.bootstrap-select .dropdown-menu li.active small { - color: #fff; -} -.bootstrap-select .dropdown-menu li.disabled a { - cursor: not-allowed; -} -.bootstrap-select .dropdown-menu li a { - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.bootstrap-select .dropdown-menu li a.opt { - position: relative; - padding-left: 2.25em; -} -.bootstrap-select .dropdown-menu li a span.check-mark { - display: none; -} -.bootstrap-select .dropdown-menu li a span.text { - display: inline-block; -} -.bootstrap-select .dropdown-menu li small { - padding-left: 0.5em; -} -.bootstrap-select .dropdown-menu .notify { - position: absolute; - bottom: 5px; - width: 96%; - margin: 0 2%; - min-height: 26px; - padding: 3px 5px; - background: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - pointer-events: none; - opacity: 0.9; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bootstrap-select .no-results { - padding: 3px; - background: #f5f5f5; - margin: 0 5px; - white-space: nowrap; -} -.bootstrap-select.fit-width .dropdown-toggle .filter-option { - position: static; - display: inline; - padding: 0; -} -.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner, -.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner { - display: inline; -} -.bootstrap-select.fit-width .dropdown-toggle .caret { - position: static; - top: auto; - margin-top: -1px; -} -.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark { - position: absolute; - display: inline-block; - right: 15px; - top: 5px; -} -.bootstrap-select.show-tick .dropdown-menu li a span.text { - margin-right: 34px; -} -.bootstrap-select .bs-ok-default:after { - content: ''; - display: block; - width: 0.5em; - height: 1em; - border-style: solid; - border-width: 0 0.26em 0.26em 0; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} -.bootstrap-select.show-menu-arrow.open > .dropdown-toggle, -.bootstrap-select.show-menu-arrow.show > .dropdown-toggle { - z-index: 1061; -} -.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before { - content: ''; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid rgba(204, 204, 204, 0.2); - position: absolute; - bottom: -4px; - left: 9px; - display: none; -} -.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after { - content: ''; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid white; - position: absolute; - bottom: -4px; - left: 10px; - display: none; -} -.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before { - bottom: auto; - top: -4px; - border-top: 7px solid rgba(204, 204, 204, 0.2); - border-bottom: 0; -} -.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after { - bottom: auto; - top: -4px; - border-top: 6px solid white; - border-bottom: 0; -} -.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before { - right: 12px; - left: auto; -} -.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after { - right: 13px; - left: auto; -} -.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before, -.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:before, -.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after, -.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after { - display: block; -} -.bs-searchbox, -.bs-actionsbox, -.bs-donebutton { - padding: 4px 8px; -} -.bs-actionsbox { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bs-actionsbox .btn-group button { - width: 50%; -} -.bs-donebutton { - float: left; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.bs-donebutton .btn-group button { - width: 100%; -} -.bs-searchbox + .bs-actionsbox { - padding: 0 8px 4px; -} -.bs-searchbox .form-control { - margin-bottom: 0; - width: 100%; - float: none; -} -/*# sourceMappingURL=bootstrap-select.css.map */ \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-select.css.map b/src/Dsp.Web/Content/bootstrap-select.css.map deleted file mode 100644 index 2e6054a9..00000000 --- a/src/Dsp.Web/Content/bootstrap-select.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/bootstrap-select.less","bootstrap-select.css"],"names":[],"mappings":"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","file":"bootstrap-select.css","sourcesContent":["@import \"variables\";\n\n// Mixins\n.cursor-disabled() {\n cursor: not-allowed;\n}\n\n// Rules\nselect.bs-select-hidden,\n.bootstrap-select > select.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n\n.bootstrap-select {\n width: 220px \\0; /*IE9 and below*/\n\n // The selectpicker button\n > .dropdown-toggle {\n position: relative;\n width: 100%;\n z-index: 1;\n // necessary for proper positioning of caret in Bootstrap 4 (pushes caret to the right)\n text-align: right;\n white-space: nowrap;\n\n &.bs-placeholder {\n &,\n &:hover,\n &:focus,\n &:active {\n color: @input-color-placeholder;\n }\n\n &.btn-primary,\n &.btn-secondary,\n &.btn-success,\n &.btn-danger,\n &.btn-info,\n &.btn-dark {\n &,\n &:hover,\n &:focus,\n &:active {\n color: @input-alt-color-placeholder;\n }\n }\n }\n }\n\n > select {\n position: absolute !important;\n bottom: 0;\n left: 50%;\n display: block !important;\n width: 0.5px !important;\n height: 100% !important;\n padding: 0 !important;\n opacity: 0 !important;\n border: none;\n\n &.mobile-device {\n top: 0;\n left: 0;\n display: block !important;\n width: 100% !important;\n z-index: 2;\n }\n }\n\n // Error display\n .has-error & .dropdown-toggle,\n .error & .dropdown-toggle,\n &.is-invalid .dropdown-toggle,\n .was-validated & .selectpicker:invalid + .dropdown-toggle {\n border-color: @color-red-error;\n }\n\n &.is-valid .dropdown-toggle,\n .was-validated & .selectpicker:valid + .dropdown-toggle {\n border-color: @color-green-success;\n }\n\n &.fit-width {\n width: auto !important;\n }\n\n &:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: @width-default;\n }\n\n .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n }\n}\n\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n\n :not(.input-group) > &:not([class*=\"col-\"]) {\n width: 100%;\n }\n\n &.input-group-btn {\n z-index: auto;\n\n &:not(:first-child):not(:last-child) {\n > .btn {\n border-radius: 0;\n }\n }\n }\n}\n\n// The selectpicker components\n.bootstrap-select {\n &:not(.input-group-btn),\n &[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n }\n\n // Forces the pull to the right, if necessary\n &,\n &[class*=\"col-\"],\n .row &[class*=\"col-\"] {\n &.dropdown-menu-right {\n float: right;\n }\n }\n\n .form-inline &,\n .form-horizontal &,\n .form-group & {\n margin-bottom: 0;\n }\n\n .form-group-lg &.form-control,\n .form-group-sm &.form-control {\n padding: 0;\n\n .dropdown-toggle {\n height: 100%;\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n }\n }\n\n &.form-control-sm .dropdown-toggle,\n &.form-control-lg .dropdown-toggle {\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n }\n\n &.form-control-sm .dropdown-toggle {\n padding: @input-padding-y-sm @input-padding-x-sm;\n }\n\n &.form-control-lg .dropdown-toggle {\n padding: @input-padding-y-lg @input-padding-x-lg;\n }\n\n // Set the width of the live search (and any other form control within an inline form)\n // see https://github.com/silviomoreto/bootstrap-select/issues/685\n .form-inline & .form-control {\n width: 100%;\n }\n\n &.disabled,\n > .disabled {\n .cursor-disabled();\n\n &:focus {\n outline: none !important;\n }\n }\n\n &.bs-container {\n position: absolute;\n top: 0;\n left: 0;\n height: 0 !important;\n padding: 0 !important;\n \n .dropdown-menu {\n z-index: @zindex-select-dropdown;\n }\n }\n\n // The selectpicker button\n .dropdown-toggle {\n // necessary to maintain proper button height with Bootstrap 3\n &:before {\n content: '';\n display: inline-block;\n }\n\n .filter-option {\n position: absolute;\n top: 0;\n left: 0;\n padding-top: inherit;\n padding-right: inherit;\n padding-bottom: inherit; // needed for proper alignment of show-menu-arrow (deprecated)\n padding-left: inherit;\n height: 100%;\n width: 100%;\n text-align: left;\n }\n\n .filter-option-inner {\n padding-right: inherit;\n }\n\n .filter-option-inner-inner {\n overflow: hidden;\n }\n\n .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n }\n }\n\n .input-group &.form-control .dropdown-toggle {\n border-radius: inherit;\n }\n\n &[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n }\n\n // The selectpicker dropdown\n .dropdown-menu {\n min-width: 100%;\n box-sizing: border-box;\n\n > .inner:focus {\n outline: none !important;\n }\n\n &.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n li {\n position: relative;\n\n &.active small {\n color: #fff;\n }\n\n &.disabled a {\n .cursor-disabled();\n }\n\n a {\n cursor: pointer;\n user-select: none;\n\n &.opt {\n position: relative;\n padding-left: 2.25em;\n }\n\n span.check-mark {\n display: none;\n }\n\n span.text {\n display: inline-block;\n }\n }\n\n small {\n padding-left: 0.5em;\n }\n }\n\n .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: rgb(245, 245, 245);\n border: 1px solid rgb(227, 227, 227);\n box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n }\n }\n\n .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n }\n\n &.fit-width .dropdown-toggle {\n .filter-option {\n position: static;\n display: inline;\n padding: 0;\n }\n\n .filter-option-inner,\n .filter-option-inner-inner {\n display: inline;\n }\n\n .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n }\n }\n\n &.show-tick .dropdown-menu {\n .selected span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n top: 5px;\n }\n\n li a span.text {\n margin-right: 34px;\n }\n }\n\n // default check mark for use without an icon font\n .bs-ok-default:after {\n content: '';\n display: block;\n width: 0.5em;\n height: 1em;\n border-style: solid;\n border-width: 0 0.26em 0.26em 0;\n transform: rotate(45deg);\n }\n}\n\n.bootstrap-select.show-menu-arrow {\n &.open > .dropdown-toggle,\n &.show > .dropdown-toggle {\n z-index: (@zindex-select-dropdown + 1);\n }\n\n .dropdown-toggle .filter-option {\n &:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid @color-grey-arrow;\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n }\n\n &:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n }\n }\n\n &.dropup .dropdown-toggle .filter-option {\n &:before {\n bottom: auto;\n top: -4px;\n border-top: 7px solid @color-grey-arrow;\n border-bottom: 0;\n }\n\n &:after {\n bottom: auto;\n top: -4px;\n border-top: 6px solid white;\n border-bottom: 0;\n }\n }\n\n &.pull-right .dropdown-toggle .filter-option {\n &:before {\n right: 12px;\n left: auto;\n }\n\n &:after {\n right: 13px;\n left: auto;\n }\n }\n\n &.open > .dropdown-toggle .filter-option,\n &.show > .dropdown-toggle .filter-option {\n &:before,\n &:after {\n display: block;\n }\n }\n}\n\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n\n.bs-actionsbox {\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 50%;\n }\n}\n\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 100%;\n }\n}\n\n.bs-searchbox {\n & + .bs-actionsbox {\n padding: 0 8px 4px;\n }\n\n & .form-control {\n margin-bottom: 0;\n width: 100%;\n float: none;\n }\n}\n","select.bs-select-hidden,\n.bootstrap-select > select.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n.bootstrap-select {\n width: 220px \\0;\n /*IE9 and below*/\n}\n.bootstrap-select > .dropdown-toggle {\n position: relative;\n width: 100%;\n z-index: 1;\n text-align: right;\n white-space: nowrap;\n}\n.bootstrap-select > .dropdown-toggle.bs-placeholder,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder:active {\n color: #999;\n}\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active,\n.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active {\n color: rgba(255, 255, 255, 0.5);\n}\n.bootstrap-select > select {\n position: absolute !important;\n bottom: 0;\n left: 50%;\n display: block !important;\n width: 0.5px !important;\n height: 100% !important;\n padding: 0 !important;\n opacity: 0 !important;\n border: none;\n}\n.bootstrap-select > select.mobile-device {\n top: 0;\n left: 0;\n display: block !important;\n width: 100% !important;\n z-index: 2;\n}\n.has-error .bootstrap-select .dropdown-toggle,\n.error .bootstrap-select .dropdown-toggle,\n.bootstrap-select.is-invalid .dropdown-toggle,\n.was-validated .bootstrap-select .selectpicker:invalid + .dropdown-toggle {\n border-color: #b94a48;\n}\n.bootstrap-select.is-valid .dropdown-toggle,\n.was-validated .bootstrap-select .selectpicker:valid + .dropdown-toggle {\n border-color: #28a745;\n}\n.bootstrap-select.fit-width {\n width: auto !important;\n}\n.bootstrap-select:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: 220px;\n}\n.bootstrap-select .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n}\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n}\n:not(.input-group) > .bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: 100%;\n}\n.bootstrap-select.form-control.input-group-btn {\n z-index: auto;\n}\n.bootstrap-select.form-control.input-group-btn:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.bootstrap-select:not(.input-group-btn),\n.bootstrap-select[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n}\n.bootstrap-select.dropdown-menu-right,\n.bootstrap-select[class*=\"col-\"].dropdown-menu-right,\n.row .bootstrap-select[class*=\"col-\"].dropdown-menu-right {\n float: right;\n}\n.form-inline .bootstrap-select,\n.form-horizontal .bootstrap-select,\n.form-group .bootstrap-select {\n margin-bottom: 0;\n}\n.form-group-lg .bootstrap-select.form-control,\n.form-group-sm .bootstrap-select.form-control {\n padding: 0;\n}\n.form-group-lg .bootstrap-select.form-control .dropdown-toggle,\n.form-group-sm .bootstrap-select.form-control .dropdown-toggle {\n height: 100%;\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n}\n.bootstrap-select.form-control-sm .dropdown-toggle,\n.bootstrap-select.form-control-lg .dropdown-toggle {\n font-size: inherit;\n line-height: inherit;\n border-radius: inherit;\n}\n.bootstrap-select.form-control-sm .dropdown-toggle {\n padding: 0.25rem 0.5rem;\n}\n.bootstrap-select.form-control-lg .dropdown-toggle {\n padding: 0.5rem 1rem;\n}\n.form-inline .bootstrap-select .form-control {\n width: 100%;\n}\n.bootstrap-select.disabled,\n.bootstrap-select > .disabled {\n cursor: not-allowed;\n}\n.bootstrap-select.disabled:focus,\n.bootstrap-select > .disabled:focus {\n outline: none !important;\n}\n.bootstrap-select.bs-container {\n position: absolute;\n top: 0;\n left: 0;\n height: 0 !important;\n padding: 0 !important;\n}\n.bootstrap-select.bs-container .dropdown-menu {\n z-index: 1060;\n}\n.bootstrap-select .dropdown-toggle:before {\n content: '';\n display: inline-block;\n}\n.bootstrap-select .dropdown-toggle .filter-option {\n position: absolute;\n top: 0;\n left: 0;\n padding-top: inherit;\n padding-right: inherit;\n padding-bottom: inherit;\n padding-left: inherit;\n height: 100%;\n width: 100%;\n text-align: left;\n}\n.bootstrap-select .dropdown-toggle .filter-option-inner {\n padding-right: inherit;\n}\n.bootstrap-select .dropdown-toggle .filter-option-inner-inner {\n overflow: hidden;\n}\n.bootstrap-select .dropdown-toggle .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n}\n.input-group .bootstrap-select.form-control .dropdown-toggle {\n border-radius: inherit;\n}\n.bootstrap-select[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n}\n.bootstrap-select .dropdown-menu {\n min-width: 100%;\n box-sizing: border-box;\n}\n.bootstrap-select .dropdown-menu > .inner:focus {\n outline: none !important;\n}\n.bootstrap-select .dropdown-menu.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n.bootstrap-select .dropdown-menu li {\n position: relative;\n}\n.bootstrap-select .dropdown-menu li.active small {\n color: #fff;\n}\n.bootstrap-select .dropdown-menu li.disabled a {\n cursor: not-allowed;\n}\n.bootstrap-select .dropdown-menu li a {\n cursor: pointer;\n user-select: none;\n}\n.bootstrap-select .dropdown-menu li a.opt {\n position: relative;\n padding-left: 2.25em;\n}\n.bootstrap-select .dropdown-menu li a span.check-mark {\n display: none;\n}\n.bootstrap-select .dropdown-menu li a span.text {\n display: inline-block;\n}\n.bootstrap-select .dropdown-menu li small {\n padding-left: 0.5em;\n}\n.bootstrap-select .dropdown-menu .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: #f5f5f5;\n border: 1px solid #e3e3e3;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n}\n.bootstrap-select .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n}\n.bootstrap-select.fit-width .dropdown-toggle .filter-option {\n position: static;\n display: inline;\n padding: 0;\n}\n.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,\n.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner {\n display: inline;\n}\n.bootstrap-select.fit-width .dropdown-toggle .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n}\n.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n top: 5px;\n}\n.bootstrap-select.show-tick .dropdown-menu li a span.text {\n margin-right: 34px;\n}\n.bootstrap-select .bs-ok-default:after {\n content: '';\n display: block;\n width: 0.5em;\n height: 1em;\n border-style: solid;\n border-width: 0 0.26em 0.26em 0;\n transform: rotate(45deg);\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle {\n z-index: 1061;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid rgba(204, 204, 204, 0.2);\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before {\n bottom: auto;\n top: -4px;\n border-top: 7px solid rgba(204, 204, 204, 0.2);\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after {\n bottom: auto;\n top: -4px;\n border-top: 6px solid white;\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before {\n right: 12px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after {\n right: 13px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:before,\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after,\n.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after {\n display: block;\n}\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n.bs-actionsbox {\n width: 100%;\n box-sizing: border-box;\n}\n.bs-actionsbox .btn-group button {\n width: 50%;\n}\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-donebutton .btn-group button {\n width: 100%;\n}\n.bs-searchbox + .bs-actionsbox {\n padding: 0 8px 4px;\n}\n.bs-searchbox .form-control {\n margin-bottom: 0;\n width: 100%;\n float: none;\n}\n/*# sourceMappingURL=bootstrap-select.css.map */"]} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-select.min.css b/src/Dsp.Web/Content/bootstrap-select.min.css deleted file mode 100644 index 5985548e..00000000 --- a/src/Dsp.Web/Content/bootstrap-select.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap-select v1.13.1 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2018 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;z-index:1;text-align:right;white-space:nowrap}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.form-control.input-group-btn:not(:first-child):not(:last-child)>.btn{border-radius:0}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle:before{content:'';display:inline-block}.bootstrap-select .dropdown-toggle .filter-option{position:absolute;top:0;left:0;padding-top:inherit;padding-right:inherit;padding-bottom:inherit;padding-left:inherit;height:100%;width:100%;text-align:left}.bootstrap-select .dropdown-toggle .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:#fff}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-table.css b/src/Dsp.Web/Content/bootstrap-table.css deleted file mode 100644 index 6b318ece..00000000 --- a/src/Dsp.Web/Content/bootstrap-table.css +++ /dev/null @@ -1,239 +0,0 @@ -.bootstrap-table .table { - margin-bottom: 0 !important; - border-bottom: 1px solid #dddddd; - border-collapse: collapse !important; - border-radius: 1px; -} - -.fixed-table-container { - position: relative; - clear: both; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; -} - -.fixed-table-header { - overflow: hidden; - border-radius: 4px 4px 0 0; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; -} - -.fixed-table-body { - overflow-x: auto; - overflow-y: auto; - height: 100%; -} - -.fixed-table-container table { - width: 100%; -} - -.fixed-table-container thead th { - height: 0; - padding: 0; - margin: 0; - border-left: 1px solid #dddddd; -} - -.fixed-table-container thead th:first-child { - border-left: none; - border-top-left-radius: 4px; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; -} - -.fixed-table-container thead th .th-inner { - padding: 8px; - line-height: 24px; - vertical-align: top; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.fixed-table-container thead th .sortable { - cursor: pointer; -} - -.fixed-table-container tbody td { - border-left: 1px solid #dddddd; -} - -.fixed-table-container tbody tr:first-child td { - border-top: none; -} - -.fixed-table-container tbody td:first-child { - border-left: none; -} - -/* the same color with .active */ -.fixed-table-container tbody .selected td { - background-color: #f5f5f5; -} - -.fixed-table-container .bs-checkbox { - text-align: center; -} - -.fixed-table-container .bs-checkbox .th-inner { - padding: 8px 0; -} - -.fixed-table-container input[type="radio"], -.fixed-table-container input[type="checkbox"] { - margin: 0 auto !important; -} - -.fixed-table-container .no-records-found { - text-align: center; -} - - -.fixed-table-pagination .pagination, -.fixed-table-pagination .pagination-detail { - margin-top: 10px; - margin-bottom: 10px; -} - -.fixed-table-pagination .pagination a { - padding: 6px 12px; - line-height: 1.428571429; -} - -.fixed-table-pagination .pagination-info { - line-height: 34px; - margin-right: 5px; -} - -.fixed-table-pagination .btn-group { - position: relative; - display: inline-block; - vertical-align: middle; -} - -.fixed-table-pagination .dropup .dropdown-menu { - margin-bottom: 0; -} - -.fixed-table-pagination .page-list { - display: inline-block; -} - -.fixed-table-toolbar .columns-left { - margin-right: 5px; -} - -.fixed-table-toolbar .columns-right { - margin-left: 5px; -} - -.fixed-table-toolbar .columns label { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.428571429; -} - -.fixed-table-toolbar .bars, -.fixed-table-toolbar .search, -.fixed-table-toolbar .columns { - position: relative; - margin-top: 10px; - margin-bottom: 10px; - line-height: 34px; -} - -.fixed-table-pagination li.disabled a { - pointer-events: none; - cursor: default; -} - -.fixed-table-loading { - display: none; - position: absolute; - top: 42px; - right: 0; - bottom: 0; - left: 0; - z-index: 99; - background-color: #fff; - text-align: center; -} - -.fixed-table-body .card-view .title { - font-weight: bold; - display: inline-block; - min-width: 30%; - text-align: left !important; -} - -/* support bootstrap 2 */ -.fixed-table-body thead th .th-inner { - box-sizing: border-box; -} - -.table th, .table td { - vertical-align: middle; - box-sizing: border-box; -} - -.fixed-table-toolbar .dropdown-menu { - text-align: left; - max-height: 300px; - overflow: auto; -} - -.fixed-table-toolbar .btn-group>.btn-group { - display: inline-block; - margin-left: -1px !important; -} - -.fixed-table-toolbar .btn-group>.btn-group>.btn { - border-radius: 0; -} - -.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.bootstrap-table .table>thead>tr>th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} - -/* support bootstrap 3 */ -.bootstrap-table .table thead>tr>th { - padding: 0; - margin: 0; -} - -.pull-right .dropdown-menu { - right: 0; - left: auto; -} - -/* calculate scrollbar width */ -p.fixed-table-scroll-inner { - width: 100%; - height: 200px; -} - -div.fixed-table-scroll-outer { - top: 0; - left: 0; - visibility: hidden; - width: 200px; - height: 150px; - overflow: hidden; -} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-theme.css b/src/Dsp.Web/Content/bootstrap-theme.css deleted file mode 100644 index 31d88826..00000000 --- a/src/Dsp.Web/Content/bootstrap-theme.css +++ /dev/null @@ -1,587 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/src/Dsp.Web/Content/bootstrap-theme.css.map b/src/Dsp.Web/Content/bootstrap-theme.css.map deleted file mode 100644 index d876f60f..00000000 --- a/src/Dsp.Web/Content/bootstrap-theme.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-theme.min.css b/src/Dsp.Web/Content/bootstrap-theme.min.css deleted file mode 100644 index 5e394019..00000000 --- a/src/Dsp.Web/Content/bootstrap-theme.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} -/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap-theme.min.css.map b/src/Dsp.Web/Content/bootstrap-theme.min.css.map deleted file mode 100644 index 94813e90..00000000 --- a/src/Dsp.Web/Content/bootstrap-theme.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap.css b/src/Dsp.Web/Content/bootstrap.css deleted file mode 100644 index 8f61abb8..00000000 --- a/src/Dsp.Web/Content/bootstrap.css +++ /dev/null @@ -1,6766 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-appearance: textfield; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - box-shadow: none !important; - text-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('fonts/glyphicons-halflings-regular.eot'); - src: url('fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('fonts/glyphicons-halflings-regular.woff') format('woff'), url('fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #247d4e; - text-decoration: none; -} -a:hover, -a:focus { - color: #2fa567; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eeeeee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - background-color: #fcf8e3; - padding: .2em; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777777; -} -.text-primary { - color: #247d4e; -} -a.text-primary:hover, -a.text-primary:focus { - color: #185635; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #247d4e; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #185635; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eeeeee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eeeeee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; - text-align: right; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - word-break: break-all; - word-wrap: break-word; - color: #333333; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -.row { - margin-left: -15px; - margin-right: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0%; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0%; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - overflow-x: auto; - min-height: 0.01%; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #247d4e; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(36, 125, 78, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(36, 125, 78, 0.6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #eeeeee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; - min-height: 34px; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-left: 0; - padding-right: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 11px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - border-color: #3c763d; - background-color: #dff0d8; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - border-color: #8a6d3b; - background-color: #fcf8e3; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - border-color: #a94442; - background-color: #f2dede; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 7px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 7px; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.333333px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:focus, -.btn-default.focus { - color: #333; - background-color: #e6e6e6; - border-color: #8c8c8c; -} -.btn-default:hover { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #247d4e; - border-color: #1e6942; -} -.btn-primary:focus, -.btn-primary.focus { - color: #fff; - background-color: #185635; - border-color: #020604; -} -.btn-primary:hover { - color: #fff; - background-color: #185635; - border-color: #103a24; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #185635; - border-color: #103a24; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #fff; - background-color: #103a24; - border-color: #020604; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #247d4e; - border-color: #1e6942; -} -.btn-primary .badge { - color: #247d4e; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #2b975e; - border-color: #258352; -} -.btn-success:focus, -.btn-success.focus { - color: #fff; - background-color: #206f45; - border-color: #092014; -} -.btn-success:hover { - color: #fff; - background-color: #206f45; - border-color: #185434; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #206f45; - border-color: #185434; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #fff; - background-color: #185434; - border-color: #092014; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #2b975e; - border-color: #258352; -} -.btn-success .badge { - color: #2b975e; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #499db6; - border-color: #428da4; -} -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #3a7e92; - border-color: #1d3f49; -} -.btn-info:hover { - color: #fff; - background-color: #3a7e92; - border-color: #306878; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #3a7e92; - border-color: #306878; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #fff; - background-color: #306878; - border-color: #1d3f49; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #499db6; - border-color: #428da4; -} -.btn-info .badge { - color: #499db6; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - color: #247d4e; - font-weight: normal; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #2fa567; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 14px; - text-align: left; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - text-decoration: none; - color: #262626; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #247d4e; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-bottom-left-radius: 4px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - float: none; - display: table-cell; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555555; - text-align: center; - background-color: #eeeeee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.nav > li.disabled > a { - color: #777777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777777; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eeeeee; - border-color: #247d4e; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555555; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #247d4e; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - overflow-x: visible; - padding-right: 15px; - padding-left: 15px; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; - height: 50px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - margin-right: 15px; - padding: 9px 10px; - margin-top: 8px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 8px; - margin-bottom: 8px; -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-left: 15px; - margin-right: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #333; - border-color: #222222; -} -.navbar-default .navbar-brand { - color: #ccc; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #b3b3b3; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #ddd; -} -.navbar-default .navbar-nav > li > a { - color: #ccc; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #ddd; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #f5f5f5; - background-color: #222222; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #222222; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - background-color: #222222; - color: #f5f5f5; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #ccc; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ddd; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #f5f5f5; - background-color: #222222; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #ccc; -} -.navbar-default .navbar-link:hover { - color: #ddd; -} -.navbar-default .btn-link { - color: #ccc; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #ddd; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - background-color: #080808; - color: #fff; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #ccc; -} -.breadcrumb > .active { - color: #777777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - line-height: 1.42857143; - text-decoration: none; - color: #247d4e; - background-color: #fff; - border: 1px solid #ddd; - margin-left: -1px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 3; - color: #2fa567; - background-color: #eeeeee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - background-color: #247d4e; - border-color: #247d4e; - cursor: default; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777777; - background-color: #fff; - border-color: #ddd; - cursor: not-allowed; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 6px; - border-top-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 6px; - border-top-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - list-style: none; - text-align: center; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777777; - background-color: #fff; - cursor: not-allowed; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #247d4e; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #185635; -} -.label-success { - background-color: #2b975e; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #206f45; -} -.label-info { - background-color: #499db6; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #3a7e92; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - color: #fff; - line-height: 1; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: #777777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #247d4e; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eeeeee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-left: auto; - margin-right: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #247d4e; -} -.thumbnail .caption { - padding: 9px; - color: #333333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #3c763d; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #31708f; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - background-color: #fcf8e3; - border-color: #faebcc; - color: #8a6d3b; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - background-color: #f2dede; - border-color: #ebccd1; - color: #a94442; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #247d4e; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #2b975e; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #499db6; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - zoom: 1; - overflow: hidden; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - margin-bottom: 20px; - padding-left: 0; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-right-radius: 4px; - border-top-left-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item, -button.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - text-decoration: none; - color: #555; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - background-color: #eeeeee; - color: #777777; - cursor: not-allowed; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #247d4e; - border-color: #247d4e; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #8edfb4; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-left: 15px; - padding-right: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - border: 0; - margin-bottom: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #247d4e; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #247d4e; - border-color: #247d4e; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #247d4e; -} -.panel-primary > .panel-heading .badge { - color: #247d4e; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #247d4e; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - outline: 0; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; - min-height: 16.42857143px; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 12px; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 14px; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #fff; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; -} -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -moz-transition: -moz-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - -moz-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - left: 0; - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - outline: 0; - color: #fff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #fff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); -} -.carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #fff; -} -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} \ No newline at end of file diff --git a/src/Dsp.Web/Content/bootstrap.css.map b/src/Dsp.Web/Content/bootstrap.css.map deleted file mode 100644 index f010c82d..00000000 --- a/src/Dsp.Web/Content/bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;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ukDH;AexkDC;EACE,oBAAA;Cf0kDH;Ae3kDC;EACE,WAAA;Cf6kDH;Ae9kDC;EACE,oBAAA;CfglDH;AejlDC;EACE,mBAAA;CfmlDH;Ae/kDC;EACE,YAAA;CfilDH;AejmDC;EACE,WAAA;CfmmDH;AepmDC;EACE,mBAAA;CfsmDH;AevmDC;EACE,mBAAA;CfymDH;Ae1mDC;EACE,UAAA;Cf4mDH;Ae7mDC;EACE,mBAAA;Cf+mDH;AehnDC;EACE,mBAAA;CfknDH;AennDC;EACE,UAAA;CfqnDH;AetnDC;EACE,mBAAA;CfwnDH;AeznDC;EACE,mBAAA;Cf2nDH;Ae5nDC;EACE,UAAA;Cf8nDH;Ae/nDC;EACE,mBAAA;CfioDH;AeloDC;EACE,kBAAA;CfooDH;AehoDC;EACE,WAAA;CfkoDH;AepnDC;EACE,kBAAA;CfsnDH;AevnDC;EACE,0BAAA;CfynDH;Ae1nDC;EACE,0BAAA;Cf4nDH;Ae7nDC;EACE,iBAAA;Cf+nDH;AehoDC;EACE,0BAAA;CfkoDH;AenoDC;EACE,0BAAA;CfqoDH;AetoDC;EACE,iBAAA;CfwoDH;AezoDC;EACE,0BAAA;Cf2oDH;Ae5oDC;EACE,0BAAA;Cf8oDH;Ae/oDC;EACE,iBAAA;CfipDH;AelpDC;EACE,0BAAA;CfopDH;AerpDC;EACE,yBAAA;CfupDH;AexpDC;EACE,gBAAA;Cf0pDH;Aa1pDD;EElCI;IACE,YAAA;Gf+rDH;EexrDD;IACE,YAAA;Gf0rDD;Ee3rDD;IACE,oBAAA;Gf6rDD;Ee9rDD;IACE,oBAAA;GfgsDD;EejsDD;IACE,WAAA;GfmsDD;EepsDD;IACE,oBAAA;GfssDD;EevsDD;IACE,oBAAA;GfysDD;Ee1sDD;IACE,WAAA;Gf4sDD;Ee7sDD;IACE,oBAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,WAAA;GfqtDD;EettDD;IACE,oBAAA;GfwtDD;EeztDD;IACE,mBAAA;Gf2tDD;Ee7sDD;IACE,YAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,oBAAA;GfqtDD;EettDD;IACE,WAAA;GfwtDD;EeztDD;IACE,oBAAA;Gf2tDD;Ee5tDD;IACE,oBAAA;Gf8tDD;Ee/tDD;IACE,WAAA;GfiuDD;EeluDD;IACE,oBAAA;GfouDD;EeruDD;IACE,oBAAA;GfuuDD;EexuDD;IACE,WAAA;Gf0uDD;Ee3uDD;IACE,oBAAA;Gf6uDD;Ee9uDD;IACE,mBAAA;GfgvDD;Ee5uDD;IACE,YAAA;Gf8uDD;Ee9vDD;IACE,WAAA;GfgwDD;EejwDD;IACE,mBAAA;GfmwDD;EepwDD;IACE,mBAAA;GfswDD;EevwDD;IACE,UAAA;GfywDD;Ee1wDD;IACE,mBAAA;Gf4wDD;Ee7wDD;IACE,mBAAA;Gf+wDD;EehxDD;IACE,UAAA;GfkxDD;EenxDD;IACE,mBAAA;GfqxDD;EetxDD;IACE,mBAAA;GfwxDD;EezxDD;IACE,UAAA;Gf2xDD;Ee5xDD;IACE,mBAAA;Gf8xDD;Ee/xDD;IACE,kBAAA;GfiyDD;Ee7xDD;IACE,WAAA;Gf+xDD;EejxDD;IACE,kBAAA;GfmxDD;EepxDD;IACE,0BAAA;GfsxDD;EevxDD;IACE,0BAAA;GfyxDD;Ee1xDD;IACE,iBAAA;Gf4xDD;Ee7xDD;IACE,0BAAA;Gf+xDD;EehyDD;IACE,0BAAA;GfkyDD;EenyDD;IACE,iBAAA;GfqyDD;EetyDD;IACE,0BAAA;GfwyDD;EezyDD;IACE,0BAAA;Gf2yDD;Ee5yDD;IACE,iBAAA;Gf8yDD;Ee/yDD;IACE,0BAAA;GfizDD;EelzDD;IACE,yBAAA;GfozDD;EerzDD;IACE,gBAAA;GfuzDD;CACF;Aa/yDD;EE3CI;IACE,YAAA;Gf61DH;Eet1DD;IACE,YAAA;Gfw1DD;Eez1DD;IACE,oBAAA;Gf21DD;Ee51DD;IACE,oBAAA;Gf81DD;Ee/1DD;IACE,WAAA;Gfi2DD;Eel2DD;IACE,oBAAA;Gfo2DD;Eer2DD;IACE,oBAAA;Gfu2DD;Eex2DD;IACE,WAAA;Gf02DD;Ee32DD;IACE,oBAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,WAAA;Gfm3DD;Eep3DD;IACE,oBAAA;Gfs3DD;Eev3DD;IACE,mBAAA;Gfy3DD;Ee32DD;IACE,YAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,oBAAA;Gfm3DD;Eep3DD;IACE,WAAA;Gfs3DD;Eev3DD;IACE,oBAAA;Gfy3DD;Ee13DD;IACE,oBAAA;Gf43DD;Ee73DD;IACE,WAAA;Gf+3DD;Eeh4DD;IACE,oBAAA;Gfk4DD;Een4DD;IACE,oBAAA;Gfq4DD;Eet4DD;IACE,WAAA;Gfw4DD;Eez4DD;IACE,oBAAA;Gf24DD;Ee54DD;IACE,mBAAA;Gf84DD;Ee14DD;IACE,YAAA;Gf44DD;Ee55DD;IACE,WAAA;Gf85DD;Ee/5DD;IACE,mBAAA;Gfi6DD;Eel6DD;IACE,mBAAA;Gfo6DD;Eer6DD;IACE,UAAA;Gfu6DD;Eex6DD;IACE,mBAAA;Gf06DD;Ee36DD;IACE,mBAAA;Gf66DD;Ee96DD;IACE,UAAA;Gfg7DD;Eej7DD;IACE,mBAAA;Gfm7DD;Eep7DD;IACE,mBAAA;Gfs7DD;Eev7DD;IACE,UAAA;Gfy7DD;Ee17DD;IACE,mBAAA;Gf47DD;Ee77DD;IACE,kBAAA;Gf+7DD;Ee37DD;IACE,WAAA;Gf67DD;Ee/6DD;IACE,kBAAA;Gfi7DD;Eel7DD;IACE,0BAAA;Gfo7DD;Eer7DD;IACE,0BAAA;Gfu7DD;Eex7DD;IACE,iBAAA;Gf07DD;Ee37DD;IACE,0BAAA;Gf67DD;Ee97DD;IACE,0BAAA;Gfg8DD;Eej8DD;IACE,iBAAA;Gfm8DD;Eep8DD;IACE,0BAAA;Gfs8DD;Eev8DD;IACE,0BAAA;Gfy8DD;Ee18DD;IACE,iBAAA;Gf48DD;Ee78DD;IACE,0BAAA;Gf+8DD;Eeh9DD;IACE,yBAAA;Gfk9DD;Een9DD;IACE,gBAAA;Gfq9DD;CACF;Aa18DD;EE9CI;IACE,YAAA;Gf2/DH;Eep/DD;IACE,YAAA;Gfs/DD;Eev/DD;IACE,oBAAA;Gfy/DD;Ee1/DD;IACE,oBAAA;Gf4/DD;Ee7/DD;IACE,WAAA;Gf+/DD;EehgED;IACE,oBAAA;GfkgED;EengED;IACE,oBAAA;GfqgED;EetgED;IACE,WAAA;GfwgED;EezgED;IACE,oBAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,WAAA;GfihED;EelhED;IACE,oBAAA;GfohED;EerhED;IACE,mBAAA;GfuhED;EezgED;IACE,YAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,oBAAA;GfihED;EelhED;IACE,WAAA;GfohED;EerhED;IACE,oBAAA;GfuhED;EexhED;IACE,oBAAA;Gf0hED;Ee3hED;IACE,WAAA;Gf6hED;Ee9hED;IACE,oBAAA;GfgiED;EejiED;IACE,oBAAA;GfmiED;EepiED;IACE,WAAA;GfsiED;EeviED;IACE,oBAAA;GfyiED;Ee1iED;IACE,mBAAA;Gf4iED;EexiED;IACE,YAAA;Gf0iED;Ee1jED;IACE,WAAA;Gf4jED;Ee7jED;IACE,mBAAA;Gf+jED;EehkED;IACE,mBAAA;GfkkED;EenkED;IACE,UAAA;GfqkED;EetkED;IACE,mBAAA;GfwkED;EezkED;IACE,mBAAA;Gf2kED;Ee5kED;IACE,UAAA;Gf8kED;Ee/kED;IACE,mBAAA;GfilED;EellED;IACE,mBAAA;GfolED;EerlED;IACE,UAAA;GfulED;EexlED;IACE,mBAAA;Gf0lED;Ee3lED;IACE,kBAAA;Gf6lED;EezlED;IACE,WAAA;Gf2lED;Ee7kED;IACE,kBAAA;Gf+kED;EehlED;IACE,0BAAA;GfklED;EenlED;IACE,0BAAA;GfqlED;EetlED;IACE,iBAAA;GfwlED;EezlED;IACE,0BAAA;Gf2lED;Ee5lED;IACE,0BAAA;Gf8lED;Ee/lED;IACE,iBAAA;GfimED;EelmED;IACE,0BAAA;GfomED;EermED;IACE,0BAAA;GfumED;EexmED;IACE,iBAAA;Gf0mED;Ee3mED;IACE,0BAAA;Gf6mED;Ee9mED;IACE,yBAAA;GfgnED;EejnED;IACE,gBAAA;GfmnED;CACF;AgBvrED;EACE,8BAAA;ChByrED;AgBvrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChByrED;AgBvrED;EACE,iBAAA;ChByrED;AgBnrED;EACE,YAAA;EACA,gBA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on