This commit is contained in:
MaxKarme 2023-04-09 01:21:51 +04:00
commit 367d2a147c
19 changed files with 1773 additions and 170 deletions

View File

@ -8,30 +8,11 @@ namespace UniversityDatabaseImplement.Implements
{
internal class ActivityStorage : IActivityStorage
{
public ActivityViewModel? Delete(ActivityBindingModel model)
public List<ActivityViewModel> GetFullList()
{
using var context = new UniversityDatabase();
var element = context.Activities.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Activities.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
return context.Activities.Select(x => x.GetViewModel).ToList();
}
public ActivityViewModel? GetElement(ActivitySearchModel model)
{
if (!model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.Activities
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public List<ActivityViewModel> GetFilteredList(ActivitySearchModel model)
{
using var context = new UniversityDatabase();
@ -43,13 +24,16 @@ namespace UniversityDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
public List<ActivityViewModel> GetFullList()
public ActivityViewModel? GetElement(ActivitySearchModel model)
{
if (!model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.Activities.Select(x => x.GetViewModel).ToList();
return context.Activities
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public ActivityViewModel? Insert(ActivityBindingModel model)
{
var newActivity = Activity.Create(model);
@ -75,5 +59,17 @@ namespace UniversityDatabaseImplement.Implements
context.SaveChanges();
return activity.GetViewModel;
}
public ActivityViewModel? Delete(ActivityBindingModel model)
{
using var context = new UniversityDatabase();
var element = context.Activities.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Activities.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -3,40 +3,24 @@ using UniversityContracts.SearchModels;
using UniversityContracts.StoragesContracts;
using UniversityContracts.ViewModels;
using UniversityDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
namespace UniversityDatabaseImplement.Implements
{
internal class DisciplineStorage : IDisciplineStorage
{
public DisciplineViewModel? Delete(DisciplineBindingModel model)
public List<DisciplineViewModel> GetFullList()
{
using var context = new UniversityDatabase();
var element = context.Disciplines.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.ExaminationResults.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
public DisciplineViewModel? GetElement(DisciplineSearchModel model)
{
if (string.IsNullOrEmpty(model.Name) && !model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.Disciplines
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Name) && x.Name == model.Name) ||
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
.Include(x => x.Statements)
.Select(x => x.GetViewModel).ToList();
}
public List<DisciplineViewModel> GetFilteredList(DisciplineSearchModel model)
{
using var context = new UniversityDatabase();
return context.Disciplines
.Include(x => x.Statements)
.Where(x => (
(!model.Id.HasValue || x.Id == model.Id) &&
(string.IsNullOrEmpty(model.Name) || x.Name.Contains(model.Name))
@ -45,13 +29,18 @@ namespace UniversityDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
public List<DisciplineViewModel> GetFullList()
public DisciplineViewModel? GetElement(DisciplineSearchModel model)
{
if (string.IsNullOrEmpty(model.Name) && !model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.Disciplines.Select(x => x.GetViewModel).ToList();
return context.Disciplines
.Include(x => x.Statements)
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Name) && x.Name == model.Name) ||
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public DisciplineViewModel? Insert(DisciplineBindingModel model)
{
var newDiscipline = Discipline.Create(model);
@ -64,7 +53,6 @@ namespace UniversityDatabaseImplement.Implements
context.SaveChanges();
return newDiscipline.GetViewModel;
}
public DisciplineViewModel? Update(DisciplineBindingModel model)
{
using var context = new UniversityDatabase();
@ -77,5 +65,17 @@ namespace UniversityDatabaseImplement.Implements
context.SaveChanges();
return discipline.GetViewModel;
}
public DisciplineViewModel? Delete(DisciplineBindingModel model)
{
using var context = new UniversityDatabase();
var element = context.Disciplines.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Disciplines.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -3,24 +3,35 @@ using UniversityContracts.SearchModels;
using UniversityContracts.StoragesContracts;
using UniversityContracts.ViewModels;
using UniversityDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
namespace UniversityDatabaseImplement.Implements
{
internal class ExaminationResultStorage : IExaminationResultStorage
{
public ExaminationResultViewModel? Delete(ExaminationResultBindingModel model)
public List<ExaminationResultViewModel> GetFullList()
{
using var context = new UniversityDatabase();
var element = context.ExaminationResults.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.ExaminationResults.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
return context.ExaminationResults
.Include(x => x.StudentExaminationResults)
.ThenInclude(x => x.Student)
.Select(x => x.GetViewModel).ToList();
}
public List<ExaminationResultViewModel> GetFilteredList(ExaminationResultSearchModel model)
{
using var context = new UniversityDatabase();
return context.ExaminationResults
.Include(x => x.StudentExaminationResults)
.ThenInclude(x => x.Student)
.Where(x => (
(!model.Id.HasValue || x.Id == model.Id) &&
(!model.From.HasValue || x.Date >= model.From) &&
(!model.To.HasValue || x.Date <= model.To)
)
)
.Select(x => x.GetViewModel)
.ToList();
}
public ExaminationResultViewModel? GetElement(ExaminationResultSearchModel model)
{
if (!model.Id.HasValue)
@ -29,27 +40,10 @@ namespace UniversityDatabaseImplement.Implements
}
using var context = new UniversityDatabase();
return context.ExaminationResults
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
.Include(x => x.StudentExaminationResults)
.ThenInclude(x => x.Student)
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public List<ExaminationResultViewModel> GetFilteredList(ExaminationResultSearchModel model)
{
using var context = new UniversityDatabase();
return context.ExaminationResults
.Where(x => (
(!model.Id.HasValue || x.Id == model.Id)
)
)
.Select(x => x.GetViewModel)
.ToList();
}
public List<ExaminationResultViewModel> GetFullList()
{
using var context = new UniversityDatabase();
return context.ExaminationResults.Select(x => x.GetViewModel).ToList();
}
public ExaminationResultViewModel? Insert(ExaminationResultBindingModel model)
{
var newExaminationResult = ExaminationResult.Create(model);
@ -75,5 +69,17 @@ namespace UniversityDatabaseImplement.Implements
context.SaveChanges();
return examinationResult.GetViewModel;
}
public ExaminationResultViewModel? Delete(ExaminationResultBindingModel model)
{
using var context = new UniversityDatabase();
var element = context.ExaminationResults.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.ExaminationResults.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -8,31 +8,11 @@ namespace UniversityDatabaseImplement.Implements
{
internal class ReportTypeStorage : IReportTypeStorage
{
public ReportTypeViewModel? Delete(ReportTypeBindingModel model)
public List<ReportTypeViewModel> GetFullList()
{
using var context = new UniversityDatabase();
var element = context.ReportTypes.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.ReportTypes.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
return context.ReportTypes.Select(x => x.GetViewModel).ToList();
}
public ReportTypeViewModel? GetElement(ReportTypeSearchModel model)
{
if (string.IsNullOrEmpty(model.Name) && !model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.ReportTypes
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Name) && x.Name == model.Name) ||
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public List<ReportTypeViewModel> GetFilteredList(ReportTypeSearchModel model)
{
using var context = new UniversityDatabase();
@ -45,13 +25,17 @@ namespace UniversityDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
public List<ReportTypeViewModel> GetFullList()
public ReportTypeViewModel? GetElement(ReportTypeSearchModel model)
{
if (string.IsNullOrEmpty(model.Name) && !model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.ReportTypes.Select(x => x.GetViewModel).ToList();
return context.ReportTypes
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Name) && x.Name == model.Name) ||
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public ReportTypeViewModel? Insert(ReportTypeBindingModel model)
{
var newReportType = ReportType.Create(model);
@ -77,5 +61,17 @@ namespace UniversityDatabaseImplement.Implements
context.SaveChanges();
return reportType.GetViewModel;
}
public ReportTypeViewModel? Delete(ReportTypeBindingModel model)
{
using var context = new UniversityDatabase();
var element = context.ReportTypes.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.ReportTypes.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -3,24 +3,32 @@ using UniversityContracts.SearchModels;
using UniversityContracts.StoragesContracts;
using UniversityContracts.ViewModels;
using UniversityDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
namespace UniversityDatabaseImplement.Implements
{
internal class StatementStorage : IStatementStorage
{
public StatementViewModel? Delete(StatementBindingModel model)
public List<StatementViewModel> GetFullList()
{
using var context = new UniversityDatabase();
var element = context.Statements.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Statements.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
return context.Statements
.Select(x => x.GetViewModel)
.ToList();
}
public List<StatementViewModel> GetFilteredList(StatementSearchModel model)
{
using var context = new UniversityDatabase();
return context.Statements
.Where(x => (
(!model.Id.HasValue || x.Id == model.Id) &&
(!model.From.HasValue || x.Date >= model.From) &&
(!model.To.HasValue || x.Date <= model.To)
)
)
.Select(x => x.GetViewModel)
.ToList();
}
public StatementViewModel? GetElement(StatementSearchModel model)
{
if (!model.Id.HasValue)
@ -29,27 +37,8 @@ namespace UniversityDatabaseImplement.Implements
}
using var context = new UniversityDatabase();
return context.Statements
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public List<StatementViewModel> GetFilteredList(StatementSearchModel model)
{
using var context = new UniversityDatabase();
return context.Statements
.Where(x => (
(!model.Id.HasValue || x.Id == model.Id)
)
)
.Select(x => x.GetViewModel)
.ToList();
}
public List<StatementViewModel> GetFullList()
{
using var context = new UniversityDatabase();
return context.Statements.Select(x => x.GetViewModel).ToList();
}
public StatementViewModel? Insert(StatementBindingModel model)
{
var newStatement = Statement.Create(model);
@ -75,5 +64,17 @@ namespace UniversityDatabaseImplement.Implements
context.SaveChanges();
return statement.GetViewModel;
}
public StatementViewModel? Delete(StatementBindingModel model)
{
using var context = new UniversityDatabase();
var element = context.Statements.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Statements.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -3,40 +3,27 @@ using UniversityContracts.SearchModels;
using UniversityContracts.StoragesContracts;
using UniversityContracts.ViewModels;
using UniversityDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
namespace UniversityDatabaseImplement.Implements
{
internal class StudentStorage : IStudentStorage
{
public StudentViewModel? Delete(StudentBindingModel model)
public List<StudentViewModel> GetFullList()
{
using var context = new UniversityDatabase();
var element = context.Students.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Students.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
public StudentViewModel? GetElement(StudentSearchModel model)
{
if (string.IsNullOrEmpty(model.Name) && !model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.Students
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Name) && x.Name== model.Name) ||
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
.Include(x => x.StatementStudents)
.ThenInclude(x => x.Statement)
.Select(x => x.GetViewModel)
.ToList();
}
public List<StudentViewModel> GetFilteredList(StudentSearchModel model)
{
using var context = new UniversityDatabase();
return context.Students
.Include(x => x.StatementStudents)
.ThenInclude(x => x.Statement)
.Where(x => (
(!model.Id.HasValue || x.Id == model.Id) &&
(string.IsNullOrEmpty(model.Name) || x.Name.Contains(model.Name))
@ -45,13 +32,19 @@ namespace UniversityDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
public List<StudentViewModel> GetFullList()
public StudentViewModel? GetElement(StudentSearchModel model)
{
if (string.IsNullOrEmpty(model.Name) && !model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.Students.Select(x => x.GetViewModel).ToList();
return context.Students
.Include(x => x.StatementStudents)
.ThenInclude(x => x.Statement)
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Name) && x.Name== model.Name) ||
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public StudentViewModel? Insert(StudentBindingModel model)
{
var newStudent = Student.Create(model);
@ -77,5 +70,17 @@ namespace UniversityDatabaseImplement.Implements
context.SaveChanges();
return student.GetViewModel;
}
public StudentViewModel? Delete(StudentBindingModel model)
{
using var context = new UniversityDatabase();
var element = context.Students.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Students.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -0,0 +1,78 @@
using UniversityContracts.BindingModels;
using UniversityContracts.SearchModels;
using UniversityContracts.StoragesContracts;
using UniversityContracts.ViewModels;
using UniversityDatabaseImplement.Models;
namespace UniversityDatabaseImplement.Implements
{
internal class UserStorage : IUserStorage
{
public List<UserViewModel> GetFullList()
{
using var context = new UniversityDatabase();
return context.Users.Select(x => x.GetViewModel).ToList();
}
public List<UserViewModel> GetFilteredList(UserSearchModel model)
{
using var context = new UniversityDatabase();
return context.Users
.Where(x => (
(!model.Id.HasValue || x.Id == model.Id) &&
(string.IsNullOrEmpty(model.Login) || x.Login.Contains(model.Login)) &&
(string.IsNullOrEmpty(model.Password) || x.Password.Contains(model.Password))
)
)
.Select(x => x.GetViewModel)
.ToList();
}
public UserViewModel? GetElement(UserSearchModel model)
{
if (string.IsNullOrEmpty(model.Login) && string.IsNullOrEmpty(model.Password) && !model.Id.HasValue)
{
return null;
}
using var context = new UniversityDatabase();
return context.Users
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Login) && x.Login == model.Login) ||
(!string.IsNullOrEmpty(model.Password) && x.Password == model.Password) ||
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public UserViewModel? Insert(UserBindingModel model)
{
var newUser = User.Create(model);
if (newUser == null)
{
return null;
}
using var context = new UniversityDatabase();
context.Users.Add(newUser);
context.SaveChanges();
return newUser.GetViewModel;
}
public UserViewModel? Update(UserBindingModel model)
{
using var context = new UniversityDatabase();
var user = context.Users.FirstOrDefault(x => x.Id == model.Id);
if (user == null)
{
return null;
}
user.Update(model);
context.SaveChanges();
return user.GetViewModel;
}
public UserViewModel? Delete(UserBindingModel model)
{
using var context = new UniversityDatabase();
var element = context.Users.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Users.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -0,0 +1,497 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using UniversityDatabaseImplement;
#nullable disable
namespace UniversityDatabaseImplement.Migrations
{
[DbContext(typeof(UniversityDatabase))]
[Migration("20230408211938_Init")]
partial class Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.4")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("UniversityDatabaseImplement.Models.Activity", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone");
b.Property<int?>("ExaminationResultId")
.HasColumnType("integer");
b.Property<int>("Number")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ExaminationResultId");
b.ToTable("Activities");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Discipline", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Department")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Disciplines");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ExaminationResult", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone");
b.Property<string>("ExaminationForm")
.IsRequired()
.HasColumnType("text");
b.Property<int>("Mark")
.HasColumnType("integer");
b.Property<int?>("StatementId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("StatementId");
b.ToTable("ExaminationResults");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportType", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("ReportTypes");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeActivity", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActivityId")
.HasColumnType("integer");
b.Property<int>("ReportTypeId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ActivityId");
b.HasIndex("ReportTypeId");
b.ToTable("ReportTypeActivities");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeDiscipline", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DisciplineId")
.HasColumnType("integer");
b.Property<int>("ReportTypeId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("DisciplineId");
b.HasIndex("ReportTypeId");
b.ToTable("ReportTypeDisciplines");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Statement", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone");
b.Property<int?>("DisciplineId")
.HasColumnType("integer");
b.Property<int>("HoursCount")
.HasColumnType("integer");
b.Property<int?>("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("DisciplineId");
b.HasIndex("UserId");
b.ToTable("Statements");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StatementStudent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("StatementId")
.HasColumnType("integer");
b.Property<int>("StudentId")
.HasColumnType("integer");
b.Property<int>("StudentTypeId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("StatementId");
b.HasIndex("StudentId");
b.ToTable("StatementStudents");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Student", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RecordCardNumber")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Students");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StudentExaminationResult", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ExaminationResultId")
.HasColumnType("integer");
b.Property<int>("StudentId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ExaminationResultId");
b.HasIndex("StudentId");
b.ToTable("StudentExaminationResults");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Login")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("text");
b.Property<string>("PhoneNumber")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Position")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Surname")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Users");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.UserStudent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("StudentId")
.HasColumnType("integer");
b.Property<int>("StudentTypeId")
.HasColumnType("integer");
b.Property<int>("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("StudentId");
b.HasIndex("UserId");
b.ToTable("UserStudents");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Activity", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.ExaminationResult", null)
.WithMany("Activities")
.HasForeignKey("ExaminationResultId");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ExaminationResult", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Statement", null)
.WithMany("ExaminationResults")
.HasForeignKey("StatementId");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeActivity", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Activity", "Activity")
.WithMany("ReportTypeActivities")
.HasForeignKey("ActivityId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.ReportType", "ReportType")
.WithMany("ReportTypeActivities")
.HasForeignKey("ReportTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Activity");
b.Navigation("ReportType");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeDiscipline", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Discipline", "Discipline")
.WithMany("ReportTypeDisciplines")
.HasForeignKey("DisciplineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.ReportType", "ReportType")
.WithMany("ReportTypeDisciplines")
.HasForeignKey("ReportTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Discipline");
b.Navigation("ReportType");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Statement", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Discipline", null)
.WithMany("Statements")
.HasForeignKey("DisciplineId");
b.HasOne("UniversityDatabaseImplement.Models.User", null)
.WithMany("Statements")
.HasForeignKey("UserId");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StatementStudent", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Statement", "Statement")
.WithMany("StatementStudents")
.HasForeignKey("StatementId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.Student", "Student")
.WithMany("StatementStudents")
.HasForeignKey("StudentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Statement");
b.Navigation("Student");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StudentExaminationResult", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.ExaminationResult", "ExaminationResult")
.WithMany("StudentExaminationResults")
.HasForeignKey("ExaminationResultId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.Student", "Student")
.WithMany("StudentExaminationResults")
.HasForeignKey("StudentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ExaminationResult");
b.Navigation("Student");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.UserStudent", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Student", "Student")
.WithMany("StudentUsers")
.HasForeignKey("StudentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.User", "User")
.WithMany("StudentUsers")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Student");
b.Navigation("User");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Activity", b =>
{
b.Navigation("ReportTypeActivities");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Discipline", b =>
{
b.Navigation("ReportTypeDisciplines");
b.Navigation("Statements");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ExaminationResult", b =>
{
b.Navigation("Activities");
b.Navigation("StudentExaminationResults");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportType", b =>
{
b.Navigation("ReportTypeActivities");
b.Navigation("ReportTypeDisciplines");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Statement", b =>
{
b.Navigation("ExaminationResults");
b.Navigation("StatementStudents");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Student", b =>
{
b.Navigation("StatementStudents");
b.Navigation("StudentExaminationResults");
b.Navigation("StudentUsers");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.User", b =>
{
b.Navigation("Statements");
b.Navigation("StudentUsers");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,384 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace UniversityDatabaseImplement.Migrations
{
/// <inheritdoc />
public partial class Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Disciplines",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Name = table.Column<string>(type: "text", nullable: false),
Department = table.Column<string>(type: "text", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Disciplines", x => x.Id);
});
migrationBuilder.CreateTable(
name: "ReportTypes",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Name = table.Column<string>(type: "text", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ReportTypes", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Students",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Name = table.Column<string>(type: "text", nullable: false),
RecordCardNumber = table.Column<string>(type: "text", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Students", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Users",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Name = table.Column<string>(type: "text", nullable: false),
Surname = table.Column<string>(type: "text", nullable: false),
PhoneNumber = table.Column<string>(type: "text", nullable: false),
Position = table.Column<string>(type: "text", nullable: false),
Login = table.Column<string>(type: "text", nullable: false),
Password = table.Column<string>(type: "text", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Users", x => x.Id);
});
migrationBuilder.CreateTable(
name: "ReportTypeDisciplines",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ReportTypeId = table.Column<int>(type: "integer", nullable: false),
DisciplineId = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ReportTypeDisciplines", x => x.Id);
table.ForeignKey(
name: "FK_ReportTypeDisciplines_Disciplines_DisciplineId",
column: x => x.DisciplineId,
principalTable: "Disciplines",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ReportTypeDisciplines_ReportTypes_ReportTypeId",
column: x => x.ReportTypeId,
principalTable: "ReportTypes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Statements",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Date = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
HoursCount = table.Column<int>(type: "integer", nullable: false),
DisciplineId = table.Column<int>(type: "integer", nullable: true),
UserId = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Statements", x => x.Id);
table.ForeignKey(
name: "FK_Statements_Disciplines_DisciplineId",
column: x => x.DisciplineId,
principalTable: "Disciplines",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Statements_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "UserStudents",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
StudentTypeId = table.Column<int>(type: "integer", nullable: false),
UserId = table.Column<int>(type: "integer", nullable: false),
StudentId = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserStudents", x => x.Id);
table.ForeignKey(
name: "FK_UserStudents_Students_StudentId",
column: x => x.StudentId,
principalTable: "Students",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_UserStudents_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ExaminationResults",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ExaminationForm = table.Column<string>(type: "text", nullable: false),
Mark = table.Column<int>(type: "integer", nullable: false),
Date = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
StatementId = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_ExaminationResults", x => x.Id);
table.ForeignKey(
name: "FK_ExaminationResults_Statements_StatementId",
column: x => x.StatementId,
principalTable: "Statements",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "StatementStudents",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
StudentTypeId = table.Column<int>(type: "integer", nullable: false),
StatementId = table.Column<int>(type: "integer", nullable: false),
StudentId = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_StatementStudents", x => x.Id);
table.ForeignKey(
name: "FK_StatementStudents_Statements_StatementId",
column: x => x.StatementId,
principalTable: "Statements",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_StatementStudents_Students_StudentId",
column: x => x.StudentId,
principalTable: "Students",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Activities",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Date = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
Number = table.Column<int>(type: "integer", nullable: false),
ExaminationResultId = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Activities", x => x.Id);
table.ForeignKey(
name: "FK_Activities_ExaminationResults_ExaminationResultId",
column: x => x.ExaminationResultId,
principalTable: "ExaminationResults",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "StudentExaminationResults",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ExaminationResultId = table.Column<int>(type: "integer", nullable: false),
StudentId = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_StudentExaminationResults", x => x.Id);
table.ForeignKey(
name: "FK_StudentExaminationResults_ExaminationResults_ExaminationRes~",
column: x => x.ExaminationResultId,
principalTable: "ExaminationResults",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_StudentExaminationResults_Students_StudentId",
column: x => x.StudentId,
principalTable: "Students",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ReportTypeActivities",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ReportTypeId = table.Column<int>(type: "integer", nullable: false),
ActivityId = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ReportTypeActivities", x => x.Id);
table.ForeignKey(
name: "FK_ReportTypeActivities_Activities_ActivityId",
column: x => x.ActivityId,
principalTable: "Activities",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ReportTypeActivities_ReportTypes_ReportTypeId",
column: x => x.ReportTypeId,
principalTable: "ReportTypes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Activities_ExaminationResultId",
table: "Activities",
column: "ExaminationResultId");
migrationBuilder.CreateIndex(
name: "IX_ExaminationResults_StatementId",
table: "ExaminationResults",
column: "StatementId");
migrationBuilder.CreateIndex(
name: "IX_ReportTypeActivities_ActivityId",
table: "ReportTypeActivities",
column: "ActivityId");
migrationBuilder.CreateIndex(
name: "IX_ReportTypeActivities_ReportTypeId",
table: "ReportTypeActivities",
column: "ReportTypeId");
migrationBuilder.CreateIndex(
name: "IX_ReportTypeDisciplines_DisciplineId",
table: "ReportTypeDisciplines",
column: "DisciplineId");
migrationBuilder.CreateIndex(
name: "IX_ReportTypeDisciplines_ReportTypeId",
table: "ReportTypeDisciplines",
column: "ReportTypeId");
migrationBuilder.CreateIndex(
name: "IX_Statements_DisciplineId",
table: "Statements",
column: "DisciplineId");
migrationBuilder.CreateIndex(
name: "IX_Statements_UserId",
table: "Statements",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_StatementStudents_StatementId",
table: "StatementStudents",
column: "StatementId");
migrationBuilder.CreateIndex(
name: "IX_StatementStudents_StudentId",
table: "StatementStudents",
column: "StudentId");
migrationBuilder.CreateIndex(
name: "IX_StudentExaminationResults_ExaminationResultId",
table: "StudentExaminationResults",
column: "ExaminationResultId");
migrationBuilder.CreateIndex(
name: "IX_StudentExaminationResults_StudentId",
table: "StudentExaminationResults",
column: "StudentId");
migrationBuilder.CreateIndex(
name: "IX_UserStudents_StudentId",
table: "UserStudents",
column: "StudentId");
migrationBuilder.CreateIndex(
name: "IX_UserStudents_UserId",
table: "UserStudents",
column: "UserId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ReportTypeActivities");
migrationBuilder.DropTable(
name: "ReportTypeDisciplines");
migrationBuilder.DropTable(
name: "StatementStudents");
migrationBuilder.DropTable(
name: "StudentExaminationResults");
migrationBuilder.DropTable(
name: "UserStudents");
migrationBuilder.DropTable(
name: "Activities");
migrationBuilder.DropTable(
name: "ReportTypes");
migrationBuilder.DropTable(
name: "Students");
migrationBuilder.DropTable(
name: "ExaminationResults");
migrationBuilder.DropTable(
name: "Statements");
migrationBuilder.DropTable(
name: "Disciplines");
migrationBuilder.DropTable(
name: "Users");
}
}
}

View File

@ -0,0 +1,494 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using UniversityDatabaseImplement;
#nullable disable
namespace UniversityDatabaseImplement.Migrations
{
[DbContext(typeof(UniversityDatabase))]
partial class UniversityDatabaseModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.4")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("UniversityDatabaseImplement.Models.Activity", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone");
b.Property<int?>("ExaminationResultId")
.HasColumnType("integer");
b.Property<int>("Number")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ExaminationResultId");
b.ToTable("Activities");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Discipline", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Department")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Disciplines");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ExaminationResult", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone");
b.Property<string>("ExaminationForm")
.IsRequired()
.HasColumnType("text");
b.Property<int>("Mark")
.HasColumnType("integer");
b.Property<int?>("StatementId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("StatementId");
b.ToTable("ExaminationResults");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportType", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("ReportTypes");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeActivity", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ActivityId")
.HasColumnType("integer");
b.Property<int>("ReportTypeId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ActivityId");
b.HasIndex("ReportTypeId");
b.ToTable("ReportTypeActivities");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeDiscipline", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("DisciplineId")
.HasColumnType("integer");
b.Property<int>("ReportTypeId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("DisciplineId");
b.HasIndex("ReportTypeId");
b.ToTable("ReportTypeDisciplines");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Statement", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone");
b.Property<int?>("DisciplineId")
.HasColumnType("integer");
b.Property<int>("HoursCount")
.HasColumnType("integer");
b.Property<int?>("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("DisciplineId");
b.HasIndex("UserId");
b.ToTable("Statements");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StatementStudent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("StatementId")
.HasColumnType("integer");
b.Property<int>("StudentId")
.HasColumnType("integer");
b.Property<int>("StudentTypeId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("StatementId");
b.HasIndex("StudentId");
b.ToTable("StatementStudents");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Student", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RecordCardNumber")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Students");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StudentExaminationResult", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ExaminationResultId")
.HasColumnType("integer");
b.Property<int>("StudentId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ExaminationResultId");
b.HasIndex("StudentId");
b.ToTable("StudentExaminationResults");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Login")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("text");
b.Property<string>("PhoneNumber")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Position")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Surname")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Users");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.UserStudent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("StudentId")
.HasColumnType("integer");
b.Property<int>("StudentTypeId")
.HasColumnType("integer");
b.Property<int>("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("StudentId");
b.HasIndex("UserId");
b.ToTable("UserStudents");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Activity", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.ExaminationResult", null)
.WithMany("Activities")
.HasForeignKey("ExaminationResultId");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ExaminationResult", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Statement", null)
.WithMany("ExaminationResults")
.HasForeignKey("StatementId");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeActivity", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Activity", "Activity")
.WithMany("ReportTypeActivities")
.HasForeignKey("ActivityId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.ReportType", "ReportType")
.WithMany("ReportTypeActivities")
.HasForeignKey("ReportTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Activity");
b.Navigation("ReportType");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportTypeDiscipline", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Discipline", "Discipline")
.WithMany("ReportTypeDisciplines")
.HasForeignKey("DisciplineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.ReportType", "ReportType")
.WithMany("ReportTypeDisciplines")
.HasForeignKey("ReportTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Discipline");
b.Navigation("ReportType");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Statement", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Discipline", null)
.WithMany("Statements")
.HasForeignKey("DisciplineId");
b.HasOne("UniversityDatabaseImplement.Models.User", null)
.WithMany("Statements")
.HasForeignKey("UserId");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StatementStudent", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Statement", "Statement")
.WithMany("StatementStudents")
.HasForeignKey("StatementId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.Student", "Student")
.WithMany("StatementStudents")
.HasForeignKey("StudentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Statement");
b.Navigation("Student");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.StudentExaminationResult", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.ExaminationResult", "ExaminationResult")
.WithMany("StudentExaminationResults")
.HasForeignKey("ExaminationResultId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.Student", "Student")
.WithMany("StudentExaminationResults")
.HasForeignKey("StudentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("ExaminationResult");
b.Navigation("Student");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.UserStudent", b =>
{
b.HasOne("UniversityDatabaseImplement.Models.Student", "Student")
.WithMany("StudentUsers")
.HasForeignKey("StudentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UniversityDatabaseImplement.Models.User", "User")
.WithMany("StudentUsers")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Student");
b.Navigation("User");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Activity", b =>
{
b.Navigation("ReportTypeActivities");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Discipline", b =>
{
b.Navigation("ReportTypeDisciplines");
b.Navigation("Statements");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ExaminationResult", b =>
{
b.Navigation("Activities");
b.Navigation("StudentExaminationResults");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.ReportType", b =>
{
b.Navigation("ReportTypeActivities");
b.Navigation("ReportTypeDisciplines");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Statement", b =>
{
b.Navigation("ExaminationResults");
b.Navigation("StatementStudents");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.Student", b =>
{
b.Navigation("StatementStudents");
b.Navigation("StudentExaminationResults");
b.Navigation("StudentUsers");
});
modelBuilder.Entity("UniversityDatabaseImplement.Models.User", b =>
{
b.Navigation("Statements");
b.Navigation("StudentUsers");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -10,13 +10,28 @@ namespace UniversityDatabaseImplement.Models
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Name { get; set; } = string.Empty;
[Required]
public string Department { get; set; }
public string Department { get; set; } = string.Empty;
[ForeignKey("DisciplineId")]
public virtual List<Statement> Statements { get; set; } = new();
[ForeignKey("DisciplineId")]
public virtual List<ReportTypeDiscipline> ReportTypeDisciplines { get; set; } = new();
private Dictionary<int, IStatementModel>? _disciplineStatements;
[NotMapped]
public Dictionary<int, IStatementModel> DisciplineStatements
{
get
{
if (_disciplineStatements == null)
{
_disciplineStatements = Statements.ToDictionary(
x => x.Id, x => x as IStatementModel);
}
return _disciplineStatements;
}
}
public static Discipline Create(DisciplineBindingModel model)
{

View File

@ -10,7 +10,7 @@ namespace UniversityDatabaseImplement.Models
public class ExaminationResult : IExaminationResultModel
{
public int Id { get; set; }
public string ExaminationForm { get; set; }
public string ExaminationForm { get; set; } = string.Empty;
[Required]
public MarkType Mark { get; set; }
[Required]
@ -19,6 +19,22 @@ namespace UniversityDatabaseImplement.Models
public virtual List<Activity> Activities { get; set; } = new();
[ForeignKey("ExaminationResultId")]
public virtual List<StudentExaminationResult> StudentExaminationResults { get; set; } = new();
private Dictionary<int, IStudentModel>? _students;
[NotMapped]
public Dictionary<int, IStudentModel> Students
{
get
{
if (_students == null)
{
_students = StudentExaminationResults.ToDictionary(
x => x.Student.Id, x => x.Student as IStudentModel);
}
return _students;
}
}
public static ExaminationResult Create(ExaminationResultBindingModel model)
{
return new ExaminationResult

View File

@ -10,7 +10,7 @@ namespace UniversityDatabaseImplement.Models
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Name { get; set; } = string.Empty;
[ForeignKey("ReportTypeId")]
public virtual List<ReportTypeActivity> ReportTypeActivities { get; set; } = new();
[ForeignKey("ReportTypeId")]

View File

@ -39,7 +39,8 @@ namespace UniversityDatabaseImplement.Models
{
Id = Id,
Date = Date,
HoursCount = HoursCount
HoursCount = HoursCount,
};
}
}

View File

@ -10,13 +10,31 @@ namespace UniversityDatabaseImplement.Models
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Name { get; set; } = string.Empty;
[Required]
public string RecordCardNumber { get; set; }
public string RecordCardNumber { get; set; } = string.Empty;
[ForeignKey("StudentId")]
public virtual List<StatementStudent> StatementStudents { get; set; } = new();
[ForeignKey("StudentId")]
public virtual List<StudentExaminationResult> StudentExaminationResults { get; set; } = new();
[ForeignKey("StudentId")]
public virtual List<UserStudent> StudentUsers { get; set; } = new();
private Dictionary<int, IStatementModel>? _statements;
[NotMapped]
public Dictionary<int, IStatementModel> Statements
{
get
{
if (_statements == null)
{
_statements = StatementStudents.ToDictionary(
x => x.Statement.Id, x => x.Statement as IStatementModel);
}
return _statements;
}
}
public static Student Create(StudentBindingModel model)
{
return new Student
@ -39,7 +57,9 @@ namespace UniversityDatabaseImplement.Models
{
Id = Id,
Name = Name,
RecordCardNumber = RecordCardNumber
RecordCardNumber = RecordCardNumber,
Statements = Statements
};
}
}

View File

@ -0,0 +1,66 @@
using UniversityContracts.BindingModels;
using UniversityContracts.ViewModels;
using UniversityDataModels.Models;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace UniversityDatabaseImplement.Models
{
public class User : IUserModel
{
public int Id { get; set; }
[Required]
public string Name { get; set; } = string.Empty;
[Required]
public string Surname { get; set; } = string.Empty;
[Required]
public string PhoneNumber { get; set; } = string.Empty;
[Required]
public string Position { get; set; } = string.Empty;
[Required]
public string Login { get; set; } = string.Empty;
[Required]
public string Password { get; set; } = string.Empty;
[ForeignKey("UserId")]
public virtual List<UserStudent> StudentUsers { get; set; } = new();
[ForeignKey("UserId")]
public virtual List<Statement> Statements { get; set; } = new();
public static User Create(UserBindingModel model)
{
return new User
{
Id = model.Id,
Name = model.Name,
Surname = model.Surname,
PhoneNumber = model.PhoneNumber,
Position = model.Position,
Login = model.Login,
Password = model.Password
};
}
public void Update(UserBindingModel model)
{
if (model == null) return;
Id = model.Id;
Name = model.Name;
Surname = model.Surname;
PhoneNumber = model.PhoneNumber;
Position = model.Position;
Login = model.Login;
Password = model.Password;
}
public UserViewModel GetViewModel => new()
{
Id = Id,
Name = Name,
Surname = Surname,
PhoneNumber = PhoneNumber,
Position = Position,
Login = Login,
Password = Password
};
}
}

View File

@ -0,0 +1,15 @@
using System.ComponentModel.DataAnnotations;
namespace UniversityDatabaseImplement.Models
{
public class UserStudent
{
public int Id { get; set; }
[Required]
public int StudentTypeId { get; set; }
[Required]
public int UserId { get; set; }
public virtual Student Student { get; set; } = new();
public virtual User User { get; set; } = new();
}
}

View File

@ -23,5 +23,7 @@ namespace UniversityDatabaseImplement
public virtual DbSet<StatementStudent> StatementStudents { set; get; }
public virtual DbSet<Student> Students { set; get; }
public virtual DbSet<StudentExaminationResult> StudentExaminationResults { set; get; }
public virtual DbSet<User> Users { set; get; }
public virtual DbSet<UserStudent> UserStudents { set; get; }
}
}

View File

@ -8,4 +8,15 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DatabaseImplement\UniversityDatabaseImplement.csproj" />
</ItemGroup>
</Project>